再见二丁目

再见二丁目

Eyes on me - 하나가 되는 순간 전 세계가 주목합니다.

SpringBoot整合MyBatis完成CRUD和分页



为什么要整合MyBatis?

对比于JPA和Hibernate更加简单易用,从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要对数据库进行完整性控制的话建议使用Hibernate;如果要灵活使用sql语句的话建议采用MyBatis框架。 ——(摘录于博客园)

添加依赖

为了完成CRUD和分页,只需要添加mybatis,mapper和pagehelper的依赖。

完成application.properties的配置
1
2
3
4
5
6
7
8
9
10
11
12
#mybatis配置
mybatis.type-aliases-package=com.imooc.pojo
mabatis.mapper-locations=classpath:mapper/*.xml
#通用Mapper配置
mapper.mappers=com.imooc.utils.MyMapper
mapper.ono-empty=false
mapper.identity=MYSQL
#分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

使用generatorConfig(xml文件放在src/main/resources目录下)生成mapper以及pojo

1
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
generatorConfig.xml文件配置:
<generatorConfiguration>
<context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.imooc.utils.MyMapper"/>
</plugin>
<!-- 引入配置文件 -->
<properties resource="application.properties"/>
<!-- 数据库链接URL、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://Localhost:3306"
userId="root"
password="root">
</jdbcConnection>
<!--对于生成的pojo所在的包-->
<javaModelGenerator targetPackage="com.imooc.pojo"
targetProject="src/main/java"/>
<!-- 生成mapper.xml文件所在目录 -->
<sqlMapGenerator targetPackage="mapper"
targetProject="./src/main/resources"/>
<!-- 配置Mapper对应的java映射 -->
<javaClientGenerator targetPackage="com.imooc.mapper"
targetProject="src/main/java"
type="XMLMAPPER"/>
<table tableName="sys_user"></table>
</context>
</generatorConfiguration>

然后在GeneratorDisplay中加上: File configFile = new File(“generatorConfig.xml”);
run项目之后刷新就会出现SysUser.java,SysUserMapper.java和SysUserMapper.xml等文件。

CRUD的实现

分页

UserServiceImp中

1
2
3
4
5
@Override
public List<SysUser> queryUserListPaged(Integer page,Integer pageSize){
// 其余代码省略
pageHelper.startPage(page,pageSize); //开始分页
}

Controller中

1
2
3
4
5
6
7
8
9
10
@RequestMapping("/queryUserListPaged")
public IMoocJSONResult queryUserListPaged(Integer page){
if(page == null){
page = 1;
}
int pageSize = 10;
SysUser user = new SysUser();
List<SysUser> userList = userService.queryUserListPage(user,page,pageSize);
return ...
}