Mybatis plus 高级

本文详细介绍了MybatisPlus在项目中的应用,包括如何利用主键策略自动处理ID生成,通过全局配置简化表名映射及字段匹配过程,以及如何利用BaseMapper提供的通用CRUD方法快速实现数据操作。同时,深入探讨了EntityWrapper条件构造器的强大功能,帮助开发者更高效地完成SQL拼接、排序和实体参数查询等任务。
摘要由CSDN通过智能技术生成

Mybatis plus 高级

最近项目重构 dao层使用的Mybatis plus,有必要总结下。

Mybatis plus 会自动维护Mybatis 以及 MyBatis-Spring 相关依赖  所以在构建项目时候 只需要引入Mybatis plus 的maven坐标就OK了

 

Mybatis plus的核心在BaseMapper<T>

包含了各种各样的 接口方法

所以我们继承后就可以拿来使用了!

Q1:

  在插入时候 bean(包含ID) 需要 使用主键策略    (数据库ID自增)

  使用注解@Table 

   在Bean上面加上注解 @TableId(value="id", type=IdType.AUTO)

   可以配置全局策略 就不用每个表都写这个注解了! 处理下划线到驼峰命名的问题

Q2:

 MP会默认使用实体类的类名到数据库中找对应的表

 使用注解@TableName(value=“tx_user“)解决

 可以配置全局策略 加个统一的前缀,就不用每个表都写这个注解了! 前缀+实体类  是table name

 

Q3:

 Mybatis plus全局策略配置

 xx.xx.xx.GlobalConfiguration

   默认是true  解析驼峰命名 到 下划线对应

   

Q4:

 @TableField(value="last_name")  对应数据库的名字

 @TableField(exist=false)   这个字段数据库没有哦  插入时候不会报错(用的比较少)

 

Q5:

 在插入一条数据时候,获取主键值

 自动的回写到实体类Bean中 不需要额外的操作

  

Q6:

  插入时候

   方法 insert()  只有非空的才会出现在sql语句日志中

           insertAllColumn() 插入所有字段  空的也是显示的  日志打印会出来这几个字段  但是是null 结果也是一样的   返回Integer

 

Q7:

   updateById()   通用更新操作  返回Integer

   updateAllColumnByID  会插入null

Q8:

   selectById()

   selectOne( entity )  通过多个列进行查询  非空属性作为条件进行查询了  要返回一条数据 要不就报错了

    List<T> selectBatchIds(List<? extends Serializable> idList)   //通过多个Id进行查询

   LIst<T> selectByMap<columnMap>  // key 是列名"school_name" 

   List<T> selectPage(RowBounds rowBounds, Warpper<T> wrapper); //分页查询  Page的对象继承了rowBounds   底层没有使用limit  使用的Mybatis的  内存的分页方式  参数 第几页  每页显示多少条数据

      Mybatis有个PageHelper    Mybatis Plus 有自己的分页插件 

  

补充 selectList

        selectOne

        selectById

        selectAll

        selectCount

 

Q9:  (remove)

  Integer deleteById(Serializable id)

  Integer deleteByMap(@Param("crm") Map<String, Object> columnMap)    key一定要写数据库的列名

  Integer deleteBatchIds(LIst<? extends Serializable> iDList)    //批量删除  底层sql 使用的in

  

以上是常用的CRUD

 

原理分析


 

 

  BaseMapper 中提供了通用的CRUD方法

 

 

补充功能强大的条件构造器 EntityWrapper


 

 

 实体包装器,主要用于处理SQL拼接,排序,实体参数查询等。

 

 

条件参数说明

查询方式说明
setSqlSelect设置 SELECT 查询字段
whereWHERE 语句,拼接 + WHERE 条件
andAND 语句,拼接 + AND 字段=值
andNewAND 语句,拼接 + AND (字段=值)
orOR 语句,拼接 + OR 字段=值
orNewOR 语句,拼接 + OR (字段=值)
eq等于=
allEq基于 map 内容等于=
ne不等于<>
gt大于>
ge大于等于>=
lt小于<
le小于等于<=
like模糊查询 LIKE
notLike模糊查询 NOT LIKE
inIN 查询
notInNOT IN 查询
isNullNULL 值查询
isNotNullIS NOT NULL
groupBy分组 GROUP BY
havingHAVING 关键词
orderBy排序 ORDER BY
orderAscASC 排序 ORDER BY
orderDescDESC 排序 ORDER BY
existsEXISTS 条件语句
notExistsNOT EXISTS 条件语句
betweenBETWEEN 条件语句
notBetweenNOT BETWEEN 条件语句
addFilter自由拼接 SQL
last拼接在最后,例如:last("LIMIT 1")

 

 

  范围:

 .between("age",2,6);

 .like("name","jack")

 .or()  //或者使用orNew()  orNew() 之前的结果封装 与后面的进行拼接

.like("email","a")  //或者邮箱有a 的

 

  修改操作:

 userEntity 属性是要修改的值

Wrapper是条件 不停的.eq (就是where了)

  .update(UserEntity, Wrapper  )

 

  删除操作

  .update()

  封装一个添加构造器就OK了 .eq() .eq()

 

高级点的查询

 排序的:

  .orderBy()  默认升序

  .orderDesc() 降序   传入的是集合!

  .last( “desc”)   手动把SQL拼接到最后(有sql注入的风险) 

  .last("limit 1,3")

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值