MybaitsPlus常用注解
@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
:插⼊、更新时填充
QueryWrapper类
可以封装sql对象,包括where条件,order by排序,select哪些字段等等
查询包装类,可以封装多数查询条件,泛型指定返回的实体类
核心API
eq
:等于
ne
:不等于
gt
:大于
ge
:⼤于等于
lt
:小于
le
:小于等于
or
:拼接or
between
:两个值中间
notBetween
:不在两个值中间
like
:模糊匹配
notLike
:不像
likeLeft
:左匹配
likeRight
:右边匹配
isNull
:字段为空
in
:in查询
groupBy
:分组
orderByAsc
:升序
orderByDesc
:降序
having
:having查询
部分API案例
public void testQueryWrapper1(){
//SELECT id,img,url,weight AS weightAAA FROM banner WHERE (id = ? OR url <> ?)
QueryWrapper queryWrapper = new QueryWrapper<BannerDO>().eq("id",1).or().ne("url","bbbc.com");
bannerMapper.selectList(queryWrapper);
}
public void testQueryWrapper2(){
QueryWrapper queryWrapper = new QueryWrapper();
// queryWrapper.like("url","bbb");
// queryWrapper.notLike("img","cccc");
//SELECT id,img,url,weight AS weightAAA FROM banner WHERE (url LIKE ? AND img NOT LIKE ?)
// queryWrapper.likeLeft("url","bbb");
// queryWrapper.likeRight("img","cccc");
//SELECT id,img,url,weight AS weightAAA FROM banner WHERE (url LIKE ? AND img LIKE ?)
//==> Parameters: %bbb(String), cccc%(String)
queryWrapper.isNull("img");
queryWrapper.in("url",Arrays.asList("aaaa","bbbb"));
queryWrapper.orderByDesc("id");
//SELECT id,img,url,weight AS weightAAA FROM banner WHERE (img IS NULL AND url IN (?,?)) ORDER BY id DESC
bannerMapper.selectList(queryWrapper);
}
分页
分页插件配置
配置类
@Configuration
public class MybatisPlusPageConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
运行测试
public void testPage(){
//QueryWrapper<BannerDO> queryWrapper = new QueryWrapper();
//queryWrapper.eq("weight",4);
//第一页,每页3条, 如果是第一页则直接一个问号,获取条数
Page<BannerDO> page = new Page<>(1,4);
IPage<BannerDO> iPage = bannerMapper.selectPage(page,null);
log.info("总条数:{}",iPage.getTotal());
log.info("总页数:{}",iPage.getPages());
log.info("数据:{}",iPage.getRecords());
}