一、初识 Mybatis plus常用注解
@TableName 用于定义表名
@TableId 用于定义表的主键
属性
value 用于定义主键字段名
type 用于定义主键类型(主键策略 IdType)
主键策略
IdType.AUTO 主键自增,系统分配,不需要手动输入
IdType.NONE 未设置主键
IdType.INPUT 需要自己输入 主键值
IdType.ASSIGN_ID 系统分配 ID,用于数值型数据(Long,对应 mysql 中 BIGINT 类型)
IdType.ASSIGN_UUID 系统分配 UUID,用于字符串型数据(String,对应 mysql 中 varchar(32) 类型)
@TableField 用于定义表的非主键字段
属性
value 用于定义非主键字段名,用于别名匹配,假如java对象属性和数据库属性不一样
exist 用于指明是否为数据表的字段, true 表示是,false 为不是,假如某个java属性在数据库没对应的字段则要标记为faslse
fill 用于指定字段填充策略(FieldFill,用的不多)
字段填充策略:一般用于填充 创建时间、修改时间等字段
FieldFill.DEFAULT 默认不填充
FieldFill.INSERT 插入时填充
FieldFill.UPDATE 更新时填充
FieldFill.INSERT_UPDATE 插入、更新时填充。
测试:
如果没有这个字段,测试时发生异常:
解决:
二、案例实战 Mybatis Plus CRUD测试用例编写
删除
- 根据id删除
2.条件删除
更新
- queryWrapper更新操作
2.updateWrapper更新操作
核心查询条件类QueryWrapper的比较API讲解
QueryWrapper介绍
可以封装sql对象,包括where条件,order by排序,select哪些字段等等
查询包装类,可以封装多数查询条件,泛型指定返回的实体类
List<BannerDO> list = bannerMapper.selectList(new QueryWrapper<BannerDO>());
核心API
eq 等于
ne 不等于
gt 大于
ge 大于等于
lt 小于
le 小于等于
or 拼接or
between 两个值中间
notBetween 不在两个值中间
QueryWrapper的模糊查询和其他API讲解
QueryWrapper介绍(基于上集)
可以封装sql对象,包括where条件,order by排序,select哪些字段等等
查询包装类,可以封装多数查询条件,泛型指定返回的实体类
List<BannerDO> list = bannerMapper.selectList(new QueryWrapper<BannerDO>());
核心API
like 模糊匹配
notLike 不像
likeLeft 左匹配
likeRight 右边匹配
isNull 字段为空
in in查询
groupBy 分组
orderByAsc 升序
orderByDesc 降序
having having查询
分组和排序
三、MybatisPlus插件配置案例实战之分页插件
- 项目配置分页
package net.hlx.shop0907.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @ClassName: MybatisPlusPageConfig
* @Description: TODO
* @Author: HLX
* @date: 2021/9/8 15:41
* @Version: V1.0
*/
@Configuration //spring注解配置扫描
public class MybatisPlusPageConfig {
/**
* 旧版配置,已过期了!
* @return
*/
// @Bean
// public PaginationInterceptor paginationInterceptor(){
// return new PaginationInterceptor();
// }
/**
* 新版配置,分页插件
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//拦截器对象
MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
//添加拦截器(数据库MYSQL)
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
2.测试分页
/**
* 查询分页
*/
@Test
public void testPage(){
//查询条件
// QueryWrapper queryWrapper= new QueryWrapper();
// queryWrapper.like("url","http");
//第一个参数:第几页,第二个参数:每页显示的条数
Page<BannerDO> page=new Page<>(3,2);
//调用分页方法
IPage<BannerDO> ipage=baseMapper.selectPage(page,null);
log.info("总页数:{}",ipage.getPages());
log.info("总条数:{}",ipage.getTotal());
log.info("当前第{}页", ipage.getCurrent());
log.info("数据:{}", ipage.getRecords());
}