2020-03-19 15:56:02 卢浮宫 版权声明:本文为站长原创文章,转载请写明出处
前段时间项目中新增广告管理模块,由mybatis进阶成了mybatisPlus,这里简单记录下相关使用频率较高的方法。
在实体类中使用 @Data 来生成getter 和 setter 方法
使用@TableName("tableName") 来进行表名注解
使用@TableId主键策略 @TableId(value = "id", type = IdType.AUTO)
dao层接口继承 BaseMapp extends BaseMapper<T tntity>
service接口 继承IService extends IService<T entity>
service实现类继承 ServiceImpl extends ServiceImpl<T dao T entity>
PS:4、5、6的使用根据自己的具体情况而定
mybatis提供了两个接口和一个类来支持CRUD,常用的有Mapper CRUD 接口和Service CRUD 接口
①Service CRUD
说明:
get 查询单行
remove 删除
list 查询集合
page 分页
前缀命名方式区分 Mapper
层避免混淆,T
为任意实体对象IBaseService
继承 Mybatis-Plus
提供的基类Wrapper
为 条件构造器Mybatis-Plus
启动时自动解析实体表关系映射转换为 Mybatis
内部对象注入容器T
为任意实体对象Serializable
为任意类型主键 Mybatis-Plus
不推荐使用复合主键约定每一张表都有自己的唯一 id
主键Wrapper
为 条件构造器 ①BaseMapper 针对dao层的方法封装 CRUD
②IService<M,T> 针对业务逻辑层的封装 需要指定Dao层类和对应的实体类 是在BaseMapper基础上的加强
③方法策略不同:BaseMapper中的删除是delete,IService中的删除是remove...
④IService是对BaseMapper的拓展
点进去IService的源码可以看到其中是调用BserMapper来进行的操作。
/* 插入一条记录(选择字段,策略插入)*/
boolean save(T entity);
/* TableId 注解存在更新记录,否插入一条记录 */
boolean saveOrUpdate(T entity);
/* 批量修改插入 */
boolean saveOrUpdateBatch(Collection<T> entityList);
/* 根据 ID 删除 */
boolean removeById(Serializable id);
/* 根据 columnMap 条件,删除记录 */
boolean removeByMap(Map<String, Object> columnMap);
/* 删除(根据ID 批量删除)*/
boolean removeByIds(Collection<? extends Serializable> idList);
/* 根据 ID 选择修改 */
boolean updateById(T entity);
/* 根据ID 批量更新 */
boolean updateBatchById(Collection<T> entityList);
/* 根据 ID 查询 */
T getById(Serializable id);
/* 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1") */
T getOne(Wrapper<T> queryWrapper);
/* 查询全部记录 */
List<Object> listObjs();
/* 根据 Wrapper 条件,查询全部记录 */
List<Object> listObjs(Wrapper<T> queryWrapper);
eg: QueryWrapper<AdvertEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("state",1);
List<T entity> XXXEntityList = XXXService.list(queryWrapper);
/* 无条件翻页查询*/
IPage<T> page(IPage<T> page);
/* 翻页查询 */
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
/* 无条件翻页查询 */
IPage<Map<String, Object>> pageMaps(IPage<T> page);
/* 翻页查询 */
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
这里介绍下链式查询lambdaQuery和链式更新lambdaUpdate
List<AdvertEntity> advertEntityList = advertService.lambdaQuery().eq(AdvertEntity::getTitle,"养生").list();
System.out.println(advertEntityList);
AdvertEntity advertEntityTmp = new AdvertEntity();
advertEntityTmp.setTitle("lambda");
boolean updateRlt = advertService.lambdaUpdate().eq(AdvertEntity::getTitle,"养生").update(advertEntityTmp);
System.out.println(rlt);