<jpa:repositories base-package="com.jit.ota4.*.*.repository" repository-impl-postfix="Impl" factory-class="com.jit.ota4.basic.repository.BaseRepositoryFactoryBean" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager"/>
public class BaseRepositoryFactoryBean<R extends JpaRepository<S, ID>, S, ID extends Serializable>
extends JpaRepositoryFactoryBean<R, S, ID>{
@
Override protected RepositoryFactorySupport createRepositoryFactory(EntityManager e) {
return new BaseRepositoryFactory(e);
}
}
public class BaseRepositoryFactory<S,ID extends Serializable> extends JpaRepositoryFactory {
public BaseRepositoryFactory(EntityManager entityManager) {
super(entityManager);
}
@
Override protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
return BaseRepository.class;
}
@
Override protected <T, ID extends Serializable> SimpleJpaRepository<?, ?> getTargetRepository(RepositoryInformation information, EntityManager entityManager) {
return new BaseRepositoryImpl(information.getDomainType(), entityManager);
}
}
public interface BaseRepository<T,ID extends Serializable> extends JpaRepository<T,ID>,JpaSpecificationExecutor<T> {
/**
* @
param sql 原生 sql 语句
* @
param param 动态执行参数 type:List
* @
return 返回执行的结果集条数
*/
public int executeUpdateBySQL(String sql,List<Object> param);
/**
* @
param sql 原生 sql 语句
* @
param param 动态执行参数 type:Map
* @
return 返回执行的结果集条数
*/
public int executeUpdateBySQL(String sql,Map<String,Object> param);
/**
* @
param hql hql 语句
* @
param param 动态执行参数 type:List
* @
return 返回执行的结果集条数
*/
public int executeUpdateByHql(String hql,List<Object> param);
/**
* @
param hql hql 语句
* @
param param 动态执行参数 type:Map
* @
return 返回执行的结果集条数
*/
public int executeUpdateByHql(String hql,Map<String,Object> param);
/**
* @
param hql hql 语句
* @
param param 动态查询参数 type:List
* @
param t 单实例类型
* @
return 单实例结果集
*/
public List<T> findByHql(String hql,List<Object> param,Class<T> t);
/**
* @
param hql hql 语句
* @
param param 动态查询参数 type:List
* @
param t 单实例类型
* @
param pageNo 页码数
* @
param pageSize 每页条数
* @
return 单实例结果集
*/
public List<T> findByHqlWithPage(String hql,List<Object> param,Class<T> t,int pageNo,int pageSize);
/**
* @
param hql hql 语句
* @
param param 动态查询参数 type:List
* @
return 自定义字段返回结果集
*/
public List<Object[]> findByHql(String hql,List<Object> param);
/**
* @
param hql hql 语句
* @
param param 动态查询参数 type:List
* @
param pageNo 页码数
* @
param pageSize 每页条数
* @
return 自定义字段返回结果集
*/
public List<Object[]> findByHqlWithPage(String hql,List<Object> param,int pageNo,int pageSize);
/**
* @
param sql 原生 sql 语句
* @
param param 动态查询参数 type:List
* @
return 执行原生 sql 返回结果集
*/
public List<Object[]> findBySQL(String sql,List<Object> param);
/**
* @
param sql 原生 sql 语句
* @
param param 动态查询参数 type:List
* @
param pageNo 页码数
* @
param pageSize 每页条数
* @
return */
public List<Object[]> findBySQLWithPage(String sql,List<Object> param ,int pageNo,int pageSize);
}