M - "实体类"的 Mapper Interface 接口T - 实体类public class BaseCrudServiceImpl<M extends CrudMapper<T>,T> extends Object implements CrudService<T>
| Modifier and Type | Field and Description |
|---|---|
protected M |
crudMapper |
protected Class<?> |
entityClass |
protected Map<String,String> |
fieldColumns
表中的所有字段,用于校验字段名,防止sql注入
|
protected Class<?> |
mapperClass |
protected TableInfo |
tableInfo |
| Constructor and Description |
|---|
BaseCrudServiceImpl()
初始化实现数据库表增、删、改、查常用操作的基类
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
addPageExtraInfo(app.myoss.cloud.core.lang.dto.Page<T> condition,
app.myoss.cloud.core.lang.dto.Page<T> result)
设置分页查询返回值需要的额外字段,子类去重写
|
protected void |
checkCommonQueryConditionIsAllNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
T condition,
Map<String,Object> extraCondition)
检查通用查询条件字段是否为空,这里只检查主键id是否为空,防止全表扫描
|
protected void |
checkNull4Create(T record,
Object optionParam)
检查待保存的记录的字段是否有null值
|
protected boolean |
checkPageConditionIsAllNull(app.myoss.cloud.core.lang.dto.Page<T> condition,
app.myoss.cloud.core.lang.dto.Page<T> result)
校验分页查询条件字段是否有空值,默认不做任何校验,子类去重写
|
protected void |
checkPrimaryKeyIsNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
Object record)
检查实体和主键字段是否为空
|
protected boolean |
checkPrimaryKeyIsNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
Object record,
boolean checkAll)
检查实体和主键字段是否为空
|
protected void |
checkPrimaryKeyIsNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
Serializable id)
检查主键字段是否为空
|
protected void |
checkRecordIfExist4Create(T record)
检查待保存的实体对象是否已经有存在相同的记录(幂等校验)
|
protected void |
checkRecordIfExist4Update(Map<String,Object> record)
检查待更新的实体对象是否已经有存在相同的记录(幂等校验)。默认未实现逻辑,请子类中重写。
|
protected void |
checkRecordIfExist4Update(T record)
检查待更新的实体对象是否已经有存在相同的记录(幂等校验)。如果实体的类型是
LogicDeleteEntity
,如果数据是逻辑删除,则校验通过。 |
protected List<app.myoss.cloud.core.lang.dto.Order> |
convertToOrders(app.myoss.cloud.core.lang.dto.Sort sort)
将实体类排序字段转换成数据库字段排序,会校验数据库字段名,防止SQL注入
|
protected Map<String,Object> |
convertToUpdateUseMap(Map<String,Object> record)
将
Map 中的 key 转换成数据库字段名,会校验数据库字段名,防止SQL注入 |
<I> I |
create(T record)
创建新的记录
|
<I> I |
create(T record,
Object optionParam)
创建新的记录
|
void |
createBatch(List<T> records)
批量创建新的记录
|
void |
createBatch(List<T> records,
Object optionParam)
批量创建新的记录
|
protected void |
createBatchCallable(List<T> records,
Object optionParam,
app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> createCallFunc)
用于重写创建的方法,比如加锁创建
|
protected void |
createBatchInner(List<T> records,
Object optionParam)
创建新的记录,
createBatch(List) 方法的最后一步调用 |
protected <I> I |
createCallable(T record,
Object optionParam,
app.myoss.cloud.core.lang.concurrent.CallableFunc<I> createCallFunc)
用于重写创建的方法,比如加锁创建
|
protected <I> I |
createInner(T record,
Object optionParam)
创建新的记录,
create(Object) 方法的最后一步调用 |
protected void |
createValidate(T record,
Object optionParam)
检查待保存的记录的字段是否符合预期的格式
|
void |
deleteByCondition(T condition)
根据条件删除记录,如果是审计字段的实体,使用逻辑删除,而不是物理删除
|
void |
deleteByCondition(T condition,
Object optionParam)
根据条件删除记录,如果是审计字段的实体,使用逻辑删除,而不是物理删除
|
void |
deleteByPrimaryKey(T condition)
根据主键删除记录,如果是逻辑删除的实体,使用逻辑删除,而不是物理删除
|
void |
deleteByPrimaryKey(T condition,
Object optionParam)
根据主键删除记录,如果是逻辑删除的实体,使用逻辑删除,而不是物理删除
|
T |
findByPrimaryKey(Serializable id)
根据主键查询实体对象
|
T |
findByPrimaryKey(T condition)
根据主键查询实体对象
|
Integer |
findCount(T condition)
根据条件查询匹配的实体对象总记录数
|
Integer |
findCount(T condition,
Map<String,Object> extraCondition)
根据条件查询匹配的实体对象总记录数
|
protected List<T> |
findExistRecord4CheckRecord(T record)
查询存在的记录,用于"检查待保存的实体对象是否已经有存在相同的记录(幂等校验)"
|
List<T> |
findList(T condition)
根据条件查询匹配的实体对象
|
List<T> |
findListWithSort(app.myoss.cloud.core.lang.dto.Page<T> condition)
根据条件查询匹配的实体对象,并支持字段排序
|
T |
findOne(T condition)
根据条件查询匹配的实体对象
|
app.myoss.cloud.core.lang.dto.Page<T> |
findPage(app.myoss.cloud.core.lang.dto.Page<T> condition)
根据条件查询匹配的实体对象,并进行分页
|
<DTO> app.myoss.cloud.core.lang.dto.Page<DTO> |
findPageByHelper(app.myoss.cloud.core.lang.dto.Page<DTO> condition)
使用 PageHelper 分页插件,根据条件查询匹配的实体对象,并进行分页
|
protected <I> I |
getPrimaryKeyValue(T record) |
protected <DTO> List<DTO> |
pageHelperQuery(Object param,
app.myoss.cloud.core.lang.dto.Page<DTO> condition) |
protected void |
pageQuery(app.myoss.cloud.core.lang.dto.Page<T> result,
T param,
Map<String,Object> extraInfo,
int pageStart,
int pageSize,
List<app.myoss.cloud.core.lang.dto.Order> orders) |
<I> I |
save(T record)
先校验记录是否已经存在,如果不存在则创建新的记录,如果已经存在返回原记录的主键信息
|
<I> I |
save(T record,
Object optionParam)
先校验记录是否已经存在,如果不存在则创建新的记录,如果已经存在返回原记录的主键信息
|
protected <I> I |
saveInner(T record,
Object optionParam)
保存新的记录,
create(Object) 方法的最后一步调用 |
<I> I |
saveOrUpdate(T record)
先校验记录是否已经存在,如果不存在则创建新的记录,如果已经存在则更新原有的记录
|
<I> I |
saveOrUpdate(T record,
Object optionParam)
先校验记录是否已经存在,如果不存在则创建新的记录,如果已经存在则更新原有的记录
|
void |
setCrudMapper(M crudMapper)
使用 Spring 自动注入"实体类"的 Mapper Interface 接口代理对象
|
protected void |
setPrimaryKeyValue(T record,
Object... value) |
protected void |
setValue4Create(T record,
Object optionParam)
保存新记录的时候,设置通用字段的值
|
protected void |
setValue4Update(Map<String,Object> record,
Object optionParam)
更新记录的时候,设置通用字段的值
|
protected void |
setValue4Update(T record,
Object optionParam)
更新记录的时候,设置通用字段的值
|
void |
updateByCondition(T record,
T condition)
根据条件更新记录
|
void |
updateByCondition(T record,
T condition,
Object optionParam)
根据条件更新记录
|
protected void |
updateByConditionCallable(T record,
T condition,
Object optionParam,
app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> updateCallFunc)
用于重写更新的方法,比如加锁更新
|
protected void |
updateByConditionInner(T record,
T condition,
Object optionParam)
更新记录,
updateByCondition(Object, Object) 方法的最后一步调用 |
void |
updateByPrimaryKey(T record)
根据主键更新记录
|
void |
updateByPrimaryKey(T record,
Object optionParam)
根据主键更新记录
|
protected void |
updateByPrimaryKeyCallable(T record,
Object optionParam,
app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> updateCallFunc)
用于重写更新的方法,比如加锁更新
|
protected void |
updateByPrimaryKeyInner(T record,
Object optionParam)
更新记录,
updateByPrimaryKey(Object) 方法的最后一步调用 |
void |
updateUseMapByCondition(Map<String,Object> record,
T condition)
根据条件更新记录
|
void |
updateUseMapByCondition(Map<String,Object> record,
T condition,
Object optionParam)
根据条件更新记录
|
protected void |
updateUseMapByConditionCallable(Map<String,Object> record,
T condition,
Object optionParam,
app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> updateCallFunc)
用于重写更新的方法,比如加锁更新
|
protected void |
updateUseMapByConditionInner(Map<String,Object> record,
T condition,
Object optionParam)
更新记录,
updateByCondition(Object, Object) 方法的最后一步调用 |
protected void |
validFieldValue(Map<String,Object> record,
Object optionParam)
检查待保存的记录的字段是否符合预期的格式
|
protected void |
validFieldValue(T record,
Object optionParam)
检查待保存的记录的字段是否符合预期的格式
|
protected Class<?> mapperClass
protected Class<?> entityClass
protected TableInfo tableInfo
protected M extends CrudMapper<T> crudMapper
@Autowired public void setCrudMapper(M crudMapper)
crudMapper - "实体类"的 Mapper Interface 接口代理对象protected void checkNull4Create(T record, Object optionParam)
record - 实体对象optionParam - 可选参数,默认为 null protected void checkPrimaryKeyIsNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
Serializable id)
sqlCommandType - 执行的 SQL 命令类型id - 主键值protected boolean checkPrimaryKeyIsNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
Object record,
boolean checkAll)
sqlCommandType - 执行的 SQL 命令类型record - 实体对象checkAll - 检查所有的主键字段值是否为空(false: 只要有一个主键字段为空,则校验失败)protected void checkPrimaryKeyIsNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
Object record)
sqlCommandType - 执行的 SQL 命令类型record - 实体对象protected void checkCommonQueryConditionIsAllNull(org.apache.ibatis.mapping.SqlCommandType sqlCommandType,
T condition,
Map<String,Object> extraCondition)
sqlCommandType - 执行的 SQL 命令类型condition - 查询条件extraCondition - 扩展查询条件,需要自定义protected boolean checkPageConditionIsAllNull(app.myoss.cloud.core.lang.dto.Page<T> condition, app.myoss.cloud.core.lang.dto.Page<T> result)
condition - 分页查询条件result - 分页查询返回结果protected void validFieldValue(T record, Object optionParam)
record - 实体对象optionParam - 可选参数,默认为 null protected void validFieldValue(Map<String,Object> record, Object optionParam)
record - 实体对象optionParam - 可选参数,默认为 null protected void createValidate(T record, Object optionParam)
record - 实体对象optionParam - 可选参数,默认为 null protected Map<String,Object> convertToUpdateUseMap(Map<String,Object> record)
Map 中的 key 转换成数据库字段名,会校验数据库字段名,防止SQL注入record - 待更新的实体对象,key:是数据库列名,value:是数据库列的值protected List<app.myoss.cloud.core.lang.dto.Order> convertToOrders(app.myoss.cloud.core.lang.dto.Sort sort)
sort - 实体类排序字段protected List<T> findExistRecord4CheckRecord(T record)
record - 待保存的实体对象checkRecordIfExist4Create(Object),
checkRecordIfExist4Update( Object)protected void checkRecordIfExist4Create(T record)
record - 实体对象findExistRecord4CheckRecord( Object)protected void checkRecordIfExist4Update(T record)
LogicDeleteEntity
,如果数据是逻辑删除,则校验通过。record - 实体对象findExistRecord4CheckRecord( Object)protected void checkRecordIfExist4Update(Map<String,Object> record)
record - 实体对象findExistRecord4CheckRecord( Object)protected void setValue4Create(T record, Object optionParam)
record - 待保存的实体对象optionParam - 可选参数,默认为 null protected void setValue4Update(T record, Object optionParam)
record - 待更新的实体对象optionParam - 可选参数,默认为 null protected void setValue4Update(Map<String,Object> record, Object optionParam)
record - 待更新的实体对象optionParam - 可选参数,默认为 null protected void addPageExtraInfo(app.myoss.cloud.core.lang.dto.Page<T> condition, app.myoss.cloud.core.lang.dto.Page<T> result)
condition - 分页查询条件result - 分页查询返回结果@Transactional(rollbackFor=java.lang.Exception.class) public <I> I create(T record, Object optionParam)
CrudServicecreate in interface CrudService<T>I - 主键类型record - 待保存的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public <I> I create(T record)
CrudServicecreate in interface CrudService<T>I - 主键类型record - 待保存的实体对象protected <I> I createCallable(T record, Object optionParam, app.myoss.cloud.core.lang.concurrent.CallableFunc<I> createCallFunc)
I - 主键类型record - 待保存的实体对象optionParam - 可选参数,默认为 null createCallFunc - 保存方法回调类,参考:create( Object, Object)主键id 参数,可以被子类覆盖重写protected <I> I createInner(T record, Object optionParam)
create(Object) 方法的最后一步调用I - 主键类型record - 待保存的实体对象optionParam - 可选参数,默认为 null 主键id,可以被子类覆盖重写protected <I> I getPrimaryKeyValue(T record)
@Transactional(rollbackFor=java.lang.Exception.class) public void createBatch(List<T> records, Object optionParam)
CrudServicecreateBatch in interface CrudService<T>records - 待保存的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void createBatch(List<T> records)
CrudServicecreateBatch in interface CrudService<T>records - 待保存的实体对象protected void createBatchCallable(List<T> records, Object optionParam, app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> createCallFunc)
records - 待保存的实体对象optionParam - 可选参数,默认为 null createCallFunc - 保存方法回调类,参考: createBatch( List, Object)protected void createBatchInner(List<T> records, Object optionParam)
createBatch(List) 方法的最后一步调用records - 待保存的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public <I> I save(T record)
CrudServicesave in interface CrudService<T>I - 主键类型record - 待保存的实体对象@Transactional(rollbackFor=java.lang.Exception.class) public <I> I save(T record, Object optionParam)
CrudServicesave in interface CrudService<T>I - 主键类型record - 待保存的实体对象optionParam - 可选参数,默认为 null protected <I> I saveInner(T record, Object optionParam)
create(Object) 方法的最后一步调用I - 主键类型record - 待保存的实体对象optionParam - 可选参数,默认为 null 主键id 参数,可以被子类覆盖重写@Transactional(rollbackFor=java.lang.Exception.class) public <I> I saveOrUpdate(T record)
CrudServicesaveOrUpdate in interface CrudService<T>I - 主键类型record - 待保存的实体对象@Transactional(rollbackFor=java.lang.Exception.class) public <I> I saveOrUpdate(T record, Object optionParam)
CrudServicesaveOrUpdate in interface CrudService<T>I - 主键类型record - 待保存的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void updateByPrimaryKey(T record, Object optionParam)
CrudServiceupdateByPrimaryKey in interface CrudService<T>record - 待更新的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void updateByPrimaryKey(T record)
CrudServiceupdateByPrimaryKey in interface CrudService<T>record - 待更新的实体对象protected void updateByPrimaryKeyCallable(T record, Object optionParam, app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> updateCallFunc)
record - 待更新的实体对象optionParam - 可选参数,默认为 null updateCallFunc - 更新方法回调类,参考:
updateByPrimaryKey( Object, Object)protected void updateByPrimaryKeyInner(T record, Object optionParam)
updateByPrimaryKey(Object) 方法的最后一步调用record - 待更新的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void updateByCondition(T record, T condition, Object optionParam)
CrudServiceupdateByCondition in interface CrudService<T>record - 待更新的实体对象condition - 匹配的条件optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void updateByCondition(T record, T condition)
CrudServiceupdateByCondition in interface CrudService<T>record - 待更新的实体对象condition - 匹配的条件protected void updateByConditionCallable(T record, T condition, Object optionParam, app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> updateCallFunc)
record - 待更新的实体对象condition - 匹配的条件optionParam - 可选参数,默认为 null updateCallFunc - 更新方法回调类,参考:
updateByCondition( Object, Object, Object)protected void updateByConditionInner(T record, T condition, Object optionParam)
updateByCondition(Object, Object) 方法的最后一步调用record - 待更新的实体对象condition - 匹配的条件optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void updateUseMapByCondition(Map<String,Object> record, T condition, Object optionParam)
CrudServiceupdateUseMapByCondition in interface CrudService<T>record - 待更新的实体对象,key:是实体类的属性名,value:是属性的值condition - 匹配的条件optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void updateUseMapByCondition(Map<String,Object> record, T condition)
CrudServiceupdateUseMapByCondition in interface CrudService<T>record - 待更新的实体对象,key:是实体类的属性名,value:是属性的值condition - 匹配的条件protected void updateUseMapByConditionCallable(Map<String,Object> record, T condition, Object optionParam, app.myoss.cloud.core.lang.concurrent.CallableFunc<Boolean> updateCallFunc)
record - 待更新的实体对象,key:是数据库列名,value:是数据库列的值condition - 匹配的条件optionParam - 可选参数,默认为 null updateCallFunc - 更新方法回调类,参考:
updateUseMapByCondition( Map, Object, Object)protected void updateUseMapByConditionInner(Map<String,Object> record, T condition, Object optionParam)
updateByCondition(Object, Object) 方法的最后一步调用record - 待更新的实体对象,key:是数据库列名,value:是数据库列的值condition - 匹配的条件optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void deleteByPrimaryKey(T condition, Object optionParam)
CrudServicedeleteByPrimaryKey in interface CrudService<T>condition - 匹配的条件,主键有值的实体对象optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void deleteByPrimaryKey(T condition)
CrudServicedeleteByPrimaryKey in interface CrudService<T>condition - 匹配的条件,主键有值的实体对象@Transactional(rollbackFor=java.lang.Exception.class) public void deleteByCondition(T condition, Object optionParam)
CrudServicedeleteByCondition in interface CrudService<T>condition - 匹配的条件optionParam - 可选参数,默认为 null @Transactional(rollbackFor=java.lang.Exception.class) public void deleteByCondition(T condition)
CrudServicedeleteByCondition in interface CrudService<T>condition - 匹配的条件public T findByPrimaryKey(Serializable id)
CrudServicefindByPrimaryKey in interface CrudService<T>id - 主键public T findByPrimaryKey(T condition)
CrudServicefindByPrimaryKey in interface CrudService<T>condition - 匹配的条件,主键有值的实体对象public T findOne(T condition)
CrudServicefindOne in interface CrudService<T>condition - 匹配的条件public List<T> findList(T condition)
CrudServicefindList in interface CrudService<T>condition - 匹配的条件public List<T> findListWithSort(app.myoss.cloud.core.lang.dto.Page<T> condition)
CrudServicefindListWithSort in interface CrudService<T>condition - 匹配的条件和排序字段public Integer findCount(T condition)
CrudServicefindCount in interface CrudService<T>condition - 匹配的条件public Integer findCount(T condition, Map<String,Object> extraCondition)
CrudServicefindCount in interface CrudService<T>condition - 匹配的条件extraCondition - 扩展查询条件,需要自定义public app.myoss.cloud.core.lang.dto.Page<T> findPage(app.myoss.cloud.core.lang.dto.Page<T> condition)
CrudServicefindPage in interface CrudService<T>condition - 匹配的条件protected void pageQuery(app.myoss.cloud.core.lang.dto.Page<T> result, T param, Map<String,Object> extraInfo, int pageStart, int pageSize, List<app.myoss.cloud.core.lang.dto.Order> orders)
public <DTO> app.myoss.cloud.core.lang.dto.Page<DTO> findPageByHelper(app.myoss.cloud.core.lang.dto.Page<DTO> condition)
CrudServicefindPageByHelper in interface CrudService<T>DTO - 范型类型condition - 匹配的条件Copyright © 2018–2022. All rights reserved.