ToB企服应用市场:ToB评测及商务社交产业平台

标题: MyBatis-Plus 整理 [打印本页]

作者: 写过一篇    时间: 2024-7-10 13:42
标题: MyBatis-Plus 整理
# 前言

代码天生器插件选择去这里:https://www.cnblogs.com/zixq/p/16726534.html
干系插件在那里面已经提到了
# 上手

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高服从而生
PS:要打开官网需要将欣赏器的广告拦截插件添加白名单,详细操纵访问官网即可看到
官网入手示例:https://www.baomidou.com/getting-started/
1、依赖
  1. <dependency>
  2.     <groupId>com.baomidou</groupId>
  3.     <artifactId>mybatis-plus-boot-starter-test</artifactId>
  4.     <version>3.5.7</version>
  5. </dependency>
  6. <dependency>
  7.     <groupId>com.baomidou</groupId>
  8.     <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  9.     <version>3.5.7</version>
  10. </dependency>
复制代码
2、接口 extends BaseMapper。该接口界说了单表CRUD的一些常用API
  1. // 泛型 User 是与数据库对应的实体类
  2. public interface UserMapper extends BaseMapper<User> {
  3. }
复制代码

Mybatis-Plus就是根据PO实体的信息来推断出表的信息,从而天生SQL的。默认情况下:
但很多情况下,默认的实现与实际场景不符,因此MybatisPlus提供了一些注解便于我们声明表信息
3、然后就可以像调用自界说mapper接口方法一样调用了
# 注解

更多注解看官网:https://www.baomidou.com/reference/annotation/
@TableName:用来指定表名
@TableId:用来指定表中的主键字段信息。IdType枚举如下
@TableField:用来指定表中的普通字段信息
使用@TableField的常见场景:
# 配置

兼容MyBatis的配置
另外更多配置,查看官网:https://www.baomidou.com/reference/
  1. mybatis-plus:
  2.         type-aliases-package: com.zixq.mp.domain.po # 别名扫描包
  3.         mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,默认值
  4.         configuration: map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射
  5.         cache-enabled: false # 是否开启二级缓存
  6.         global-config:
  7.                 db-config:
  8.             id-type: assign_id # id为雪花算法生成        这个优先级没有使用 @TableId 注解高
  9.             update-strategy: not_null # 更新策略:只更新非空字段
  10. # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
  11.             logic-delete-field: deleted
  12.             logic-delete-value: 1 # 逻辑已删除值(默认为 1)
  13.             logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
复制代码
逻辑删除进行上面配置后mp就可自动实现delete变update操纵了,但逻辑删除会占用空间,影响性能,所以可采用删除前将数据迁移到另一张表中
# 条件构造器

1、QueryWrapper 和 LambdaQueryWrapper一般用来构建select、delete、update的where条件部分
2、UpdateWrapper 和 LambdaUpdateWrapper通常只有在set语句比较特殊才使用,如set的是 money = money - 1000
3、尽量使用LambdaQueryWrapper 和 LambdaUpdateWrapper,避免硬编码

BaseMapper包含的Wrapper构建起

AbstractWrapper

QueryWrapper

UpdateWrapper

# 示例

1、QueryWrapper根据指定字段和条件查询
SQL
  1. SELECT id, username, info, balance
  2. FROM `user`
  3. WHERE username LIKE ? AND  balance >= ?;
复制代码
mp构建:
[code]// 1、构建查询条件Querywrapper wrapper = new QueryWrapper entityClass, Log log, Collection




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4