前言
因为相对比较简单,就不再做过多的陈述了,直接上代码。
BaseService 接口
package com.aircity.qing.base.service;
import java.io.Serializable;
/**
* desc : Mybatis 事务通用封装类
**/
public interface BaseService<T, ID extends Serializable> {
/**
* 删除
* @param id 主键字段
*/
int delete(ID id);
/**
* 新增
* @param record 实体实例对象
*/
int insert(T record);
/**
* 选择字段新增
* @param record 实体实例对象
*/
int insertSelective(T record);
/**
* 单一查询
* @param id 主键
*/
T selectOne(ID id);
/**
* 选择字段更新
* @param record 实体实例对象
*/
int updateSelective(T record);
/**
* 更新
* @param record 实体实例对象
*/
int update(T record);
}
BaseServiceImpl 实现类
package com.aircity.qing.base.service.impl;
import com.aircity.qing.base.service.BaseService;
import com.aircity.qing.user.service.impl.UserServiceImpl;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* desc : Mybatis dao层通用实现类
**/
public class BaseServiceImpl<T, ID extends Serializable> implements BaseService<T, ID> {
/** 删除方法名称 **/
private final String DELETE_NAME = "deleteByPrimaryKey";
/** 插入方法名称 **/
private final String INSERT_NAME = "insert";
/** 更新方法名称 **/
private final String UPDATE_NAME = "updateByPrimaryKey";
/** 查询单一实体方法名称 **/
private final String SELECT_ONE_NAME = "selectByPrimaryKey";
/** 选择字段插入方法名称 **/
private final String INSERT_SELECT_NAME = "insertSelective";
/** 选择字段更新方法名称 **/
private final String UPDATE_SELECT_NAME = "updateByPrimaryKeySelective";
/**
* Mapper文件后缀名称
*/
private final String MAPPER_SUFFIX = "Mapper";
/**
* statement执行时的分隔符
*/
private final String SQL_SEPARATOR = ".";
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
/**
* 获取Mapper文件的namespace
*/
private String getMapperNameSpace(){
ParameterizedType parameterizedType = (ParameterizedType) UserServiceImpl.class.getGenericSuperclass();
Type[] types = parameterizedType.getActualTypeArguments();
return types[0].toString() + this.MAPPER_SUFFIX;
}
/**
* 获取statement的全文
*/
private String getStatementName(String methodName){
return this.getMapperNameSpace() + this.SQL_SEPARATOR + methodName;
}
/**
* 删除
* @param id 主键字段
*/
public int delete(ID id){
return this.sqlSessionTemplate.delete(this.getStatementName(this.DELETE_NAME), id);
}
/**
* 新增
* @param record 实体实例对象
*/
public int insert(T record){
return this.sqlSessionTemplate.insert(this.getStatementName(this.INSERT_NAME), record);
}
/**
* 选择字段新增
* @param record 实体实例对象
*/
public int insertSelective(T record){
return this.sqlSessionTemplate.insert(this.getStatementName(this.INSERT_SELECT_NAME), record);
}
/**
* 单一查询
* @param id 主键
*/
public T selectOne(ID id){
return this.sqlSessionTemplate.selectOne(this.getStatementName(this.SELECT_ONE_NAME), id);
}
/**
* 选择字段更新
* @param record 实体实例对象
*/
public int updateSelective(T record){
return this.sqlSessionTemplate.update(this.getStatementName(this.UPDATE_SELECT_NAME), record);
}
/**
* 更新
* @param record 实体实例对象
*/
public int update(T record){
return this.sqlSessionTemplate.update(this.getStatementName(this.UPDATE_NAME), record);
}
}