Mybatis-Plus的有些注解和配置文件是相辅相成的,比如:@TableField的insertStrategy、updateStrategy等属性,如果没有单独设置,则就会跟随全局配置,具体的常用配置(.yml)在文章的后半部分有写。
常用注解
对于我来说最常用的注解有三个@TableName、@TableId、@TableField
@TableName
使用在实体类上,是表名的注解,最常用的属性就是value:
| 属性 | 默认值 | 描述 |
|---|---|---|
| value | 否 | 表名(默认是实体类名对应的表名(驼峰转下划线),若表名与实体类名不能对应,则需要指定表名) |
其他属性:摘自官网@TableName
| 属性 | 默认值 | 描述 |
|---|---|---|
| schema | “” | schema |
| keepGlobalPrefix | false | 是否保持使用全局的 tablePrefix 的值(如果设置了全局 tablePrefix 且自行设置了 value 的值) |
| resultMap | “” | xml 中 resultMap 的 id |
| autoResultMap | false | 是否自动构建 resultMap 并使用(如果设置 resultMap 则不会进行 resultMap 的自动构建并注入) |
@TableId
主键注解,用在对应的表的主键字段上
| 属性 | 默认值 | 描述 |
|---|---|---|
| value | “” | 主键字段名(默认是和属性对应的字段(驼峰转下划线),若字段名与属性名不能对应,则需要指定字段) |
| type | IdType.NONE | 主键类型 |
两个属性都是比较常用的属性,特别的,type有个枚举值:摘自官网@TableId
| 值 | 描述 |
|---|---|
| AUTO | 数据库自增(依赖数据库) |
| INPUT | 自行输入 |
| ID_WORKER | 分布式全局唯一ID(基于sequence) 长整型类型 |
| UUID | 32位UUID字符串 |
| NONE | 无状态 |
| ID_WORKER_STR | 分布式全局唯一ID(基于sequence) 字符串类型 |
@TableField
除主键外其他字段的注解,常用属性
| 属性 | 默认值 | 描述 |
|---|---|---|
| value | “” | 字段名(默认是和属性对应的字段(驼峰转下划线),若字段名与属性名不能对应,则需要指定字段) |
| exist | true | 是否为数据库表字段(若不需要与数据库的字段对应,则必须设置为false) |
其他属性:摘自官网@TableField
| 属性 | 描述 |
|---|---|
| el | 映射为原生 #{ … } 逻辑,相当于写在 xml 里的 #{ … } 部分 |
| condition | 是否为数据库表字段(若不需要与数据库的字段对应,则必须设置为false) |
| update | 字段 update set 部分注入, 例如:update="%s+1":表示更新时会set version=version+1(该属性优先级高于 el 属性) |
| insertStrategy | 插入策略… |
| updateStrategy | 更新策略… |
| whereStrategy | 条件策略… |
| fill | 字段自动填充策略 |
| select | 是否进行 select 查询 |
| keepGlobalFormat | 是否保持使用全局的 format 进行处理 |
对于以上的插入、更新等策略都可以从官网上找到描述,这里就不继续了,以免显得有些乱。
其他注解
@Version
乐观锁注解、标记 @Verison 在字段上
@EnumValue
通枚举类注解(注解在枚举字段上)
@TableLogic
表字段逻辑处理注解(逻辑删除)
@SqlParser
租户注解
@KeySequence
序列主键策略
想要了解更详细的,可以移步官网查看其他注解
配置文件
这里主要介绍的是springboot
的.yml配置文件的方式,这部分的配置主体结构大概如下:
mybatis-plus: ...... configuration: ...... global-config: ...... db-config: ......
那我们也把分为4个部分来介绍
mybatis-plus: # MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置 config-location: classpath:mybatis-config.xml # 指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署 configuration-properties: classpath:mybatis-config.properties # Mapper对应的xml文件扫描,多个目录用逗号或者分号分隔 mapper-locations: classpath*:/mapper/**/*Mapper.xml # MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名) type-aliases-package: com.ck.** # 该配置请和 typeAliasesPackage 一起使用,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象 type-aliases-super-type: java.lang.Object # 枚举类 扫描路径,如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性 type-enums-package: com.baomidou.mybatisplus.samples.quickstart.enums # 启动时是否检查 MyBatis XML 文件的存在,默认不检查 check-config-location: true # SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句,REUSE:该执行器类型会复用预处理语句,BATCH:该执行器类型会批量执行所有的更新语句 default-executor-type: REUSE
其中常用的配置有mapper-locations、type-aliases-package
configuration: # 配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as:select user_id as userId) map-underscore-to-camel-case: true # 全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true cache-enabled: false # 懒加载 aggressive-lazy-loading: true # NONE:不启用自动映射 PARTIAL:只对非嵌套的 resultMap 进行自动映射 FULL:对所有的 resultMap 都进行自动映射 auto-mapping-behavior: partial # NONE:不做任何处理 (默认值)WARNING:以日志的形式打印相关警告信息 FAILING:当作映射失败处理,并抛出异常和详细信息 auto-mapping-unknown-column-behavior: none # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 call-setters-on-nulls: true # 配置JdbcTypeForNull, oracle数据库必须配置 jdbc-type-for-null: "null" # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
常用的配置有map-underscore-to-camel-case、cache-enabled、jdbc-type-for-null、log-impl,
global-config: # 是否控制台 print mybatis-plus 的 LOGO banner: true # 机器 ID 部分(影响雪花ID) # worker-id: # 数据标识 ID 部分(影响雪花ID)(workerId 和 datacenterId 一起配置才能重新初始化 Sequence) # datacenter-id:
这部分配置没有写完,但也是不常用的,但可以从官方了解详情
db-config: #表名下划线命名默认true table-underline: true #id类型 id-type: auto #是否开启大写命名,默认不开启 #capital-mode: false #逻辑已删除值,(逻辑删除下有效) 需要注入逻辑策略LogicSqlInjector 以@Bean方式注入 logic-not-delete-value: 0 #逻辑未删除值,(逻辑删除下有效) logic-delete-value: 1 #数据库类型 这个属性没什么用 数据库类型,默认值为未知的数据库类型 如果值为OTHER,启动时会根据数据库连接 url 获取数据库类型;如果不是OTHER则不会自动获取数据库类型 db-type: mysql # IGNORED 忽略判断 NOT_NULL 非NULL判断 NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断) DEFAULT 追随全局配置 类似的还有update-strategy、select-strategy等 insert-strategy: not_null
这部分常用的配置有id-type等,db-config详情
以上内容来源于
https://mp.baomidou.com/
https://www.jianshu.com/p/cfb84fee0a98
文章转载自橙子与栗子与世界,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




