Java Springboot3 Mybatis统一处理公共字段

这里本文只做最简单的功能实现

一、创建BaseEntity公共字段实体类

package com.lingyang.system.util.mybatisplus.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * @author **文
 * @Description:
 * @createDate 2024/7/22 10:03
 **/
@Data
public class BaseEntity {

    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    @TableField(fill = FieldFill.INSERT)
    private String createById;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;

    @TableField(fill = FieldFill.UPDATE)
    private String updateById;

    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;

}

二、对Mybatis 或者MybatisPlus 追加处理

package com.lingyang.system.util.mybatisplus.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author **文
 * @Description:
 * @createDate 2024/7/22 11:39
 **/
@Configuration
@MapperScan({"com.lingyang.*.mapper"})
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setOptimizeJoin(true);
        paginationInnerInterceptor.setDbType(DbType.MYSQL);
        paginationInnerInterceptor.setOverflow(true);

        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);
        return interceptor;
    }



}

三、工具类对原数据进行具体处理

这里要插入 create_id 、create_by。update_id、update_by 使用jwt解析出来的用户信息也可

package com.lingyang.system.util.mybatisplus.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

/**
 * @author **文
 * @Description:
 * @createDate 2024/7/22 9:44
 **/
@Component
public class MyMetaObjecthandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("create_time", System.currentTimeMillis(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("update_time", System.currentTimeMillis(), metaObject);
    }

}

四、实体类继承BaseEntity

完活

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis支持使用<resultMap>标签来映射join后的字段,具体步骤如下:1. 配置resultMap;2. 在SQL中使用join关键字;3. 在resultMap中使用<association>标签将join的表关联起来;4. 使用<result>标签将join后的字段映射到Java对象中。 ### 回答2: 在Spring Boot中使用MyBatis进行关联查询后,可以通过以下步骤实现字段映射。 1. 在数据库中创建两个或多个表,这些表之间有关联关系。 2. 在MyBatis的mapper文件中,使用XML配置或注解方式编写SQL语句。在SQL语句中,使用"JOIN"关键字来关联多个表。 3. 在Java代码中创建对应的实体类,每个实体类包含数据库表的字段。 4. 创建一个新的实体类,用于存储关联查询的结果。这个实体类中的字段可以是关联表中的字段或自定义的字段。 5. 在mapper文件中配置结果映射,将关联查询的结果映射到新创建的实体类中的字段。可以使用<resultMap>标签定义结果映射关系,并在<association>或<collection>标签中设置字段映射。 6. 在MyBatis的mapper接口中定义方法,用于调用关联查询的SQL语句,并通过@Results注解指定结果映射。 7. 在Service层中调用mapper接口的方法,获取关联查询的结果集。 8. 在Controller层将结果集返回给前端视图。 通过以上步骤,即可实现在Spring Boot中使用MyBatis进行关联查询后的字段映射。 ### 回答3: 在Spring Boot中使用MyBatis进行join查询之后,可以通过以下几种方式来映射字段: 1. 使用ResultMap: 在MyBatis的Mapper XML文件中,可以通过定义ResultMap来映射查询结果字段。在ResultMap中,可以使用association或collection标签来处理关联查询的结果。例如,假设有两个实体类User和Order,可以使用association标签将查询结果映射到User实体的order属性上。 2. 使用@Results注解: 在MyBatis的Mapper接口中,可以使用@Results注解来定义映射关系。可以通过@Result注解来指定字段名和属性名的对应关系。例如,可以使用@Results注解在查询方法上定义多个@Result注解,然后在@Select注解中引用该@Results注解。 3. 使用@ManyToOne或@OneToMany注解: 如果关联查询的结果是一对多的关系,可以在实体类之间使用@ManyToOne和@OneToMany注解来映射。例如,假设一个订单(Order)对应多个商品(Item),可以在Order实体类中使用@OneToMany注解,将商品列表映射到orderItems属性上。 4. 自定义映射方法: 如果以上的方式都不适用,还可以在@Results注解中使用@ConstructorArgs注解来定义一个自定义的映射方法。在该方法中,可以根据查询结果构建一个新的对象,并将字段值设置到对象的属性上。 总结而言,使用Spring BootMyBatis进行join查询之后,可以使用ResultMap、@Results注解、@ManyToOne或@OneToMany注解或自定义映射方法等多种方式来实现字段的映射。根据实际情况选择合适的方式即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值