將數據庫搜索出來的結果list 轉換為list


原生方法:

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。