MyBatis-Plus 整理

打印 上一主题 下一主题

主题 833|帖子 833|积分 2499

# 前言

代码天生器插件选择去这里: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会把PO实体的类名驼峰转下划线作为表名
  • MybatisPlus会把PO实体的全部变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型
  • MybatisPlus会把名为id的字段作为主键
但很多情况下,默认的实现与实际场景不符,因此MybatisPlus提供了一些注解便于我们声明表信息
3、然后就可以像调用自界说mapper接口方法一样调用了
# 注解

更多注解看官网:https://www.baomidou.com/reference/annotation/
@TableName:用来指定表名
@TableId:用来指定表中的主键字段信息。IdType枚举如下

  • AUTO:数据库自增长
  • INPUT:通过set方法自行输入
  • ASSIGN_ID:分配 ID(默认方式),接口IdentifierGenerator的方法nextId来天生id,默认实现类为DefaultIdentifierGenerator雪花算法
@TableField:用来指定表中的普通字段信息
使用@TableField的常见场景:

  • 成员变量名与数据库字段名不同等
  • 成员变量名以is开头,且是布尔值
  • 成员变量名与数据库关键字冲突
  • 成员变量不是数据库字段
# 配置

兼容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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表