Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
cn.net.vidyo.yd.common.data.dao.CommonJpaRepositoryImpl Maven / Gradle / Ivy
package cn.net.vidyo.yd.common.data.dao;
import org.hibernate.annotations.Table;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.lang.annotation.Annotation;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
@NoRepositoryBean
@Transactional
public class CommonJpaRepositoryImpl extends SimpleJpaRepository implements CommonJpaRepository {
@Autowired
EntityManager entityManager;
Class entityClass;
RepositoryInformation repositoryInformation;
public CommonJpaRepositoryImpl(Class entityClass, EntityManager entityManager, RepositoryInformation entityInformation) {
super(entityClass, entityManager);
this.entityManager = entityManager;
this.repositoryInformation = entityInformation;
this.entityClass = entityClass;
}
public List findByIds(ID ... ids){
List list = new ArrayList<>();
for (ID id : ids) {
list.add(id);
}
return findAllById(list);
}
//
@Transactional
public T getByWhere( String where, Object ...params){
return executeGetByWhere(getEntityTableName(), where, params);
}
@Transactional
public List findByWhere(String where, Object ...params) {
return executeFindByWhere(getEntityTableName(), where, params);
}
@Transactional
public Map getMapByWhere(String select, String where, Object ...params){
return executeGetMapByWhere(getEntityTableName(), select, where, params);
}
@Transactional
public List findMapByWhere(String select, String where, Object ...params) {
return executeFindMapByWhere(getEntityTableName(), select, where, params);
}
@Transactional
public List findColumnListByWhere(Class columnClass, String column, String where, Object ...params) {
return executeFindColumnListByWhere(columnClass,getEntityTableName(), column, where, params);
}
@Transactional
public Object getResponseValueByWhere(String select, String where, Object ...params){
return executeGetResponseValueByWhere(getEntityTableName(), select, where, params);
}
@Transactional
public Page findPageByWhere(Pageable pageable, String where, Object ...params) {
return executeFindPageByWhere( getEntityTableName(),pageable, where, params);
}
@Transactional
public Page findPageMapByWhere(Pageable pageable, String select, String where, Object ...params) {
return executeFindPageMapByWhere(getEntityTableName(),pageable, select, where, params);
}
@Transactional
public int delectByWhere(String where, Object ...params) {
return executeDelectByWhere(getEntityTableName(), where, params);
}
@Transactional
public int updateByWhere(String updateSql, String where, Object ...params) {
return executeUpdateByWhere(getEntityTableName(),updateSql, where, params);
}
@Transactional
public int insertSql(String fieldsSql, String valueSql, Object ...params) {
return executeInsertSql(getEntityTableName(), fieldsSql, valueSql, params);
}
@Transactional
public int dropTable(Class... entityClass) {
int index=0;
for (Class aClass : entityClass) {
index+=executeDropTableSql(getTableName(aClass));
}
return index;
}
@Transactional
public int truncateTable(Class... entityClass) {
int index=0;
for (Class aClass : entityClass) {
index+=executeDropTableSql(getTableName(aClass));
}
return index;
}
@Override
public T insert(T entity) {
if(outLog("")) return entity;
this.entityManager.persist(entity);
return entity;
}
@Override
public T update(T entity) {
if(outLog("")) return entity;
return this.entityManager.merge(entity);
}
//
//
@Transactional
public T executeGetByWhere(String tablename, String where, Object ...params){
List list = executeFindByWhere(tablename, where, params);
if(list==null || list.size()==0){
return null;
}
return list.get(0);
}
@Transactional
public List executeFindByWhere(String tablename, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildQuerySql(tablename,"*", where, params);
String sqlText = sqlItem.getSqlText();
Query query = entityManager.createNativeQuery(sqlText,getEntityClass());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
List list = query.getResultList();
return list;
}
@Transactional
public Map executeGetMapByWhere(String tablename, String select, String where, Object ...params){
List list = executeFindMapByWhere(tablename, select, where, params);
if(list==null || list.size()==0){
return null;
}
return list.get(0);
}
@Transactional
public List executeFindMapByWhere(String tablename, String select, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildQuerySql(tablename,select, where, params);
String sqlText = sqlItem.getSqlText();
Query query = entityManager.createNativeQuery(sqlText);
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
// query.getResultList()
query.unwrap(NativeQueryImpl.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List list = (List) query.getResultList();
return list;
}
@Transactional
public List executeFindColumnListByWhere(Class columnClass, String tablename, String column, String where, Object ...params) {
List maps = executeFindMapByWhere(tablename, column, where, params);
List items =new ArrayList<>();
for (Map map : maps) {
items.add((S)map.get(column));
}
return items;
}
@Transactional
public Page executeFindPageByWhere(String tablename,Pageable pageable, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildQuerySql(tablename,"count(*)", where, params);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
long count = ((BigInteger) query.getSingleResult()).longValue();
int begin=(pageable.getPageNumber())*pageable.getPageSize();
int size=pageable.getPageSize();
where = where+" limit " +begin +","+size;
List list = executeFindByWhere(tablename, where, params);
PageImpl page=new PageImpl(list,pageable,count);
return page;
}
@Transactional
public Page executeFindPageMapByWhere(String tablename,Pageable pageable, String select, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildQuerySql(tablename,"count(*)", where, params);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
long count = ((BigInteger) query.getSingleResult()).longValue();
int begin=(pageable.getPageNumber())*pageable.getPageSize();
int size=pageable.getPageSize();
where = where+" limit " +begin +","+size;
List list = executeFindMapByWhere(tablename, select, where, params);
PageImpl page=new PageImpl(list,pageable,count);
return page;
}
@Transactional
public Object executeGetResponseValueByWhere(String tablename,String select, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildQuerySql(tablename,select, where, params);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
return query.getSingleResult();
}
@Transactional
public int executeDelectByWhere(String tablename, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildDeleteSql(tablename, where, params);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
return query.executeUpdate();
}
@Transactional
public int executeUpdateByWhere(String tablename,String updateSql, String where, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildUpdateSql(tablename, updateSql, where, params);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
return query.executeUpdate();
}
@Transactional
public int executeInsertSql(String tablename,String fieldsSql, String valueSql, Object ...params) {
SqlItem sqlItem = SqlBuilder.buildInsertSql(tablename, fieldsSql, valueSql, params);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
int index=1;
for (Object param:params){
query.setParameter(index,param);
index++;
}
return query.executeUpdate();
}
@Transactional
public int executeDropTableSql(String tablename) {
SqlItem sqlItem = SqlBuilder.buildDropTableSql(tablename);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
return query.executeUpdate();
}
@Transactional
public int executeTruncateTableSql(String tablename) {
SqlItem sqlItem = SqlBuilder.buildTruncateTableSql(tablename);
Query query = entityManager.createNativeQuery(sqlItem.getSqlText());
return query.executeUpdate();
}
String replacePlaceholder(String content,String regex,int beginIndex,String replaceRegex){
int pos = content.indexOf(regex);
if(pos<=0){
return content;
}
int pre=0;
StringBuilder sql = new StringBuilder();
while (pos>=0){
sql.append(content.substring(pre,pos-pre));
sql.append(replaceRegex+""+beginIndex);
content=content.substring(pos+regex.length());
pos = content.indexOf(regex);
}
if(content.length()>0){
sql.append(content);
}
return sql.toString();
}
String replacePlaceholder(String content,int beginIndex){
return replacePlaceholder(content,"?",beginIndex,"?");
}
//
public List findByName(String name) {
Class entityClass = getEntityClass();
return findByWhere("*","name=?",name);
}
@Override
public Class getEntityClass() {
return entityClass;
}
protected String getEntityTableName(){
return getTableName(getEntityClass()).toLowerCase();
}
protected String getTableName(Class entityClass) {
Annotation entityAnnotation = entityClass.getAnnotation(Entity.class);
if(entityAnnotation==null){
new IllegalAccessError(entityClass+" not entity object.");
}
String name=entityClass.getSimpleName();
Annotation tableAnnotation = entityClass.getAnnotation(Table.class);
if(tableAnnotation!=null){
Table table=(Table) tableAnnotation;
if(table.appliesTo()!=null && table.appliesTo().length()>0){
name=table.appliesTo();
}
}
return name;
}
boolean outLog(String message){
// System.out.println(message);
// return getKskksk();
return false;
}
}