SpringBoot整合MyBatis
# SpringBoot整合MyBatis
# 1、新建一个SpringBoot项目
# 2、基本的配置设置
# 配置MyBatis第一种情况
步骤一:
对于整合mybatis框架,我们需要在SpringBoot
配置文件application.yaml
中对其进行配置:
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/joint_force?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 795200
mybatis:
#定义别名包
type-aliases-package: com.singerw.pojo
#添加xml文件的依赖
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射规则
configuration:
map-underscore-to-camel-case: true
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
定义别名包(
type-aliases-package
)将实体对象pojo路径进行了封装,若在mapper.xml文件中,resulrType不写包名,只写类名,就会自动执行别名包进行拼接;若写了包名+类名,就执行自己写好的;
第二项
mapper-locations
是总用的,配置mapper.xml映射文件的路径驼峰映射规则(
map-underscore-to-camel-case
)开启驼峰映射规则后,底层会根据切分将数据库用"_"连接的字段名切分组合成由java驼峰规则的命名; 目的:主要为了简化mybatis映射的过程; 规则:user_id-->去除下划线userid-->之后首字母大写userId-->之后属性名一致,就可以正常映射了 注意:如果开启了驼峰规则,必须要满足条件.
步骤二:
我们平常整合mybatis在业务中编写Dao层时,我们通常会在数据层的接口上添加@Mapper
注解,让其交由mybatis
管理,通过其方法映射的SQL语句来操作数据库;
@Mapper
public interface ArticleMapper {
List<Article> getArticleByID(Integer aID);
List<Article> getArticleList();
}
2
3
4
5
6
7
@mapper
或者@repository
注解在dao层的应用;@Mapper
是mybatis
自身带的注解; 使用@mapper
后,不需要在spring
配置中设置扫描地址,通过mapper.xml
里面的namespace
属性对应相关的mapper
类,spring
将动态的生成Bean
后注入到Service
层。@repository
则需要在Spring
中配置扫描包地址,然后生成dao
层的bean
,之后被注入到ServiceImpl
中。
也就是说,如果用了@repository
,我们的测试类上(程序启动入口)需要加入。
@SpringBootTest
@MapperScan("com.singerw.dao")
class ApplicationTests {
@Autowired
private ArticleDao articleDao;
@Test
void getArticleTest() {
List<Article> article = articleDao.getArticleByID(1);
System.out.println(article);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
# 配置MyBatis第二种情况
也可以通过在启动类上添加@MapperScan(Mapper接口路径)
,利用包扫描形式为接口创建代理对象
@SpringBootApplication
@MapperScan("com.singerw.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2
3
4
5
6
7
8
需要注意的是:
在springboot
程序入口类处添加注解@MapperScan(“com.singerw.mapper或者dao”)
,如果程序入口类处没有添加注解@MapperScan
,每个dao
层接口要添加注解@Mapper
。
public interface ArticleDao {
List<Article> getArticleByID(Integer aID);
List<Article> getArticleList();
}
2
3
4
5
6
7
mybatis:
#定义别名包
type-aliases-package: com.singerw.pojo
#添加xml文件的依赖
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射规则
configuration:
map-underscore-to-camel-case: true
2
3
4
5
6
7
8
# application.yml文件示例
在SpringBoot配置文件application.yaml配置数据库连接,项目端口等信息
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/joint_force?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 795200
mybatis:
type-aliases-package: com.singerw.pojo
mapper-locations: classpath*:/mapping/*.xml
configuration:
map-underscore-to-camel-case: true
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# pom.xml文件示例
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis-spring的启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34