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


    基本配置

    configLocation

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

    SpringBoot:

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

    SpringMVC:

    "sqlSessionFactory"
    class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    "configLocation" value="classpath:mybatis-config.xml"/>
    
    
    • 1
    • 2
    • 3
    • 4

    mapperLocations

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

    Spring Boot:

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

    Spring MVC:

    "sqlSessionFactory"
    class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    "mapperLocations" value="classpath*:mybatis/*.xml"/>
    
    
    • 1
    • 2
    • 3
    • 4

    typeAliasesPackage

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

    Spring Boot:

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

    Spring MVC:

    "sqlSessionFactory"
    class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    "typeAliasesPackage"
    value="com.baomidou.mybatisplus.samples.quickstart.entity"/>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    进阶配置

    本部分(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
    
    • 1
    • 2

    cacheEnabled

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

    SpringBoot:

    mybatis-plus.configuration.cache-enabled=false
    
    • 1

    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
    * 

    该类型可以通过自己注册自动填充插件进行填充

    */
    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; } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    SpringBoot:

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

    SpringMVC:

    
    "sqlSessionFactory"
    class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    "dataSource" ref="dataSource"/>
    "globalConfig">
    "com.baomidou.mybatisplus.core.config.GlobalConfig">
    "dbConfig">
    "com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
    "idType" value="AUTO"/>
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    tablePrefix

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

    SpringBoot:

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

    SpringMVC:

    "sqlSessionFactory"
    class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    "dataSource" ref="dataSource"/>
    "globalConfig">
    "com.baomidou.mybatisplus.core.config.GlobalConfig">
    "dbConfig">
    "com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
    "idType" value="AUTO"/>
    "tablePrefix" value="tb_"/>
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    @TableField

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

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

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

    public enum FieldFill {
    /**
    * 默认不处理
    */
    DEFAULT,
    /**
    * 插入时填充字段
    */
    INSERT,
    /**
    * 更新时填充字段
    */
    UPDATE,
    /**
    * 插入和更新时填充字段
    */
    INSERT_UPDATE
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    @TableField(fill = FieldFill.INSERT) //插入数据时进行填充
    private String password;
    
    • 1
    • 2

    编写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) {
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    @TableLogic(逻辑删除)

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

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

    SpringBoot:

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

    通用枚举

    定义枚举

    public enum SexEnum implements IEnum {
    	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;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    修改实体

    private SexEnum sex;
    
    • 1

    配置

    SpringBoot:

    # 枚举包扫描
    mybatis-plus.type-enums-package=cn.mp.enums
    
    • 1
    • 2
  • 相关阅读:
    docker 跨平台构建镜像
    基于scRNA-seq的GRN分析三阴性乳腺癌的肿瘤异质性
    【微机接口】汇编指令集:常用运算符
    在pandas中使用query替代loc进行高效简洁的条件筛选
    k8s创建pod - 启动pod的流程
    【开源】基于Vue和SpringBoot的康复中心管理系统
    自己动手实现一个深度学习算法——三、神经网络的学习
    Mybatis当传入参数为0时,动态sql语句条件不生效
    redis详细笔记
    MySQL入门(SQL语句、约束)
  • 原文地址:https://blog.csdn.net/qq_54429571/article/details/126721462