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:

  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 查询字段
where WHERE 语句,拼接 + WHERE 条件
and AND 语句,拼接 + AND 字段=值
andNew AND 语句,拼接 + AND (字段=值)
or OR 语句,拼接 + OR 字段=值
orNew OR 语句,拼接 + OR (字段=值)
eq 等于=
allEq 基于 map 内容等于=
ne 不等于<>
gt 大于>
ge 大于等于>=
lt 小于<
le 小于等于<=
like 模糊查询 LIKE
notLike 模糊查询 NOT LIKE
in IN 查询
notIn NOT IN 查询
isNull NULL 值查询
isNotNull IS NOT NULL
groupBy 分组 GROUP BY
having HAVING 关键词
orderBy 排序 ORDER BY
orderAsc ASC 排序 ORDER BY
orderDesc DESC 排序 ORDER BY
exists EXISTS 条件语句
notExists NOT EXISTS 条件语句
between BETWEEN 条件语句
notBetween NOT 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")

  

    

          

  

猜你喜欢

转载自www.cnblogs.com/toov5/p/10629961.html