描述:Service业务层基类,所有service都应该继承该类
@Service
public abstract class BaseService
/**
* 日志类
*/
public Logger log = Logger.getLogger(BaseService.class);
protected Class
M model; //model对象
//在构造器将泛型绑定,并实例化
@SuppressWarnings("unchecked")
public BaseService(){
try {
Type genType = getClass().getGenericSuperclass();
if(genType instanceof ParameterizedType){
ParameterizedType type = (ParameterizedType) genType;
modelClass = (Class
model = (M)modelClass.newInstance();
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
}
/**
* 分页
*/
public Page
return null;
}
/**
* 新增保存
* @param m 需要保存的实体对象
* @return 生成的主键ID,如果返回0,说明新增失败
*/
public Integer save(M m) throws Exception {
//获取对象主键字段的名称,默认主键名称为 id
String pkName = "id";
Table tb = (Table) m.getClass().getAnnotation(Table.class);
if(tb != null && StrKit.notBlank(tb.name()) && StrKit.notBlank(tb.pk())){
pkName = tb.pk();
}
if(m.save()){
return m.getInt(pkName);
}else{
return 0;
}
}
/**
* 修改保存
* @param m 需要修改保存的实体对象
* @return 受影响的行数,如果返回 1 说明修改成功,如果返回 0 说明修改失败
*/
public Integer update(M m) throws Exception {
if(m.update()){
return 1;
}else{
return 0;
}
}
/**
* 根据主键ID查询返回实体对象
* @param id 主键ID
* @return
*/
public M findById(Integer id) {
return model.findById(id);
}
/**
* 根据主键ID单条删除对象
* @param id 主键ID
* @return 受影响的行数,如果返回 1 说明删除成功,如果返回 0 说明删除失败
*/
public Integer deleteById(Integer id) {
if(model.deleteById(id)){
return 1;
}else{
return 0;
}
}
/**
* 批量删除,待完善
* @param ids 主键ID以逗号隔开的字符串
* @return 受影响的行数
*/
public Integer deleteByIds(String ids) {
//获取对象主键字段的名称,默认主键名称为 id
String tableName = modelClass.getSimpleName(); //暂时随便写的,待完善
String pkName = "id";
Table tb = (Table) model.getClass().getAnnotation(Table.class);
if(tb != null && StrKit.notBlank(tb.name()) && StrKit.notBlank(tb.pk())){
tableName = tb.name();
pkName = tb.pk();
}
return Db.update("delete from "+tableName+" where "+pkName+" in ("+ids+")");
}
}