前言
我们会发现CRUD操作中,我们有大量的公共字段需要去更新,例如createTime、createUser等这些字段,在上一篇文章介绍中MybatisPlus(一):注解实现update,insert,delete操作自动填充createTime等字段(有需要的可以参考下),我们通过官方提供的方式来实现了CRUD的时候一些公共值的自动填充,这样会有一个麻烦之处就是每次创建实例的时候我们都需要加上相应的注解,略有繁琐。这里我们通过自定义一个IService来继承MybatisPlus的基类来实现CRUD的时候值填充。
一、IService我们通过观察IService会发现里面提供了大量的CRUD等操作来方便我们的一些基本开发操作,这里以Save操作为例,有兴趣的可以自行去研究源码。
public interface IService {
/**
* 默认批次提交数量
*/
int DEFAULT_BATCH_SIZE = 1000;
/**
* 插入一条记录(选择字段,策略插入)
*
* @param entity 实体对象
*/
default boolean save(T entity) {
return SqlHelper.retBool(getBaseMapper().insert(entity));
}
........................................
二、自定义BaseService
自定BaseService继承IService接口,在这里需要注意:我们需要让泛型 继承 Object类(这里代指需要更新公共字段类)用来约束泛型一定是Object或者Object的子类。在重写的方法中进行公共字段的填充。如下:
public interface BaseService extends IService {
@Override
default boolean save(T entity) {
entity.setCreateUser("测试");
entity.setCreateTime(new Date());
return IService.super.save(entity);
}
}
三、创建BaseEntity
这里只有两个字段用作记录,可根据需求自行定义。
@Data
public class BaseEntity{
private Date createTime;
private String createUser;
}
四、实体类继承BasseEntity
public class Test extends BaseEntity{
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String username;
private Integer age;
}
到此处完成,我们来进行测试一下
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2022bd2f] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@786777947 wrapping com.mysql.cj.jdbc.ConnectionImpl@374a9d71] will not be managed by Spring
==> Preparing: INSERT INTO csdn_test ( username, age, create_time, create_user ) VALUES ( ?, ?, ?, ? )
==> Parameters: 张san(String), 18(Integer), 2021-04-09 17:13:06.645(Timestamp), 测试(String)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?