前言
本文只做MyBatis-Plus简单使用总结,想进行高阶学习的小伙伴,建议直接官网学习。MyBaits-Plus官网。个人也做了将项目从MyBatis升级为MyBatis-Plus的工作,可以说不需要进行任何改动,目前还没有发现任何问题,大家可以放心食用。
一、MyBatis-Plus是什么?
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
二、使用步骤
1.引入库
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
2.增加配置
mybatis-plus:
mapper-locations: classpath:mapper/**/*.xml
type-aliases-package: cn.biosan.cloud.servicehealthadmin.dao
3.启动类增加包扫描
4.构建Service
package cn.biosan.cloud.servicehealthadmin.service.demo;
import cn.biosan.cloud.servicehealthadmin.entity.SysValue;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* All rights Reserved, Designed By www.biosan.cn
*
* @Description:
* @author: 牛二强
* @date: 2021/1/29 14:13
*/
public interface DemoService extends IService<SysValue> {
}
5.构建ServiceImpl
package cn.biosan.cloud.servicehealthadmin.service.demo.impl;
import cn.biosan.cloud.servicehealthadmin.dao.DemoMapper;
import cn.biosan.cloud.servicehealthadmin.entity.SysValue;
import cn.biosan.cloud.servicehealthadmin.service.demo.DemoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* All rights Reserved, Designed By www.biosan.cn
* * @Description:
* @author: 牛二强
* @date: 2021/1/29 14:14
*/
@Service
public class DemoServiceImpl extends ServiceImpl<DemoMapper, SysValue> implements DemoService {
}
6.功能测试
- 注入Service
@Autowired
private DemoService demoService;
- 使用通用IService提供的方法
@Test
public void plusTest1(){
QueryWrapper query = new QueryWrapper();
query.eq("VALUE","AKIDwmRl18QdAWgolWwty3IPNBtTu9UDpKem");
SysValue sysValue = demoService.getOne(query);
System.out.println(JSON.toJSONString(sysValue));
}
7.分页的使用
-
使用自带的IPage
增加配置类
package cn.biosan.cloud.servicehealthadmin.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* All rights Reserved, Designed By www.biosan.cn
*
* @Description:
* @author: 牛二强
* @date: 2021/1/28 14:55
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize());
return paginationInterceptor;
}
}
demo测试
@Test
public void testIPage(){
IPage<SysValue> page = new Page<SysValue>(1,1);
QueryWrapper query = new QueryWrapper<>();
query.eq("VALUE", "11592158");
IPage iPage = demoService.page(page, query);
System.out.println(JSON.toJSONString(iPage));
//页数
System.out.println("页数 :" + iPage.getCurrent());
//分页大小
System.out.println("分页大小 :" + iPage.getSize());
//总条数
System.out.println("总条数 :" + iPage.getTotal());
//获取结果
System.out.println(JSON.toJSONString(iPage.getRecords()));
}
- 使用插件PageHelper
引入依赖
<!--pageHelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
增加配置
pagehelper:
auto-dialect: mysql
reasonable: true
support-methods-arguments: true
page-size-zero: true
params: count=countSql
demo测试
@Test
public void testPageHelper(){
PageHelper.startPage(1,1);
QueryWrapper query = new QueryWrapper<>();
query.eq("VALUE", "11592158");
List<SysValue> list = demoService.list(query);
System.out.println(JSON.toJSONString(list));
PageInfo<SysValue> info = new PageInfo<>(list);
//页数
System.out.println("页数 :" + info.getPageNum());
//分页大小
System.out.println("分页大小 :" + info.getPageSize());
//总条数
System.out.println("总条数 :" + info.getTotal());
//总页数
System.out.println("总页数 :" + info.getPages());
//获取结果
System.out.println(JSON.toJSONString(info.getList()));
}
据个人目前了解,mybatis-plus自带的IPage不能直接获取到总页数,但是这个值对于我们页面显示其实也是不可缺少的。对于这个问题PageHelper就直接帮我们处理好了,而且根据个人使用体验PageHelper也更加方便,因此比较推荐使用。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Mybatis-Plus的使用,而Mybatis-Plus提供了大量能使我们快速便捷地处理数据的函数和方法。如有兴趣,可以自行到官网学习。