MyBatis-Plus 全局策略中的 DB 策略配置
id-type(全局默认主键类)
AUTO
:使用数据库自增 ID 作为主键。NONE
:无特定生成策略,如果全局配置中有 IdType 相关的配置,则会跟随全局配置。INPUT
:在插入数据前,由用户自行设置主键值。(
3.3.0版本)ASSIGN_ID
:自动分配ID
,适用于Long
、Integer
、String
类型的主键。默认使用雪花算法通过IdentifierGenerator
的nextId
实现。(
3.3.0版本)ASSIGN_UUID
:自动分配UUID
,适用于String
类型的主键。默认实现为IdentifierGenerator
的nextUUID
方法。
mybatis-plus:
global-config:
db-config:
id-type: ASSIGN_ID
table-prefix(表名前缀)
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
table-prefix是一个全局配置,它会自动在所有表名前添加指定的前缀,主要是用来保证表的命名规范。
比如有个实体类叫User
,如果配置了 table-prefix: tbl_
,那么 MyBatis-Plus
在生成 SQL 语句时将会使用表名 tbl_user
而不是 user
schema(数据库的 Schema 名称)
指定数据库的 Schema 名称,通常不用设置。
mybatis-plus:
global-config:
db-config:
schema: my_schema
1.如果需要在特定的实体类中指定 schema,可以在 @TableName 注解中指定
import com.baomidou.mybatisplus.annotation.TableName;
@TableName(schema = "your_schema", value = "your_table")
public class YourEntity {
// 实体类属性
}
2.如果你需要在运行时动态设置 schema,可以通过自定义 ISqlInjector 或者 MetaObjectHandler 来实现。
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
public class CustomSqlInjector extends LogicSqlInjector {
@Override
public void injectSql(MetaObject metaObject) {
super.injectSql(metaObject);
MetaObject meta = SystemMetaObject.forObject(metaObject.getOriginalObject());
String schema = "your_schema"; // 可以从配置文件或其他地方获取
meta.setValue("schema", schema);
}
}
mybatis-plus:
global-config:
db-config:
sql-injector: com.yourpackage.CustomSqlInjector
3.使用 XML 配置,可以在 XML 映射文件中指定 schema。
<mapper namespace="com.yourpackage.YourMapper">
<select id="selectById" resultType="com.yourpackage.YourEntity">
SELECT * FROM ${schema}.your_table WHERE id = #{id}
</select>
</mapper>
需要注意:
- 确保数据库用户有权限访问指定的 schema。
- 在多租户系统中,可能需要根据不同的租户动态切换 schema,这时可以结合 Spring 的 AbstractRoutingDataSource 来实现。
column-format(字段名进行格式化)
用于在生成 SQL 时对字段名进行格式化,例如添加前缀或后缀,对主键无效,例: %s
。
mybatis-plus:
global-config:
db-config:
column-format: "%s_field"
他会在所有字段名后面拼接配置字符,如下图
table-underline(表名是否使用驼峰转下划线命名)
控制表名是否使用驼峰转下划线命名。
mybatis-plus:
global-config:
db-config:
table-underline: false
capital-mode(否使用大写命名)
控制表名和字段名是否使用大写命名。
mybatis-plus:
global-config:
db-config:
capital-mode: true
key-generator(自定义表主键生成器)
已弃用: 3.0开始废除此属性,要使用@Bean的方式注入至Spring容器
mybatis-plus:
global-config:
db-config:
key-generator: com.example.CustomKeyGenerator
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
import com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 注入主键生成器
*/
@Bean
public IKeyGenerator keyGenerator(){
return new H2KeyGenerator();
}
}
- DB2KeyGenerator(用于 IBM DB2 数据库的主键生成策略)
- H2KeyGenerator(用于 H2 数据库的主键生成策略。)
- KingbaseKeyGenerator(用于 Kingbase 数据库的主键生成策略。)
- OracleKeyGenerator(用于 Oracle 数据库的主键生成策略。)
- PostgreKeyGenerator(用于 PostgreSQL 数据库的主键生成策略。)
logic-delete-field(逻辑删除字段属性名)
全局的 实体逻辑删除字段属性名,仅在逻辑删除功能打开时有效。
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted
@Data
@TableName("sys_user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableLogic
private Boolean deleted;
)
logic-delete-value(逻辑已删除值)
逻辑已删除值,仅在逻辑删除功能打开时有效。
mybatis-plus:
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value(逻辑未删除值)
mybatis-plus:
global-config:
db-config:
logic-not-delete-value: false
true和false可以替换,编程1,2也可以。
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
@TableName("sys_user")
public class User {
@TableId
private Long id;
private String username;
private String email;
@TableLogic
private Boolean deleted;
@TableLogic
//private int deleted;
// Getters and Setters
}
insert-strategy( Insert 时的字段验证策略)
- FieldStrategy.DEFAULT:遵循全局配置的策略。如果全局配置未指定,默认行为是仅在字段值不为 NULL 时插入该字段。
- FieldStrategy.ALWAYS:总是插入该字段,无论字段值是否为 NULL。
- FieldStrategy.NOT_NULL:仅在字段值不为 NULL 时插入该字段。
- FieldStrategy.NOT_EMPTY:仅在字段值不为空(对于字符串类型)或不为 NULL(对于其他类型)时插入该字段。
- FieldStrategy.NEVER:从不插入该字段,即使字段值不为 NULL。
FieldStrategy.IGNORED: 忽略判断,效果等同于”ALWAYS”
mybatis-plus:
global-config:
db-config:
insert-strategy: NEVER
使用 实体字段使用@TableField(fill = FieldFill.)注解
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
@TableName("sys_user")
public class User {
@TableId
private Long id;
private String username;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
// Getters and Setters
}
update-strategy( Update 时的字段验证策略)
控制字段在 Update 时的字段验证策略。
mybatis-plus:
global-config:
db-config:
update-strategy: IGNORED
类型和新增一样
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.baomidou.mybatisplus.annotation;
public enum FieldStrategy {
/** @deprecated */
@Deprecated
IGNORED,
ALWAYS,
NOT_NULL,
NOT_EMPTY,
DEFAULT,
NEVER;
private FieldStrategy() {
}
}
where-strategy(Update 时的字段验证策略,Wrapper )
控制字段在 Update 时的字段验证策略。既 Wrapper 根据内部 Entity 生成的 Where 条件。
mybatis-plus:
global-config:
db-config:
where-strategy: ALWAYS
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.baomidou.mybatisplus.annotation;
public enum FieldStrategy {
/** @deprecated */
@Deprecated
IGNORED,
ALWAYS,
NOT_NULL,
NOT_EMPTY,
DEFAULT,
NEVER;
private FieldStrategy() {
}
}
table-format(表名进行格式化 版本要>= 3.5.3.2)
在生成 SQL 时对表名进行格式化,例: %s
。这个是全局配置,主要是用来约定表名规范。
mybatis-plus:
global-config:
db-config:
table-format: tbl_%s
property-format(实体的字段映射到数据库字段时进行格式化 版本要>= 3.3.0)
用于在 Entity 的字段映射到数据库字段时进行格式化,只有在 column as property
这种情况下生效,对主键无效,例: %s
。
mybatis-plus:
global-config:
db-config:
property-format: %s_prop
MyBatis-Plus 学习笔记-配置(一)_mybatis-plus:check-config-location:-CSDN博客
MyBatis-Plus 学习笔记-配置(二) Configuration_mybatisplusconfig-CSDN博客
MyBatis-Plus 学习笔记-配置(三) GlobalConfig_mybatisplusconfig-CSDN博客
以上就是所有的MyBatis-Plus关于MyBatis-Plus的所有配置,如有不对还请大佬指正。
标签:DbConfig,com,baomidou,mybatis,Plus,plus,MyBatis,import,config From: https://blog.csdn.net/cauyaycau/article/details/143846892