Springboot 整合mybatis(无需配置任何xml文件)
环境
- spring-boot 2.0.
- maven 3.5.3
- JDK 1.8
- mybatis-spring-boot-starter 1.3.2
背景
百度上看到非常多springboot整合mybatis的教程还在用spring那一套,各种xml文件配置,非常的繁琐,实际上mybatis已经为springboot给出了支持——mybatis-spring-boot-starter。
在 /mybatis/spring-boot-starter/wiki/Quick-Start 也有官方的快速搭建教程,不过讲得不太清楚所以我再仔细介绍一下。
使用流程
- 依赖引入
- 配置文件配置
- 创建实体类
- 创建相应Mapper接口
- 直接调用即可
1、maven引入
pom引入如下(版本可自行去上面的网址找最新的)
<dependency>
<groupId></groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
2、配置文件配置
因为省去了mybatis的xml配置文件,所以mybatis的相关配置就需要写到(或者.properties,我用的yml格式)文件中去,如下所示:
mybatis:
configuration:
cache-enabled: false
map-underscore-to-camel-case: true
use-generated-keys: true
default-executor-type: reuse
default-statement-timeout: 600
其配置很多,这儿没有一 一列举,有兴趣可以在官网查阅,只要是能写在xml文件里的配置都可以在这儿直接配了。
3、创建实体类
以User为例
public class User {
private Long id;
private String name;
private String phone;
}
mybatis查完数据库后会自动把数据填进去,所以注意属性名一定要和表中的列名在命名规则下一致(如果没有配置数据库驼峰命名法就是实体中的大写对应数据库的_和小写。如实体中的userName就对应数据库中user_name。所以推荐配置命名规则为驼峰命名法,即配置文件中use-generated-keys: true,这样实体中的userName就对应数据库中userName)
4、创建相应的mapper接口
这个mapper接口就取代了*等的作用,一个接口就都搞定了,示例如下:
@Mapper
@Component
public interface UserMapper {
@Select("select * from user")
List<User> getAllUsers();
}
首先需要在类前加上@Mapper的注解,这样才能够标记这个接口被mybatis所查找到,如果嫌每个类都注解很麻烦也可以直接在中注解mapper扫描目录如@MapperScan(“”)。
然后再直接写相应的方法并在方法上面标注mybatis动作即可,这儿不做过多的赘述
最后要提一下的就是@Component,因为在IDEA中有bean检测,所以为了防止它提示 Could not autowire. No beans of ‘UserDao’ type found. Checks autowiring problems in a bean class. 加一个@Component注解,实际上即使不加也不影响使用。
5、开始调用
调用就没什么好说的了,
@Autowired
private UserMapper userMapper;
@Autowired注入进来该在哪儿用就直接在哪儿用就好了。