【项目实战】使用MyBatis-Plus的自动填充功能
2023-09-14 09:04:55 时间
一、MyBatis-Plus的自动填充功能
Mybatis Plus提供了自动填充功能,可以在插入和更新操作时自动填充一些公共字段,如创建时间、更新时间、创建人、更新人等。这样可以减少代码冗余,提高开发效率。
需要注意的是,自动填充功能只会在实体类中存在对应字段的情况下才会生效。
如果实体类中没有对应字段,自动填充功能会被忽略。
二、如何使用MyBatis-Plus的自动填充功能
要使用自动填充功能,需要实现MetaObjectHandler接口,并在配置文件中配置:
2.1 实现MetaObjectHandler接口
在MetaObjectHandler接口中,需要实现insertFill和updateFill方法,分别用于插入和更新操作时的自动填充。
以下是一个示例MetaObjectHandler实现:
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("createUser", "admin", metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
this.setFieldValByName("updateUser", "admin", metaObject);
}
}
在上面的示例中,insertFill方法会自动填充createTime和createUser字段,updateFill方法会自动填充updateTime和updateUser字段。
2.2 在配置文件中配置
<!-- 配置自动填充 -->
<bean id="myMetaObjectHandler" class="com.example.MyMetaObjectHandler"/>
<mybatis-plus>
<global-config>
<meta-object-handler ref="myMetaObjectHandler"/>
</global-config>
</mybatis-plus>
三、Springboot整合Mybatis Plus并使用自动填充功能
要在Springboot中使用Mybatis Plus的自动填充功能,需要进行以下步骤:
3.1 添加相应依赖
添加Mybatis Plus和Mybatis Plus Springboot Starter依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
3.2 配置数据源和Mybatis Plus
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
global-config:
db-config:
id-type: auto
field-strategy: not_empty
insert-fill: createTime,createUser
update-fill: updateTime,updateUser
在上面的配置中,insert-fill和update-fill分别指定了插入和更新操作时需要自动填充的字段。
3.3 创建实体类并添加自动填充字段:
@Data
public class User {
private Long id;
private String name;
private Integer age;
private Date createTime;
private String createUser;
private Date updateTime;
private String updateUser;
}
在上面的实体类中,添加了需要自动填充的字段。
3.4 创建Mapper接口和Mapper XML文件:
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="age" property="age" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="create_user" property="createUser" jdbcType="VARCHAR"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
</resultMap>
</mapper>
在上面的Mapper XML文件中,需要将自动填充字段映射到数据库表中的字段。
3.5 在Service中调用Mapper接口:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void save(User user) {
userMapper.insert(user);
}
@Override
public void update(User user) {
userMapper.updateById(user);
}
}
在上面的Service中,我们直接调用Mapper接口的方法进行数据操作。
相关文章
- springboot-mybatis-plus基本项目框架
- 在Mybatis-spring中由于默认Autowired导致不能配置多个数据源的问题分析及解决
- Mybatis中的模糊查询
- mybatis的配置文件mybatis-config.xml和映射文件的mapper.xml的模板
- MyBatis多表查询
- Web项目中用mybatis配置多个数据库
- 【项目实战】MyBatis的基础源码 —— 配置文件加载源码
- 【项目实战】MyBatis映射文件中的动态SQL
- 【项目实战】如何创建和使用MyBatis的映射文件
- MyBatis快速入门——第六章、MyBatis拦截器接口(二)
- MyBatis的Javabean映射流程以及需要哪些构造函数
- MyBatis数据源的配置
- mybatis什么时候需要声明jdbcType?
- Mybatis与Spring集成
- 因此mybatis最好与spring集成起来使用
- 【项目实战】使用MyBatis-Plus实现分页查询功能
- 【项目实战】在MyBatis-Plus的LambdaQueryWrapper中,实现MySQL的limit语句