类 BaseServiceImpl<T extends BaseEntity,ID,BR extends BaseRepository>
- java.lang.Object
-
- java.util.Observable
-
- me.youm.frame.jpa.base.service.impl.BaseServiceImpl<T,ID,BR>
-
- 所有已实现的接口:
Observer,IBaseService<T,ID>
@Transactional public class BaseServiceImpl<T extends BaseEntity,ID,BR extends BaseRepository> extends Observable implements IBaseService<T,ID>, Observer
这个类是BaseServcie的实现类,组件的实现类可以继承这个类来利用可以用的方法 继承JDK中的Observable,是为了是观察者模式来处理多表缓存的一致性 继承Observable,说明自己可以被别人观察,实现Observer说明自己也可以观察别人
-
-
构造器概要
构造器 构造器 说明 BaseServiceImpl()Description:无参构造函数,获得T1的clazz对象
-
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 List<T>advancedQuery(T entity)Description: 不分页的高级查询,无条件时,最多返回最新的25条记录org.springframework.data.domain.Page<T>advancedQuery(T entity, org.springframework.data.domain.Pageable pageable)Description: 高级查询带分页的功能,如果没有查询条件,仅分页返回SetadvanceSearchProperty(String property, String value)查询某个属性集合,不包含重复数据private Map<String,List<BaseSearchField>>checkHasGroup(Set<BaseSearchField> conditions)检测条件中是否含有分组信息private voidcheckPropertyAndValueValidity(T entity)Description:检查属性名和属性值的合法性,不合法的属性和值都会被移除longcount()Description:<S extends T>
longcount(org.springframework.data.domain.Example<S> example)Returns the number of instances matching the givenExample.voiddelete(T var1)Description:voiddeleteAll()Description:voiddeleteAll(Iterable<? extends T> var1)Description:intdeleteAllById(Iterable<ID> var1)Description:使用主键批量删除voiddeleteAllInBatch()Description:voiddeleteById(ID var1)根据id查询voiddeleteInBatch(Iterable<T> var1)Description:<S extends T>
booleanexists(org.springframework.data.domain.Example<S> example)Checks whether the data store contains elements that match the givenExample.booleanexistsByEntityProperty(String propertyName, String propertyValue)Description: 根据实体的属性名称判断,实体是否存在, 注意:使用此方法,要自己保证属性名称的正确性,否则抛异常!booleanexistsById(ID var1)Description: 根据ID检查实体是否存在Iterable<T>findAll()Description:<S extends T>
List<S>findAll(org.springframework.data.domain.Example<S> var1)Returns all entities matching the givenExample.<S extends T>
org.springframework.data.domain.Page<S>findAll(org.springframework.data.domain.Example<S> example, org.springframework.data.domain.Pageable pageable)Returns aPageof entities matching the givenExample.<S extends T>
List<S>findAll(org.springframework.data.domain.Example<S> var1, org.springframework.data.domain.Sort var2)Returns all entities matching the givenExampleapplying the givenSort.org.springframework.data.domain.Page<T>findAll(org.springframework.data.domain.Pageable var1)Description:Iterable<T>findAll(org.springframework.data.domain.Sort var1)Description:Iterable<T>findAllById(Iterable<ID> var1)Description:Optional<T>findById(ID var1)Description:<S extends T>
Optional<S>findOne(org.springframework.data.domain.Example<S> example)Returns a single entity matching the givenExampleor null if none was found.voidflush()Description:private javax.persistence.criteria.PredicategenPredicate4SingleGroup(List<BaseSearchField> fields, javax.persistence.criteria.Root<T> root, javax.persistence.criteria.CriteriaBuilder cb, T entity)处理单个组内的条件生成TgetOne(ID id)Description:private Class<?>getPropType(String key, T entity)Description:利用反射获取属性的反射类型private StringgetPropTypeString(String key, T entity)Description:利用反射获取属性的字符串类型private org.springframework.data.jpa.domain.Specification<Object>getSpec4PropSetByLike(String property, String value)构造查询条件: 获取某个属性的模糊查询匹配的不重复集合,通常数据给ui界面选择使用private org.springframework.data.jpa.domain.Specification<T>getSpecification(T entity)Description: 根据条件集合构建查询的表达式private org.springframework.data.jpa.domain.Specification<T>handleGroupsCondition(Map<String,List<BaseSearchField>> groups, T entity)处理多个分组条件的,条件查询构造private org.springframework.data.jpa.domain.Specification<T>handleSingleGroupCondition(List<BaseSearchField> fields, T entity)处理同一个组内查询条件的查询条件转换private booleanisPropertyIllegal(String property)检查属性名是否非法voidnotifyOthers(Object arg)自己的状态改变了,通知所有依赖自己的组件进行缓存清除, 通常的增删改的方法都需要调用这个方法,来维持 cache right!voidregistObservers(Observer... observers)注册观察者,即哪些组件观察自己,让子类调用此方法实现观察者注册<S extends T>
Ssave(S var1)Description:<S extends T>
Iterable<S>saveAll(Iterable<S> var1)Description:<S extends T>
SsaveAndFlush(S var1)Description:voidupdate(Observable o, Object arg)这是观察别人,别人更新了之后来更新自己的<S extends T>
Supdate(S var1)Description:更新实体的方法,很多时候保存和更新的处理逻辑是不一样的,权限也是不一样的,所以单独分开-
从类继承的方法 java.util.Observable
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
-
-
-
-
字段详细资料
-
em
protected javax.persistence.EntityManager em
-
clazz
protected Class<T extends BaseEntity> clazz
Description:获取T的Class对象是关键,看构造方法
-
br
@Autowired public BR extends BaseRepository br
Description:注入需要的Repository接口的代理类
-
-
方法详细资料
-
findAll
public Iterable<T> findAll()
从接口复制的说明:IBaseServiceDescription:- 指定者:
findAll在接口中IBaseService<T extends BaseEntity,ID>- 返回:
- Iterable
-
findAll
public org.springframework.data.domain.Page<T> findAll(org.springframework.data.domain.Pageable var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
findAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 分页对象- 返回:
- Page
-
findAll
public Iterable<T> findAll(org.springframework.data.domain.Sort var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
findAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- sort对象- 返回:
- Iterable
-
findAllById
public Iterable<T> findAllById(Iterable<ID> var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
findAllById在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 可迭代的id集合- 返回:
- java.lang.Iterable
-
getOne
public T getOne(ID id)
从接口复制的说明:IBaseServiceDescription:- 指定者:
getOne在接口中IBaseService<T extends BaseEntity,ID>- 参数:
id- id- 返回:
- T
-
findById
public Optional<T> findById(ID var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
findById在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- id- 返回:
- java.util.Optional
-
findOne
public <S extends T> Optional<S> findOne(org.springframework.data.domain.Example<S> example)
从接口复制的说明:IBaseServiceReturns a single entity matching the givenExampleor null if none was found.- 指定者:
findOne在接口中IBaseService<T extends BaseEntity,ID>- 参数:
example- must not be null.- 返回:
- a single entity matching the given
ExampleorOptional.empty()if none was found.
-
findAll
public <S extends T> List<S> findAll(org.springframework.data.domain.Example<S> var1)
从接口复制的说明:IBaseServiceReturns all entities matching the givenExample. In case no match could be found an emptyIterableis returned.- 指定者:
findAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- must not be null.- 返回:
- all entities matching the given
Example.
-
findAll
public <S extends T> List<S> findAll(org.springframework.data.domain.Example<S> var1, org.springframework.data.domain.Sort var2)
从接口复制的说明:IBaseServiceReturns all entities matching the givenExampleapplying the givenSort. In case no match could be found an emptyIterableis returned.- 指定者:
findAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- must not be null.var2- theSortspecification to sort the results by, must not be null.- 返回:
- all entities matching the given
Example.
-
findAll
public <S extends T> org.springframework.data.domain.Page<S> findAll(org.springframework.data.domain.Example<S> example, org.springframework.data.domain.Pageable pageable)
从接口复制的说明:IBaseServiceReturns aPageof entities matching the givenExample. In case no match could be found, an emptyPageis returned.- 指定者:
findAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
example- must not be null.pageable- can be null.- 返回:
- a
Pageof entities matching the givenExample.
-
saveAll
public <S extends T> Iterable<S> saveAll(Iterable<S> var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
saveAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 可迭代的实体集合- 返回:
- java.lang.Iterable
-
flush
public void flush()
从接口复制的说明:IBaseServiceDescription:- 指定者:
flush在接口中IBaseService<T extends BaseEntity,ID>
-
saveAndFlush
public <S extends T> S saveAndFlush(S var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
saveAndFlush在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 实体- 返回:
- S
-
save
public <S extends T> S save(S var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
save在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 实体- 返回:
- S
-
delete
public void delete(T var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
delete在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 实体
-
deleteById
public void deleteById(ID var1)
从接口复制的说明:IBaseService根据id查询- 指定者:
deleteById在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- id
-
deleteAll
public void deleteAll()
从接口复制的说明:IBaseServiceDescription:- 指定者:
deleteAll在接口中IBaseService<T extends BaseEntity,ID>
-
deleteAll
public void deleteAll(Iterable<? extends T> var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
deleteAll在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 可迭代的对象
-
deleteAllInBatch
public void deleteAllInBatch()
从接口复制的说明:IBaseServiceDescription:- 指定者:
deleteAllInBatch在接口中IBaseService<T extends BaseEntity,ID>
-
deleteInBatch
public void deleteInBatch(Iterable<T> var1)
从接口复制的说明:IBaseServiceDescription:- 指定者:
deleteInBatch在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 可迭代的对象
-
existsById
public boolean existsById(ID var1)
从接口复制的说明:IBaseServiceDescription: 根据ID检查实体是否存在- 指定者:
existsById在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- id主键- 返回:
- boolean true存在,false 不存在
-
count
public long count()
从接口复制的说明:IBaseServiceDescription:- 指定者:
count在接口中IBaseService<T extends BaseEntity,ID>- 返回:
- long
-
count
public <S extends T> long count(org.springframework.data.domain.Example<S> example)
从接口复制的说明:IBaseServiceReturns the number of instances matching the givenExample.- 指定者:
count在接口中IBaseService<T extends BaseEntity,ID>- 参数:
example- theExampleto count instances for. Must not be null.- 返回:
- the number of instances matching the
Example.
-
exists
public <S extends T> boolean exists(org.springframework.data.domain.Example<S> example)
从接口复制的说明:IBaseServiceChecks whether the data store contains elements that match the givenExample.- 指定者:
exists在接口中IBaseService<T extends BaseEntity,ID>- 参数:
example- theExampleto use for the existence check. Must not be null.- 返回:
- true if the data store contains elements that match the given
Example.
-
existsByEntityProperty
public boolean existsByEntityProperty(String propertyName, String propertyValue) throws NoSuchFieldException
从接口复制的说明:IBaseServiceDescription: 根据实体的属性名称判断,实体是否存在, 注意:使用此方法,要自己保证属性名称的正确性,否则抛异常!- 指定者:
existsByEntityProperty在接口中IBaseService<T extends BaseEntity,ID>- 参数:
propertyName- 实体的属性名,暂时支持字符串类型propertyValue- 实体的属性名对应的值,仅支持简单的基本类型的值为字符串的,不支持其他的自定义类的类型- 返回:
- boolean true实体存在;false 不存在。
- 抛出:
NoSuchFieldException
-
deleteAllById
public int deleteAllById(Iterable<ID> var1)
从接口复制的说明:IBaseServiceDescription:使用主键批量删除- 指定者:
deleteAllById在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 可迭代的id集合- 返回:
- int
-
update
public <S extends T> S update(S var1)
从接口复制的说明:IBaseServiceDescription:更新实体的方法,很多时候保存和更新的处理逻辑是不一样的,权限也是不一样的,所以单独分开- 指定者:
update在接口中IBaseService<T extends BaseEntity,ID>- 参数:
var1- 要更新的实体- 返回:
- S
-
advancedQuery
public List<T> advancedQuery(T entity)
Description: 不分页的高级查询,无条件时,最多返回最新的25条记录- 指定者:
advancedQuery在接口中IBaseService<T extends BaseEntity,ID>- 参数:
entity- 包含高级查询条件的实体- 返回:
- java.util.List
-
advancedQuery
public org.springframework.data.domain.Page<T> advancedQuery(T entity, org.springframework.data.domain.Pageable pageable)
Description: 高级查询带分页的功能,如果没有查询条件,仅分页返回- 指定者:
advancedQuery在接口中IBaseService<T extends BaseEntity,ID>- 参数:
entity- 包含高级查询条件的实体pageable- 分页参数对象- 返回:
- org.springframework.data.domain.Page
-
advanceSearchProperty
public Set advanceSearchProperty(String property, String value)
从接口复制的说明:IBaseService查询某个属性集合,不包含重复数据- 指定者:
advanceSearchProperty在接口中IBaseService<T extends BaseEntity,ID>- 参数:
property- 驼峰式的属性value- 模糊查询的value值- 返回:
- Set 集合
-
checkPropertyAndValueValidity
private void checkPropertyAndValueValidity(T entity)
Description:检查属性名和属性值的合法性,不合法的属性和值都会被移除
-
getSpecification
private org.springframework.data.jpa.domain.Specification<T> getSpecification(T entity)
Description: 根据条件集合构建查询的表达式- 返回:
- org.springframework.data.jpa.domain.Specification
-
getSpec4PropSetByLike
private org.springframework.data.jpa.domain.Specification<Object> getSpec4PropSetByLike(String property, String value)
构造查询条件: 获取某个属性的模糊查询匹配的不重复集合,通常数据给ui界面选择使用- 参数:
property- 要查询的属性value- 属性值,可以为空串- 返回:
-
getPropTypeString
private String getPropTypeString(String key, T entity)
Description:利用反射获取属性的字符串类型- 返回:
- java.lang.String
-
isPropertyIllegal
private boolean isPropertyIllegal(String property)
检查属性名是否非法- 参数:
property-- 返回:
- true--非法;false--合法
-
handleGroupsCondition
private org.springframework.data.jpa.domain.Specification<T> handleGroupsCondition(Map<String,List<BaseSearchField>> groups, T entity)
处理多个分组条件的,条件查询构造
-
handleSingleGroupCondition
private org.springframework.data.jpa.domain.Specification<T> handleSingleGroupCondition(List<BaseSearchField> fields, T entity)
处理同一个组内查询条件的查询条件转换
-
genPredicate4SingleGroup
private javax.persistence.criteria.Predicate genPredicate4SingleGroup(List<BaseSearchField> fields, javax.persistence.criteria.Root<T> root, javax.persistence.criteria.CriteriaBuilder cb, T entity)
处理单个组内的条件生成
-
checkHasGroup
private Map<String,List<BaseSearchField>> checkHasGroup(Set<BaseSearchField> conditions)
检测条件中是否含有分组信息
-
registObservers
public void registObservers(Observer... observers)
注册观察者,即哪些组件观察自己,让子类调用此方法实现观察者注册- 指定者:
registObservers在接口中IBaseService<T extends BaseEntity,ID>
-
notifyOthers
public void notifyOthers(Object arg)
自己的状态改变了,通知所有依赖自己的组件进行缓存清除, 通常的增删改的方法都需要调用这个方法,来维持 cache right!- 指定者:
notifyOthers在接口中IBaseService<T extends BaseEntity,ID>- 参数:
arg- 通知观察者时可以传递礼物arg,即数据,如果不需要数据就传递null;
-
update
public void update(Observable o, Object arg)
这是观察别人,别人更新了之后来更新自己的- 指定者:
update在接口中IBaseService<T extends BaseEntity,ID>- 指定者:
update在接口中Observer- 参数:
o- 被观察的对象arg- 传递的数据
-
-