将数据库搜索出来的结果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删除。