Mybatis-plus 使用备忘
2021-07-26 本文已影响0人
KenChen_939
MyBatis Plus是一个MyBatis的增强器。在MyBatis的基础上只做增强不做改变。
依赖:
<!-- 持久层:mybatis plus,mysql-->
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
关于CRUD
正常写pojo类,但是mapper只需要继承BaseMapper即可
此时既可调用mapper的CRUD方法。但是MyBatis Plus的功能远不止与此。
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@Autowired
private UserMapper userMapper;
/**
* 查询全部
*/
@Test
public void selectAll(){
System.out.println("--------SelectAll method test-------");
List<User> userList = userMapper.selectList(null);
userList.forEach(System.out::println);
}
/**
* 根据ID查询
*/
@Test
public void selectById(){
System.out.println("--------SelectById method test-------");
User user = userMapper.selectById(1);
System.out.println(user.toString());
}
/**
* 批量删除
*/
@Test
public void deleteByIds(){
System.out.println("--------DeleteByIds method test-------");
List<Integer> list = new ArrayList<>();
for (int i = 0; i <3 ; i++) {
list.add(i);
}
userMapper.deleteBatchIds(list);
}
条件构造器 Wrapper
对于需要进行条件筛选的SQL来说,就需要用到条件构造器,它可以生成轻度复杂的sql语句。
image.png
//selectList
@Test
public void QueryWrapperTest(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age",20); //查询所有年龄小于20的user。
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
//selectPage
/**
* 分页查询
*/
@Test
public void selectPage(){
Page<User> page = new Page<>(1, 3);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
Page<User> userIPage = userMapper.selectPage(page, queryWrapper);
System.out.println(userIPage.toString());
System.out.println("总条数"+userIPage.getTotal());
System.out.println(userIPage.getRecords());
}
}
关于分页
//分页查询插件,需添加config
@EnableTransactionManagement
@Configuration
@MapperScan("cn.lnfvc.ken.demo.mapper")// 这里配置自己项目的dao层目录
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(true));
return paginationInterceptor;
}
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
日志打印
如果要看执行的sql语句,可以在yml中添加配置信息.在执行时就会打印出来。
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl