查询记录中的特定字段

yun-zuoyi
administrator 1 year ago
parent 3d36dc9437
commit 8e8e191262

@ -3,7 +3,9 @@ package cn.estsh.i3plus.pojo.base.bean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
/** /**
* @Description : hql * @Description : hql
@ -25,6 +27,19 @@ public class DdlPackBean {
*/ */
private HashMap<String,Object> hqlPreparedMap; private HashMap<String,Object> hqlPreparedMap;
public List<String> getHqlColumns() {
return hqlColumns;
}
public void setHqlColumns(List<String> hqlColumns) {
this.hqlColumns = hqlColumns;
}
/**
* select column1,column2 from
*/
private List<String> hqlColumns;
//是否是hql //是否是hql
private boolean isHql; private boolean isHql;
@ -44,15 +59,43 @@ public class DdlPackBean {
this.isHql = true; this.isHql = true;
whereAppend = new StringBuilder(); whereAppend = new StringBuilder();
hqlPreparedMap = new HashMap<>(); hqlPreparedMap = new HashMap<>();
hqlColumns = new ArrayList<>();
} }
public DdlPackBean(boolean isHql){ public DdlPackBean(boolean isHql){
this.isHql = isHql; this.isHql = isHql;
whereAppend = new StringBuilder(); whereAppend = new StringBuilder();
hqlPreparedMap = new HashMap<>(); hqlPreparedMap = new HashMap<>();
hqlColumns = new ArrayList<>();
} }
/** /**
*
* @param hqlColumns
* @return
*/
public static DdlPackBean getDdlPackBean(List<String> hqlColumns){
DdlPackBean result = new DdlPackBean();
result.setHqlColumns(hqlColumns);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",result);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",result);
return result;
}
/**
*
* @param hqlColumns
* @return
*/
public static DdlPackBean getDdlPackBean(List<String> hqlColumns,String organizeCode){
DdlPackBean result = new DdlPackBean();
result.setHqlColumns(hqlColumns);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",result);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",result);
DdlPreparedPack.getStringEqualPack(organizeCode,"organizeCode",result);
return result;
}
/**
* *
* @param organizeCode * @param organizeCode
* @return * @return

@ -94,6 +94,7 @@ public interface BaseRepository <T, ID extends Serializable> extends JpaReposito
/** /**
* *
*/ */
@Override
void deleteById(ID id); void deleteById(ID id);
int deleteByProperty(String propName, Object propValue); int deleteByProperty(String propName, Object propValue);
int deleteByPropertyIn(String propName, Object[] propValues); int deleteByPropertyIn(String propName, Object[] propValues);
@ -239,6 +240,14 @@ public interface BaseRepository <T, ID extends Serializable> extends JpaReposito
T getByProperty(DdlPackBean packBean); T getByProperty(DdlPackBean packBean);
/**
*
* @param ddlPackBean
* @param queryColumns
* @return
*/
List<T> getByProperty(DdlPackBean ddlPackBean, boolean queryColumns);
T getByProperty(String propertyName, Object value); T getByProperty(String propertyName, Object value);
T getByProperty(String[] propertyNames, Object[] values); T getByProperty(String[] propertyNames, Object[] values);
@ -266,6 +275,14 @@ public interface BaseRepository <T, ID extends Serializable> extends JpaReposito
List<T> findByHqlWhere(DdlPackBean packBean); List<T> findByHqlWhere(DdlPackBean packBean);
/**
*
* @param packBean
* @param queryColumns
* @return
*/
List<T> findByHqlWhere(DdlPackBean packBean, boolean queryColumns);
List<T> findByHqlWhere(String hqlWhere,String[] propertyNames, Object[] values,String orderByStuff); List<T> findByHqlWhere(String hqlWhere,String[] propertyNames, Object[] values,String orderByStuff);
int findByHqlWhereCount(String hqlWhere,String[] propertyNames, Object[] values); int findByHqlWhereCount(String hqlWhere,String[] propertyNames, Object[] values);
@ -277,6 +294,8 @@ public interface BaseRepository <T, ID extends Serializable> extends JpaReposito
List<T> findByHqlWherePage(DdlPackBean packBean, Pager pager); List<T> findByHqlWherePage(DdlPackBean packBean, Pager pager);
List<T> findByHqlWherePage(DdlPackBean packBean, Pager pager,Boolean queryColumns);
@Deprecated @Deprecated
int findByHqlWhereCount(String hqlWhere); int findByHqlWhereCount(String hqlWhere);

@ -57,10 +57,12 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
this.snowflakeIdMaker = snowflakeIdMaker; this.snowflakeIdMaker = snowflakeIdMaker;
} }
@Override
public void clearSession(){ public void clearSession(){
entityManager.clear(); entityManager.clear();
} }
@Override
public void detachObject(T t){ public void detachObject(T t){
if (t == null) { if (t == null) {
return; return;
@ -69,6 +71,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
} }
//集合设置为游离态 //集合设置为游离态
@Override
public void detachList(List<T> list){ public void detachList(List<T> list){
if(list != null){ if(list != null){
for(T t : list) { for(T t : list) {
@ -525,6 +528,24 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
} }
@Override @Override
public List<T> getByProperty(DdlPackBean ddlPackBean, boolean queryColumns) {
StringBuilder hqlStr = new StringBuilder();
if (queryColumns && ddlPackBean.getHqlColumns().size() > 0){
hqlStr.append("select ");
List<String> hqlColumns = ddlPackBean.getHqlColumns();
hqlColumns.forEach(column ->{ hqlStr.append(column).append(" ");});
}
Query query = entityManager.createQuery(hqlStr.toString() + " from " + persistentClass.getSimpleName()
+ " as model where 1=1 " + ddlPackBean.getPackedHql());
for (String key : ddlPackBean.getHqlPreparedMap().keySet()) {
query.setParameter("m_" + key,ddlPackBean.getHqlPreparedMap().get(key));
}
return query.getResultList();
}
@Override
public T getByProperty(String propertyName, Object value) { public T getByProperty(String propertyName, Object value) {
return getByPropertyPager(new String[]{propertyName}, new Object[]{value}, GETBYPROPERTY_PAGER); return getByPropertyPager(new String[]{propertyName}, new Object[]{value}, GETBYPROPERTY_PAGER);
} }
@ -758,6 +779,26 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
} }
@Override @Override
public List<T> findByHqlWhere(DdlPackBean packBean, boolean queryColumns) {
StringBuilder hqlStr = new StringBuilder();
if (queryColumns && packBean.getHqlColumns().size() > 0){
hqlStr.append("select ");
List<String> hqlColumns = packBean.getHqlColumns();
hqlColumns.forEach(column ->{ hqlStr.append(column).append(" ");});
}
Query query = entityManager.createQuery(hqlStr.toString() + " from " + persistentClass.getSimpleName()
+ " as model where 1=1 " + packBean.getPackedHql());
for (String key : packBean.getHqlPreparedMap().keySet()) {
query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key));
}
return query.getResultList();
}
@Override
public List<T> findByHqlWhere(String hqlWhere, String[] propertyNames, Object[] values, String orderByStuff) { public List<T> findByHqlWhere(String hqlWhere, String[] propertyNames, Object[] values, String orderByStuff) {
if(propertyNames.length != values.length){ if(propertyNames.length != values.length){
throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:"
@ -894,6 +935,31 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
} }
} }
@Override
public List<T> findByHqlWherePage(DdlPackBean packBean, Pager pager, Boolean queryColumns) {
if(pager != null) {
StringBuilder hqlStr = new StringBuilder();
if (queryColumns && packBean.getHqlColumns().size() > 0){
hqlStr.append("select ");
List<String> hqlColumns = packBean.getHqlColumns();
hqlColumns.forEach(column ->{ hqlStr.append(column).append(" ");});
}
Query query = entityManager.createQuery(hqlStr.toString() +" from " + persistentClass.getSimpleName()
+ " as model where 1=1 " + packBean.getPackedHql());
for (String key : packBean.getHqlPreparedMap().keySet()) {
query.setParameter("m_" + key,packBean.getHqlPreparedMap().get(key));
}
return query.setFirstResult(pager.getStartRow())
.setMaxResults(pager.getPageSize())
.getResultList();
}else{
return new ArrayList<T>();
}
}
@Deprecated @Deprecated
@Override @Override
public int findByHqlWhereCount(String hqlWhere) { public int findByHqlWhereCount(String hqlWhere) {

Loading…
Cancel
Save