Mybatis-plus 小总结

我之前竟然没有记录过这个,记录一下
.
Mybatis小总结

maven依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!--jdbc 操作数据库-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!--<dependency>-->
<!-- <groupId>org.postgresql</groupId>-->
<!-- <artifactId>postgresql</artifactId>-->
<!-- <version>42.3.1</version>-->
<!-- <scope>runtime</scope>-->
<!--</dependency>-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>

分页插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* MybatisPlus 配置
*
* @author 陶攀峰
* @date 2022-05-19 03:11
*/
@Configuration
public class MybatisPlusConfig {

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}

自动填充

  • 实体类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.TableField;

    @Data
    public class Record implements Serializable {
    // ...

    @TableField(fill = FieldFill.INSERT)
    private Date dateCreated;// 创建时间

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date lastModified;// 更新时间

    // ...
    }
  • 配置

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import com.taopanfeng.bill.context.NickNameHolder;
    // import com.taopanfeng.bill.context.TenantIdHolder;
    import com.taopanfeng.bill.context.UserIdHolder;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;

    import java.util.Date;

    /**
    * 字段填充处理器
    *
    * @author 陶攀峰
    * @date 2022-04-10 17:06
    */
    @Component
    public class FieldFillHandler implements MetaObjectHandler {

    // private static final String TENANT_ID_FIELD_NAME = "tenantId";
    private static final String DATE_CREATED_FIELD_NAME = "dateCreated";
    private static final String LAST_MODIFIED_FIELD_NAME = "lastModified";
    // private static final String TIME_FIELD_NAME = "billtime";
    private static final String CREATE_BY_FIELD_NAME = "createBy";
    private static final String CREATE_BY_NAME_FIELD_NAME = "createByName";
    // private static final String UPDATE_BY_FIELD_NAME = "updateBy";
    // private static final String UPDATE_BY_NAME_FIELD_NAME = "updateByName";

    /**
    * 插入时的填充策略
    */
    @Override
    public void insertFill(MetaObject metaObject) {
    // if (metaObject.hasGetter(TENANT_ID_FIELD_NAME)) {
    // this.setFieldValByName(TENANT_ID_FIELD_NAME, TenantIdHolder.get(), metaObject);
    // }

    this.setFieldValByName(DATE_CREATED_FIELD_NAME, new Date(), metaObject);
    this.setFieldValByName(LAST_MODIFIED_FIELD_NAME, new Date(), metaObject);

    // if (metaObject.getValue(TIME_FIELD_NAME) == null) {
    // this.setFieldValByName(TIME_FIELD_NAME, new Date(), metaObject);
    // }

    if (metaObject.hasGetter(CREATE_BY_FIELD_NAME)) {
    this.setFieldValByName(CREATE_BY_FIELD_NAME, UserIdHolder.get(), metaObject);
    this.setFieldValByName(CREATE_BY_NAME_FIELD_NAME, NickNameHolder.get(), metaObject);
    // this.setFieldValByName(UPDATE_BY_FIELD_NAME, UserIdHolder.get(), metaObject);
    // this.setFieldValByName(UPDATE_BY_NAME_FIELD_NAME, NickNameHolder.get(), metaObject);
    }
    }

    /**
    * 更新时的填充策略
    */
    @Override
    public void updateFill(MetaObject metaObject) {
    this.setFieldValByName(LAST_MODIFIED_FIELD_NAME, new Date(), metaObject);

    // if (metaObject.hasGetter(UPDATE_BY_FIELD_NAME)) {
    // this.setFieldValByName(UPDATE_BY_FIELD_NAME, UserIdHolder.get(), metaObject);
    // this.setFieldValByName(UPDATE_BY_NAME_FIELD_NAME, NickNameHolder.get(), metaObject);
    // }
    }
    }