一、概述
在日常的业务中,我们在写接口的时候难免避不开基础的基础功能,大部分情况我们会利用代码生成器去生成这部分代码,通常这些代码都是有一个统一的基类,无意间点开过一次公司项框架中的这个基类,发现还是比较有意思的。
不同的代码都使用这些基类可以快速实现,分页,填充某些必要字段(如更新时间或者生成主键值)等。
二、代码
总体结构
实体类:mode
业务类:service和serviceImpl
Mapper类:mapper.java接口
基础类
实体基类:BaseModel
public abstract class BaseModel<T extends BaseModel> implements Serializable {
/**
* id
*/
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
/**
* 创建人
*/
@JSONField(serialize = true)
private String createBy;
/**
* 创建时间
*/
@JSONField(serialize = true)
private Date createTime;
/**
* 更新时间
*/
@JSONField(serialize = true)
private String updateBy;
/**
* 更新人
*/
@JSONField(serialize = true)
private Date updateTime;
/**
* 删除标记
*/
@JSONField(serialize = false)
private String delFlag;
/**
* 备注
*/
private String remarks;
/**
* 分页(当前页)
*/
@JSONField(serialize = false)
private Integer pageNum;
/**
* 分页(页面大小)
*/
@JSONField(serialize = false)
private Integer pageSize;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public BaseModel() {
pageNum = 1;
pageSize = SysConfig.getPageSize();
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public String getRemarks() {
return remarks;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
/**
* 请求参数
*/
@JSONField(serialize = false)
private Map<String, Object> params;
public Map<String, Object> getParams() {
return params;
}
public void setParams(Map<String, Object> params) {
this.params = params;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
/**
* 初始化默认字段
*/
public void preInit() {
SysUser sysUser = ShiroUtils.getUser();
if (null==this.id) {
if (sysUser != null) {
this.createBy = sysUser.getId() + "";
this.updateBy = sysUser.getId() + "";
}
if (null==this.id) {
SnowflakeIdWorker idWorker = new SnowflakeIdWorker();
this.id = idWorker.nextId();
}
this.createTime = new Date();
this.updateTime = new Date();
this.setDelFlag(AppConstants.TABLE_DELFLAG_VALID);
} else {//更新
if (sysUser != null) {
this.updateBy = sysUser.getId() + "";
}
this.updateTime = new Date();
}
}
}
业务基类BaseService
public interface BaseService<T extends BaseModel> {
Integer add(T var1);
/**
* 新增或者更新记录(通过model,非空列)
*
* @param var1
* @return
*/
Integer insertOrUpdate(T var1);
/**
* 删除记录(通过id)
*
* @param id
* @return
*/
Integer delete(Long id);
/**
* 批量删除(根据ids,例如 :abc,def,efg,sdfw)
*
* @param ids
* @return
*/
Integer deleteBatchIds(String ids);
/**
* 更新(根据id)
*
* @param var1
* @return
*/
Integer update(T var1);
/**
* 查询单条model(通过id)
*
* @param id 数据id
* @return
*/
T getOne(Long id);
/**
* 查询单条model(对象)
*
* @param var1 数据id
* @return
*/
T get(T var1);
/**
* 分页查询
*
* @param var1