SpringBoot整合MyBatis完成CRUD和分页
为什么要整合MyBatis?
对比于JPA和Hibernate更加简单易用,从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要对数据库进行完整性控制的话建议使用Hibernate;如果要灵活使用sql语句的话建议采用MyBatis框架。 ——(摘录于博客园)
添加依赖
为了完成CRUD和分页,只需要添加mybatis,mapper和pagehelper的依赖。
完成application.properties的配置
1 | #mybatis配置 |
使用generatorConfig(xml文件放在src/main/resources目录下)生成mapper以及pojo
1 | generatorConfig.xml文件配置: |
然后在GeneratorDisplay中加上: File configFile = new File(“generatorConfig.xml”);
run项目之后刷新就会出现SysUser.java,SysUserMapper.java和SysUserMapper.xml等文件。
CRUD的实现
配置
在ImoocApplication.java文件中添加注解
1
2
3
4//扫描mybatis mapper包路径
@MapperScan(basePackage="com.imooc.mapper")
//扫描所有需要的包,包含一些自用的工具类的包所在的路径,可选择使用
@ComponentScan(basePackage={"com.imooc","org.n3r.idworker"})实现
书写UserService接口和UserServiceImp接口实现类,主要还是以下三个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22userMapper.insert(user)
userMapper.findUserByName(name)
userMapper.updateByPrimarykeySelective(user)
userMapper.deleteByPrimarykey(userId)
(
UserMapper.xml中都有相应的语句,如:
<select id="findUserByName" resultMap="result">
SELECT * FROM user where name=#{name}
</select>
)
模糊查询如下:
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if(!StringUtils.isEmptyOrWhitespace(user.getNickname())){
criteria.andLike("nickname","%"+user.getNickname()+"%");
}
example.orderBy("registTime").desc(); //排序
List<SysUser> userList = userMapper.se;ectByExample(example);
return userList;
注:Mapper可以自定义,更改查询语句的查询条件方法
分页
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 ...
}