SSM项目集成mybatis-plus之自动填充字段、逻辑删除、分页插件


spring配置文件将自动填充字段、逻辑删除、分页插件都配置上如下:

<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="globalConfig" ref="globalConfig"></property>
    <property name="plugins">
        <array>
            <bean class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
                <property name="interceptors">
                    <list>
                    	<!--分页插件-->
                        <bean class="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor"></bean>
                    </list>
                </property>
            </bean>
        </array>
    </property>
</bean>

<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
    <!--自动填充-->
    <property name="metaObjectHandler">
        <bean class="com.kingo.config.MyMetaObjectHandler"></bean>
    </property>
    <!--逻辑删除-->
    <property name="dbConfig">
        <bean class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
            <property name="logicDeleteValue" value="1"/>
            <property name="logicNotDeleteValue" value="0"/>
        </bean>
    </property>
</bean>

1. 自动填充字段

官网教程针对springboot的配置如下

1. 实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
        // 或者
        this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
        // 或者
        this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
        // 或者
        this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
        // 或者
        this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
    }
}	
2. 注解填充字段 @TableField(… fill = FieldFill.INSERT) 生成器策略部分也可以配置!
public class User {
    // 注意!这里需要标记为填充字段
    @TableField(.. fill = FieldFill.INSERT)
    private String fillField;

    ....
}

因为springboot底层帮我们做好了自动配置,我们只需要根据需求去添加组件即可。

但是SSM项目并没有自动配置功能,因此我们需要自己去配置。

@Component注解只是帮我们把MyMetaObjectHandler注册到Spring容器中,但并不会把MyMetaObjectHandler配置到Mybatis-plus中。

所以,除了上述两步,还需要将MyMetaObjectHandler配置到Mybatis-plus中

3. 将MyMetaObjectHandler配置到Mybatis-plus中
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="globalConfig" ref="globalConfig"></property>
</bean>

<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
    <!--自动填充-->
    <property name="metaObjectHandler">
        <bean class="com.kingo.config.MyMetaObjectHandler"></bean>
    </property>    
</bean>

2. 逻辑删除

1. 配置GlobalConfig
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="globalConfig" ref="globalConfig"></property>
    </bean>

    <bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
        <!--逻辑删除-->
        <property name="dbConfig">
            <bean class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
                <property name="logicDeleteValue" value="1"/>
                <property name="logicNotDeleteValue" value="0"/>
            </bean>
        </property>
    </bean>
2. 实体类字段上加上@TableLogic注解
@TableLogic
private Integer deleted;

3. 分页插件

3.4.0版本之前

<!-- spring xml 方式 -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
	<property name="plugins">
	    <array>
	        <bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
	            <property name="sqlParser" ref="自定义解析类、可以没有"/>
	            <property name="dialectClazz" value="自定义方言类、可以没有"/>
	            <!-- COUNT SQL 解析.可以没有 -->
	            <property name="countSqlParser" ref="countSqlParser"/>
	        </bean>
	    </array>
	</property>
</bean>

<bean id="countSqlParser" class="com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize">
    <!-- 设置为 true 可以优化部分 left join 的sql -->
    <property name="optimizeJoin" value="true"/>
</bean>

3.4.0版本之后

<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
   <property name="dataSource" ref="dataSource"/>
   <property name="plugins">
       <array>
           <bean class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
               <property name="interceptors">
                   <list>
                       <bean class="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor"></bean>
                   </list>
               </property>
           </bean>
       </array>
   </property>
</bean>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值