原生方法:
package com.landray.kmss.km.osnoatwo.util; import com.landray.kmss.util.SpringBeanUtil; import org.apache.commons.collections.map.CaseInsensitiveMap; import javax.sql.DataSource; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @ClassName: JDBCUtils * @Description: 原生JDBCUtils工具类 * @author lianggq * @date 2019年10月24日 上午9:10:04 */ public class JDBCUtils { /** * * @Title: getResultSet * @Description: 获取结果集, 放到 Map 中 * @param sql * SQL 语句 * @param str * ID * @return List<Map<String, String>> 结果集 */ public static List<Map<String, String>> getResultSet(String sql, String str) { ResultSet rs = null; DataSource dataSource = (DataSource) SpringBeanUtil .getBean("dataSource"); Connection conn = null; PreparedStatement stat = null; List<Map<String, String>> list = new ArrayList<>(); try { conn = dataSource.getConnection(); stat = conn.prepareStatement(sql); stat.setString(1, str); rs = stat.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); while (rs.next()) { @SuppressWarnings("unchecked") Map<String, String> map = new CaseInsensitiveMap(); for (int i = 0; i < numberOfColumns; i++) { String name = rsmd.getColumnName(i + 1); Object value = rs.getObject(name); // System.out.println(name + "=" + value); map.put(name, value == null ? "" : value.toString()); } list.add(map); map = null; } close(rs, stat, conn); } catch (SQLException e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); rs = null; if (stat != null) { stat.close(); stat = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } } } return list; } /** * @Title: close * @Description: 定义一个静态方法,用于释放资源 * @param rs * @param stat * @param conn * @return void */ public static void close(ResultSet rs, PreparedStatement stat, Connection conn) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { // Forward to handler } finally { try { if (stat != null) { stat.close(); } } catch (SQLException e) { // Forward to handler } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { // Forward to handler } } } } }
hibernate方法
@Override public List porttablemapping(String detaliNumber, String field) throws Exception { /*映射表接口*/ StringBuffer sqlTN = new StringBuffer(); StringBuffer sqll = new StringBuffer(); sqlTN.append("select sources_table from sap_org_mapping_detail where detail_number="+detaliNumber+""); SQLQuery queryTN= this.getBaseDao().getHibernateSession().createSQLQuery(sqlTN.toString()); List<String> listTN=queryTN.list(); String tablename=listTN.get(0); if(field==null){ sqll.append("select * from "+tablename+""); }else{ sqll.append("select "+field+" from "+tablename+""); } List llist=this.getBaseDao().getHibernateSession().createSQLQuery(sqll.toString()).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list(); return llist; } list测试的结果为:[{CARDID=268437586, READERNAME=68, READERID=1000068, STATIONID=141, STATIONNAME=中央党校北门站, RLOCATION=116.45007,39.9918, CARID=鲁A00002}, {CARDID=268437575, READERNAME=68, READERID=1000068, STATIONID=141, STATIONNAME=中央党校北门站, RLOCATION=116.45007,39.9918, CARID=鲁A00001}, {CARDID=268437592, READERNAME=68, READERID=1000068, STATIONID=141, STATIONNAME=中央党校北门站, RLOCATION=116.45007,39.9918, CARID=鲁A00004}] 说明:另外,对于ResultTransformer的用法还有很多,它可以将用SQL语句查询的结果转化成为指定的BEAN,也可以转为LIST,也可以转化为MAP