清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | package com.common; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.hibernate.Hibernate; import org.hibernate.Query; import org.hibernate.Session; /** * 通用的SQL查询基类 */ public class BaseGeneralQuery extends AbstractHibernateDAOImpl { /** * 通用的SQL查询方法(返回多条记录) * * SQL:SQL语句,切记必须指定查询字段,不可使用通配 * * sqlType:SQL(原生SQL)、HQL(HQL语句) * * List对应每一条记录,Map的put中对应中每一个字段、值。SQL语句,应规范SQL语句,HQL最好兼容SQL的写法. * 解析Map的时候,需要通过查询字段对应的下标获取,从0开始。如:maps.get(0).toString(); */ public List<Map> executeQuery(String sqlType,String sql){ List<Map> list= null ; try { list = new LinkedList<Map>(); Session session = this .getSession(); Query query = null ; if ( "SQL" .equals(sqlType)){ query = session.createSQLQuery(sql); } if ( "HQL" .equals(sqlType)){ query = session.createQuery(sql); } //String hqlstr = sql.toString().substring(6, sql.toString().indexOf("from")).trim(); //String[] codenames = hqlstr.split(","); Map maps = null ; Iterator it = query.list().iterator(); while (it.hasNext()){ maps = new HashMap(); Object[] obj = (Object[])it.next(); //由于SQL或者是HQL语句的查询字段的复杂性和规范性,无法进行有效的截取判断。只能进行数据条字段下标进行通用封装。 for ( int i= 0 ;i<obj.length;i++){ maps.put(i, obj[i]== null ? "" :obj[i].toString()); } list.add(maps); } } catch (Exception e) { System.out.println( "#Error BaseGeneralQuery.executeQuery(String sqlType,String sql) [" +e.getMessage()+ "] " ); } return list; } /** * 通用的SQL查询方法(返回一条数据集合) * SQL:SQL语句(select aa,bb from table * 返回根据语句查询到的记录对象Map映射 */ public Map getObject(String sql){ Map map = null ; try { List<Object[]> object = super .getSession( true ).createSQLQuery(sql).list(); if (object != null && object.size() > 0 ){ map = new HashMap(); for ( int j= 0 ;j<object.get( 0 ).length;j++){ map.put(j, object.get( 0 )[j]); } } super .getSession( true ).close(); } catch (Exception e) { System.out.println( "#Error BaseGeneralQuery.getObject(String sql) [" +e.getMessage()+ "] " ); } return map; } /** * 通用的SQL查询方法(返回单个字段数据) * field: 单个查询语句的字段aa * SQL:SQL语句(select aa from table * 返回根据语句查询到的记录对象Map映射 */ public String getString(String field,String sql){ String val = "" ; try { val = (String) super .getSession( true ).createSQLQuery(sql).addScalar(field, Hibernate.STRING).uniqueResult(); super .getSession( true ).close(); } catch (Exception e) { System.out.println( "#Error BaseGeneralQuery.getString(String field,String sql) [" +e.getMessage()+ "] " ); } return val; } /** * 通用的SQL查询方法(返回记录条数) * * SQL:SQL语句,(select count(*) counts from table ) * sqlType:SQL(原生SQL)、HQL(HQL语句) * * 返回根据语句查询到的记录条数 */ public int executeQueryCount(String sqlType,String sql){ int count = 0 ; try { Session session = this .getSession(); if ( "SQL" .equals(sqlType)){ count = Integer.parseInt((String) session.createSQLQuery(sql).addScalar( "counts" ,Hibernate.STRING).uniqueResult()); } if ( "HQL" .equals(sqlType)){ count = session.createQuery(sql).list().size(); } } catch (Exception e) { System.out.println( "#Error BaseGeneralQuery.executeQueryCount(String sqlType,String sql) [" +e.getMessage()+ "] " ); } return count; } /** * 通用的SQL添加方法 * * SQL:SQL语句,(select count(*) counts from table ) * sqlType:SQL(原生SQL)、HQL(HQL语句) * * 返回SQL语句受影响的行数 */ public int executeSave(String sqlType,String sql){ int count = 0 ; try { Session session = this .getSession(); if ( "SQL" .equals(sqlType)){ count = session.createSQLQuery(sql).executeUpdate(); } if ( "HQL" .equals(sqlType)){ //count = session.createQuery(sql).list().size(); } } catch (Exception e) { System.out.println( "#Error BaseGeneralQuery.executeSave(String sqlType,String sql) [" +e.getMessage()+ "] " ); } return count; } } |