|
@ -1,5 +1,6 @@
|
|
|
package com.yihu.jw.statistics.util.hibernate;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import org.hibernate.SQLQuery;
|
|
|
import org.hibernate.Session;
|
|
|
import org.hibernate.transform.Transformers;
|
|
@ -45,7 +46,7 @@ public class HibenateUtils {
|
|
|
|
|
|
SQLQuery query = session.createSQLQuery(sql);
|
|
|
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
|
|
|
if(page!=null&&size!=null){
|
|
|
if (page != null && size != null) {
|
|
|
query.setFirstResult((page - 1) * size);
|
|
|
query.setMaxResults(size);
|
|
|
}
|
|
@ -58,6 +59,7 @@ public class HibenateUtils {
|
|
|
* sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
|
|
|
* 目前只支持通用的聚合函数,特有的聚合函数不支持
|
|
|
* 无分页
|
|
|
*
|
|
|
* @param sql
|
|
|
* @return
|
|
|
*/
|
|
@ -73,10 +75,11 @@ public class HibenateUtils {
|
|
|
* 创建SQL查询,根据配置,获取数据库方言
|
|
|
* sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
|
|
|
* 目前只支持通用的聚合函数,特有的聚合函数不支持
|
|
|
*
|
|
|
* @param sql
|
|
|
* @param params 动态占位符入参,例如 like:name
|
|
|
* @param page 第几页,1开始
|
|
|
* @param size 每页记录数
|
|
|
* @param page 第几页,1开始
|
|
|
* @param size 每页记录数
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params, Integer page, Integer size) {
|
|
@ -87,7 +90,7 @@ public class HibenateUtils {
|
|
|
//设置查询参数
|
|
|
setSqlQueryByMap(query, params);
|
|
|
|
|
|
if(page!=null&&size!=null){
|
|
|
if (page != null && size != null) {
|
|
|
query.setFirstResult((page - 1) * size);
|
|
|
query.setMaxResults(size);
|
|
|
}
|
|
@ -99,12 +102,26 @@ public class HibenateUtils {
|
|
|
* 创建SQL查询,根据配置,获取数据库方言
|
|
|
* sql为原生sql语句,查询,Oracle不区分大小写,返回值需要驼峰命名,字段别名需要加 双引号
|
|
|
* 目前只支持通用的聚合函数,特有的聚合函数不支持
|
|
|
*
|
|
|
* @param sql
|
|
|
* @param params 动态占位符入参,例如 like:name
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params) {
|
|
|
Map<String, Object> entityProperties = entityManager.getProperties();
|
|
|
Session session = (Session) entityManager.getDelegate();
|
|
|
Map<String, Object> sessionProperties = session.getProperties();
|
|
|
// System.out.println("----------------------------------------");
|
|
|
// System.out.println("打印entityProperties");
|
|
|
// for (Map.Entry<String, Object> entry : entityProperties.entrySet()) {
|
|
|
// System.out.println(entry.getKey() + " 值==>" + JSON.toJSONString(entry.getValue()));
|
|
|
// }
|
|
|
// System.out.println("打印sessionProperties");
|
|
|
// for (Map.Entry<String, Object> entry : sessionProperties.entrySet()) {
|
|
|
// System.out.println(entry.getKey() + " 值==>" + JSON.toJSONString(entry.getValue()));
|
|
|
// }
|
|
|
// System.out.println("----------------------------------------");
|
|
|
|
|
|
SQLQuery query = session.createSQLQuery(sql);
|
|
|
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
|
|
|
|
|
@ -117,6 +134,7 @@ public class HibenateUtils {
|
|
|
|
|
|
/**
|
|
|
* 设置查询参数
|
|
|
*
|
|
|
* @param sqlQuery
|
|
|
* @param params
|
|
|
* @return
|
|
@ -139,17 +157,18 @@ public class HibenateUtils {
|
|
|
|
|
|
/**
|
|
|
* 聚合函数类型装换
|
|
|
*
|
|
|
* @param obj
|
|
|
* @return
|
|
|
*/
|
|
|
public Long objTransformLong(Object obj){
|
|
|
public Long objTransformLong(Object obj) {
|
|
|
//Oracle count(1) 聚合函数类型装换
|
|
|
if(obj instanceof BigDecimal){
|
|
|
if (obj instanceof BigDecimal) {
|
|
|
return ((BigDecimal) obj).longValue();
|
|
|
//Mysql count(1) 聚合函数类型装换
|
|
|
}else if(obj instanceof BigInteger){
|
|
|
return ((BigInteger)obj).longValue();
|
|
|
}else{
|
|
|
//Mysql count(1) 聚合函数类型装换
|
|
|
} else if (obj instanceof BigInteger) {
|
|
|
return ((BigInteger) obj).longValue();
|
|
|
} else {
|
|
|
return 0L;
|
|
|
}
|
|
|
}
|
|
@ -157,6 +176,7 @@ public class HibenateUtils {
|
|
|
|
|
|
/**
|
|
|
* map - T
|
|
|
*
|
|
|
* @param map
|
|
|
* @param clazz
|
|
|
* @param <T>
|
|
@ -196,7 +216,8 @@ public class HibenateUtils {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* List<Map> -- List<T>
|
|
|
* List<Map> -- List<T>
|
|
|
*
|
|
|
* @param list
|
|
|
* @param clazz
|
|
|
* @param <T>
|
|
@ -204,7 +225,7 @@ public class HibenateUtils {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public static <T> List<T> castMapToBean(List<Map<String, Object>> list, Class<T> clazz) throws Exception {
|
|
|
if(list == null || list.size()==0) {
|
|
|
if (list == null || list.size() == 0) {
|
|
|
return null;
|
|
|
}
|
|
|
List<T> tList = new ArrayList<T>();
|
|
@ -212,23 +233,23 @@ public class HibenateUtils {
|
|
|
Field[] fields = clazz.getDeclaredFields();
|
|
|
|
|
|
T t;
|
|
|
for(Map<String, Object> map : list) {
|
|
|
for (Map<String, Object> map : list) {
|
|
|
// 每次都先初始化一遍,然后再设置值
|
|
|
t = clazz.newInstance();
|
|
|
for(Field field : fields) {
|
|
|
for (Field field : fields) {
|
|
|
// 把序列化的字段去除掉
|
|
|
if(!"serialVersionUID".equals(field.getName())){
|
|
|
if (!"serialVersionUID".equals(field.getName())) {
|
|
|
// 由于Field都是私有属性,所有需要允许修改
|
|
|
field.setAccessible(true);
|
|
|
Object value = map.get(field.getName());
|
|
|
if (value!=null){
|
|
|
if("java.math.BigDecimal".equals(value.getClass().getName())){
|
|
|
value=Double.parseDouble(value.toString());
|
|
|
if (value != null) {
|
|
|
if ("java.math.BigDecimal".equals(value.getClass().getName())) {
|
|
|
value = Double.parseDouble(value.toString());
|
|
|
}
|
|
|
if(value.getClass().getName().equals("java.lang.Integer") && field.getName().equals("slaveKey1")){
|
|
|
if (value.getClass().getName().equals("java.lang.Integer") && field.getName().equals("slaveKey1")) {
|
|
|
value = value.toString();
|
|
|
}
|
|
|
if(field.getName().equals("slaveKey2")){
|
|
|
if (field.getName().equals("slaveKey2")) {
|
|
|
value = value.toString();
|
|
|
}
|
|
|
}
|