@PropertySource(value="classpath:application.properties") public abstract class SysBaseService<T extends SysBaseEntity,TT extends SysBaseDao> extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
protected DBService |
dbService |
protected javax.persistence.EntityManager |
entityManager |
protected ThreadLocal<Boolean> |
isGroupBy |
protected ThreadLocal<Boolean> |
isQueryAll |
protected TT |
myDao |
protected QueryDslUtil |
queryDslUtil |
protected javax.servlet.http.HttpServletRequest |
request |
protected javax.servlet.http.HttpServletResponse |
response |
protected UidGeneratorService |
uidGeneratorService |
| 构造器和说明 |
|---|
SysBaseService() |
| 限定符和类型 | 方法和说明 |
|---|---|
protected void |
afterClean(List<T> data) |
protected void |
afterDeleteData(List<T> data) |
protected void |
afterSaveData(T data) |
protected void |
beforeClean(List<T> data) |
protected void |
beforeDeleteData(List<T> data) |
protected void |
beforeSaveData(T data) |
protected boolean |
bSureDelete() |
void |
checkAndSetByIsNew(T data)
检查并设置实体 by 新建的还是更新
|
void |
checkAndSetCodeFormula(List<TT> datas,
String[] codes,
String columnName)
检测和设置编码 多个
|
void |
checkAndSetCodeFormula(TT data,
String code,
String columnName)
检测和设置编码
|
protected void |
checkIsSystemCreate(T data)
进行操作的时候首先判断-由系统创建的不可删除和修改
|
protected void |
checkUnionField(T data)
检测字段的唯一新
|
void |
clean(Map map) |
void |
delete(List<T> dataList) |
void |
delete(T... dataArr)
delete删除
批量删除
执行insert update delete请确保dataList里面的的实体不能处于托管状态,不然事务结束jpa实体管理器也会自动提交保存(更新)
|
void |
deleteAll(List<T> data) |
org.springframework.data.domain.Page<T> |
get(javax.servlet.http.HttpServletRequest request,
Map<String,String> paramsMap) |
T |
get(long id)
获取一个实体对象
|
protected Map<String,String> |
getCheckFields() |
protected org.springframework.data.jpa.domain.Specification |
getCommonSpecification(javax.servlet.http.HttpServletRequest request,
Map<String,String> paramMap)
获取通用的筛选条件,前台请求的格式需要是sFieldName@sOperator=sValue , 无sOperator时默认为 不拼接的
|
protected int |
getCqCount(javax.persistence.criteria.CriteriaQuery cq,
javax.persistence.criteria.CriteriaBuilder builder)
获取查询语句的count
|
List<T> |
getCustomWithMap(Map map) |
List<T> |
getCustomWithMapString(String mapstr) |
protected javax.persistence.criteria.Selection |
getFunSl(String cFunc,
javax.persistence.criteria.CriteriaBuilder cb,
javax.persistence.criteria.Path p) |
protected org.springframework.data.jpa.domain.Specification |
getJpaSpecification(Map<String,String> paramMap)
条件构造器
通过Map获取jpa Specification
|
T |
getOneCustomWithMapString(String mapstr) |
T |
getOneWithMapString(String mapstr) |
protected javax.persistence.criteria.Predicate |
getPredicate(String key,
Object value,
javax.persistence.criteria.CriteriaBuilder builder,
javax.persistence.criteria.Root<T> root)
构建查询条件
|
protected List<javax.persistence.criteria.Predicate> |
getPredicatesByMap(Map map,
javax.persistence.criteria.Root root,
javax.persistence.criteria.CriteriaBuilder builder) |
List<javax.persistence.criteria.Predicate> |
getQueryConditionByRequest(javax.persistence.criteria.Root root,
javax.persistence.criteria.CriteriaBuilder builder,
javax.servlet.http.HttpServletRequest request)
获取查询条件 by 请求体
|
List<T> |
getWithMap(Map<String,String> mp) |
List<T> |
getWithMapString(String mapstr) |
void |
init() |
void |
insert(List<T> dataList) |
void |
insert(T... dataArr)
insert语句
执行insert update delete请确保dataList里面的的实体不能处于托管状态,不然事务结束jpa实体管理器也会自动提交保存(更新)
data需要是完整的实体
|
protected boolean |
isQueryAll() |
Result |
put(List<T> datas) |
List<Map<String,Object>> |
queryByGroup(Map whereMap,
String[] groupKey,
Map groupMap)
根据分组条件查询
此接口仅仅供后端调用!!
|
List<Map<String,Object>> |
queryByGroup(Map whereMap,
String[] groupKey,
Map groupMap,
javax.servlet.http.HttpServletRequest request) |
protected javax.persistence.criteria.CriteriaQuery |
queryByGroup(String groupValue,
javax.persistence.criteria.CriteriaBuilder builder,
javax.persistence.criteria.Root<TT> root1,
javax.persistence.criteria.CriteriaQuery cq)
根据分组条件查询
api调用
如:groupBy=id,code
|
T |
save(T data) |
void |
update(List<T> dataList) |
void |
update(T... dataArr)
update语句
执行insert update delete请确保dataList里面的的实体不能处于托管状态,不然事务结束jpa实体管理器也会自动提交保存(更新)
data需要是完整的实体
|
@Autowired protected javax.servlet.http.HttpServletRequest request
@Autowired protected javax.servlet.http.HttpServletResponse response
@Autowired protected TT extends SysBaseDao myDao
@Autowired protected javax.persistence.EntityManager entityManager
@Autowired protected QueryDslUtil queryDslUtil
@Autowired protected UidGeneratorService uidGeneratorService
@Autowired protected DBService dbService
protected ThreadLocal<Boolean> isQueryAll
protected ThreadLocal<Boolean> isGroupBy
protected boolean isQueryAll()
@PostConstruct public void init()
protected boolean bSureDelete()
protected int getCqCount(javax.persistence.criteria.CriteriaQuery cq,
javax.persistence.criteria.CriteriaBuilder builder)
cq - 语句builder - buildprotected javax.persistence.criteria.CriteriaQuery queryByGroup(String groupValue, javax.persistence.criteria.CriteriaBuilder builder, javax.persistence.criteria.Root<TT> root1, javax.persistence.criteria.CriteriaQuery cq)
public org.springframework.data.domain.Page<T> get(javax.servlet.http.HttpServletRequest request, Map<String,String> paramsMap)
protected org.springframework.data.jpa.domain.Specification getCommonSpecification(javax.servlet.http.HttpServletRequest request,
Map<String,String> paramMap)
request - public List<javax.persistence.criteria.Predicate> getQueryConditionByRequest(javax.persistence.criteria.Root root, javax.persistence.criteria.CriteriaBuilder builder, javax.servlet.http.HttpServletRequest request)
root - builder - request - protected List<javax.persistence.criteria.Predicate> getPredicatesByMap(Map map, javax.persistence.criteria.Root root, javax.persistence.criteria.CriteriaBuilder builder)
protected javax.persistence.criteria.Predicate getPredicate(String key, Object value, javax.persistence.criteria.CriteriaBuilder builder, javax.persistence.criteria.Root<T> root)
key - 如:A@EQ A.B@IN A@LIKE A_EQ,B_LIKE@OR
多字段OR查询 A_EQ,B_LIKE@OR = (A@EQ=value or B@LIKE=value)
也可省略_EQ,_LIKE 默认_EQ@Transactional(rollbackFor=java.lang.Exception.class) public Result put(List<T> datas)
@Transactional(rollbackFor=java.lang.Exception.class) public T save(T data)
@Transactional(rollbackFor=java.lang.Exception.class) public void deleteAll(List<T> data)
@Transactional(rollbackFor=java.lang.Exception.class) public void clean(Map map)
protected void beforeSaveData(T data)
protected void afterSaveData(T data)
protected void checkUnionField(T data) throws Exception
data - 新插入|修改的数据Exceptionprotected void checkIsSystemCreate(T data)
data - 实体类数据public void checkAndSetCodeFormula(TT data, String code, String columnName) throws Exception
Exceptionpublic void checkAndSetCodeFormula(List<TT> datas, String[] codes, String columnName) throws Exception
Exceptionpublic List<Map<String,Object>> queryByGroup(Map whereMap, String[] groupKey, Map groupMap)
whereMap - 查询条件(xxx.yyyEQ=,...) 解析规则和baseService,get方法一样groupKey - groupMap - 分组条件 (“xxxx.yyy as xy”,sum),
分组条件 (“xxxx.yyy as xy_sum,count_sum”,"sum,count"),
* * 前面数属性,后面是聚合函数
分组之后如果有聚合函数_属性名就是聚合函数名(默认)
注意:
concat操作 如果需要使用别名 需要确保连接的字符串不能包含:(英文)
{A,B,C}这种格式的返回值 都会去掉前后的括号{A:A,B:B}这种不会
如果value里面含有:且需要需要去掉前后{} 不实用as赋予别名public List<Map<String,Object>> queryByGroup(Map whereMap, String[] groupKey, Map groupMap, javax.servlet.http.HttpServletRequest request)
protected javax.persistence.criteria.Selection getFunSl(String cFunc, javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.Path p)
public T get(long id)
protected org.springframework.data.jpa.domain.Specification getJpaSpecification(Map<String,String> paramMap)
paramMap - 格式与get方法保持一致public void checkAndSetByIsNew(T data)
data - public void insert(T... dataArr)
public void update(T... dataArr)
public void delete(T... dataArr)
Copyright © 2021. All rights reserved.