介绍
Spring Boot集成MyBatis,有两种方式:注解方式以及XML方式。需要添加mybatis-spring-boot-starter依赖跟mysql依赖:
1 | <dependency> |
MyBatis-Spring-Boot-Starter依赖将会提供如下:
- 自动检测现有的DataSource;
- 将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递;
- 将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例;
- 自动扫描mappers,链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到bean中。
就是说,使用了该Starter之后,只需要定义一个DataSource即可。
默认数据源
Spring Boot默认使用tomcat-jdbc数据源,在src/main/resources/application.properties
中配置数据源信息:
1 | spring.datasource.url = jdbc:mysql://localhost:3306/dodd?useUnicode=true&characterEncoding=utf-8 |
注:这里有一个坑是数据源配置信息是以spring
开头的,不是以jdbc
。
自定义数据源
比如这里使用了阿里巴巴的数据池管理,除了在application.properties
配置数据源之外,还应该额外添加以下依赖:
1 | <dependency> |
修改Application.java
1 |
|
Spring Boot会智能地选择我们自己配置的这个DataSource实例。
MyBatis集成:注解方式
Mybatis注解的方式很简单,只要定义一个接口,然后sql语句通过注解写在接口方法上。最后给这个接口添加@Mapper
注解或者在启动类上添加@MapperScan(“com.dodd.mapper”)
注解都行。
1 |
|
需要注意的是,简单的语句只需要使用@Insert
、@Update
、@Delete
、@Select
这4个注解即可,但是有些复杂点需要动态SQL语句,就比如上面方法中根据查询条件是否有值来动态添加sql的,就需要使用@InsertProvider
、@UpdateProvider
、@DeleteProvider
、@SelectProvider
等注解。
MyBatis集成:XML方式
xml配置方式保持映射文件的老传统,优化主要体现在不需要实现接口的实现层,系统会自动根据方法名在映射文件中找对应的sql,具体操作如下:
接口定义:可以使用@Mapper
或者@Repository
1 | //声明为数据源接口 |
修改application.properties 配置文件:
1 | #指定bean所在包 |
在src/main/resources目录下新建一个mapper目录,在mapper目录下新建RouteMapper.xml文件。
也可以不修改application.properties 配置文件,在src/main/resources目录下新建与mapper接口同名的目录文件夹,下面定义RouteMapper.xml文件,例如:
通过mapper标签中的namespace属性指定对应的dao映射,这里指向RouteMapper:
1 | <?xml version="1.0" encoding="UTF-8"?> |
分页插件
pom.xml中添加依赖:
1 | <dependency> |
然后你只需在查询list之前使用PageHelper.startPage(int pageNum, int pageSize)方法即可。pageNum是第几页,pageSize是每页多少条:
1 |
|
分页还有一种实现方式是前端需要传pageNum和pageSize,查询时用limit做限制。