
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs映射成数据库中的记录。
使用MyBatis的时候需要自己手动编写SQL语句,也有代码自动生成工具来简化开发,我一般会使用Mybatis-Plus增强工具包来简化MyBatis的开发。
Mybatis-Plus官网:https://github.com/baomidou/mybatis-plus
同时它还提供了与SpringBoot的集成starter,非常的方便,本篇我将讲解如何在SpringBoot中集成MyBatis-Plus。
maven依赖
1 | <properties> |
这里我使用mysql数据库,阿里的druid连接池。
初始化表
关于mysql数据库的安装我这里就不讲了,只提供schema.sql文件初始化一个用户表,用作演示:
1 | CREATE DATABASE IF NOT EXISTS pos default charset utf8 COLLATE utf8_general_ci; |
配置文件
修改application.yml配置文件,注意是mysql连接信息和mybatis-plus的配置:
1 | ################### mybatis-plus配置 ################### |
主要解释两个配置:
mapper-locations 这个是你定义的mapping文件,支持通配符,如果有多个用逗号隔开。
typeAliasesPackage 这个定义实体类所在的包名,或者其他能使用别名的类所在的包。
配置类
由于使用到的Druid连接池的配置项非常多,可先定义一个DruidProperties
属性类,具体的数据源配置我就不贴了。然后再定义MybatisPlusConfig
如下:
1 | @Configuration |
这里要说明一下:
@EnableTransactionManagement开启了事务支持。
@MapperScan注解扫描DAO类,支持多个包,用逗号隔开。
然后在里面定义了一个数据源的类,另外还定义了分页插件,这个用在分页查询上面,本篇演示还用不到。
实体类
1 | @TableName(value = "t_user") |
DAO类
接下来定义DAO操作类:
1 | public interface UserMapper extends BaseMapper<User> { |
这个接口继承 BaseMapper<User>
后即可获得常用的增删改查的方法, 如果有其他复杂的操作,就再定义自己的方法,并同时定义mapping文件即可。
这里演示比较简单,无需自己再去写mapping文件。
业务逻辑Servcie
接下来定义业务逻辑处理类,并将DAO类注入进去:
1 | @Service |
测试类
一切搞定后,接下来开始编写测试用例试试看:
1 | /** |
先创建一个用户,插入到表中,使用了数据库的自增主键,调用insertUser
成功后,user的id会被自动设置上。然后再通过id查询用户,确保能查询到。后面更新用户并确认,删除用户并确认。
运行测试用例,结果是green bar,测试通过。
GitHub源码
https://github.com/yidao620c/SpringBootBucket/tree/master/springboot-mybatis




