MybatisPlus实用配置、DB策略配置、自动填充、逻辑删除、通用枚举。

基本配置

configLocation

MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。

SpringBoot:

mybatis-plus.config-location = classpath:mybatis-config.xml

SpringMVC:

<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

mapperLocations

MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。

Spring Boot:

mybatis-plus.mapper-locations = classpath*:mybatis/*.xml

Spring MVC:

<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="mapperLocations" value="classpath*:mybatis/*.xml"/>
</bean>

typeAliasesPackage

MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)。

Spring Boot:

mybatis-plus.type-aliases-package = cn.mp.pojo

Spring MVC:

<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="typeAliasesPackage"
value="com.baomidou.mybatisplus.samples.quickstart.entity"/>
</bean>

进阶配置

本部分(Configuration)的配置大都为 MyBatis 原生支持的配置,这意味着您可以通过 MyBatis XML 配置文件的形式进行配置。

mapUnderscoreToCamelCase

是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。

SpringBoot:

#关闭自动驼峰映射,该参数不能和mybatis-plus.config-location同时存在
mybatis-plus.configuration.map-underscore-to-camel-case=false

cacheEnabled

全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true。

SpringBoot:

mybatis-plus.configuration.cache-enabled=false

DB 策略配置

idType

全局默认主键类型,设置后,即可省略实体对象中的@TableId(type = IdType.AUTO)配置。

package com.baomidou.mybatisplus.annotation;
import lombok.Getter;
/**
* 生成ID类型枚举类
*
* @author hubin
* @since 2015-11-10
*/
@Getter
public enum IdType {
/**
* 数据库ID自增
*/
AUTO(0),
/**
* 该类型为未设置主键类型
*/
NONE(1),
/**
* 用户输入ID
* <p>该类型可以通过自己注册自动填充插件进行填充</p>
*/
INPUT(2),
/* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
/**
* 全局唯一ID (idWorker)
*/
ID_WORKER(3),
/**
* 全局唯一ID (UUID)
*/
UUID(4),
/**
* 字符串全局唯一ID (idWorker 的字符串表示)
*/
ID_WORKER_STR(5);
private final int key;
IdType(int key) {
this.key = key;
}
}

SpringBoot:

mybatis-plus.global-config.db-config.id-type=auto

SpringMVC:

<!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="globalConfig">
<bean class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="dbConfig">
<bean
class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
<property name="idType" value="AUTO"/>
</bean>
</property>
</bean>
</property>
</bean>

tablePrefix

表名前缀,全局配置后可省略@TableName()配置。

SpringBoot:

mybatis-plus.global-config.db-config.table-prefix=tb_

SpringMVC:

<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="globalConfig">
<bean class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="dbConfig">
<bean
class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
<property name="idType" value="AUTO"/>
<property name="tablePrefix" value="tb_"/>
</bean>
</property>
</bean>
</property>
</bean>

@TableField

在MP中通过@TableField注解可以指定字段的一些属性。

  • 对象中的属性名和字段名不一致的问题(非驼峰)
@TableField(value = "email")
private String mail;
  • 对象中的属性字段在表中不存在的问题
@TableField(exist = false)
private String address;
  • 字段不加入查询字段
@TableField(select = false)
private String mail;
  • 自动填充功能

有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、version等。

public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入时填充字段
*/
INSERT,
/**
* 更新时填充字段
*/
UPDATE,
/**
* 插入和更新时填充字段
*/
INSERT_UPDATE
}
@TableField(fill = FieldFill.INSERT) //插入数据时进行填充
private String password;

编写MyMetaObjectHandler

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
	@Override
	public void insertFill(MetaObject metaObject) {
		Object password = getFieldValByName("password", metaObject);
		if(null == password){
			//字段为空,可以进行填充
			setFieldValByName("password", "123456", metaObject);
		}
	}
	@Override
	public void updateFill(MetaObject metaObject) {
	}
}

@TableLogic(逻辑删除)

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除

  • 为tb_XXX表增加deleted字段,用于表示数据是否被删除,1代表删除,0代表未删除。
ALTER TABLE `tb_XXX`
ADD COLUMN `deleted` int(1) NULL DEFAULT 0 COMMENT '1代表删除,0代表未删除' AFTER
`version`;
  • 修改User实体,增加deleted属性并且添加@TableLogic注解
@TableLogic
private Integer deleted;
  • 全局配置

SpringBoot:

# 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value=1
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value=0

通用枚举

定义枚举

public enum SexEnum implements IEnum<Integer> {
	MAN(1,"男"),
	WOMAN(2,"女");
	private int value;
	private String desc;
	SexEnum(int value, String desc) {
		this.value = value;
		this.desc = desc;
	}
	@Override
	public Integer getValue() {
		return this.value;
	}
	@Override
	public String toString() {
		return this.desc;
	}
}

修改实体

private SexEnum sex;

配置

SpringBoot:

# 枚举包扫描
mybatis-plus.type-enums-package=cn.mp.enums
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Plus 中配置逻辑删除可以通过以下步骤完成: 1. 在实体类中添加一个用于标识逻辑删除的字段,通常会使用 `@TableLogic` 注解来标记该字段。这个字段的类型可以是 Integer、Boolean 或者 Enum 类型,根据业务需求进行选择。 2. 在 MyBatis Plus 的配置文件(通常是 `mybatis-plus-config.xml`)中,配置逻辑删除的全局属性。你可以使用 `global-config` 标签来配置,如下所示: ```xml <global-config> <db-config> <logic-delete-value>1</logic-delete-value> <!-- 逻辑删除对应的值 --> <logic-not-delete-value>0</logic-not-delete-value> <!-- 未删除对应的值 --> </db-config> </global-config> ``` 其中,`logic-delete-value` 是逻辑删除的值,`logic-not-delete-value` 是未删除的值。一般情况下,逻辑删除字段的值会被更新为 `logic-delete-value` 表示被删除,而更新为 `logic-not-delete-value` 表示未被删除。 3. 在数据库表对应的 Mapper 接口中,使用 `@TableField` 注解标注需要进行逻辑删除操作的字段。同时,使用 `@TableLogic` 注解标记该字段为逻辑删除字段。 完成上述配置后,MyBatis Plus 将会自动处理逻辑删除的操作。当执行删除操作时,MyBatis Plus 会将对应的逻辑删除字段更新为 `logic-delete-value`,而不是进行物理删除。查询数据时,默认会排除已被逻辑删除的数据,只返回未被删除的数据。 希望对你有所帮助!如有更多疑问,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值