JDBC查询mysql数据库返回list<map<String,Object>>类型数据
本来以为把数据库的数据弄出来是件很easy的事情
在这踩了个坑,引以为戒
话不多说,上代码
package com.easyui.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.easyui.dao.IAdminNavDao;
public class AdminNavImpl implements IAdminNavDao{
private final String URL = "jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8";
private final String USERNAME ="root";
private final String PASSWORD ="admin";
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
==以上忽略==
@Override
public List<Map<String, Object>> getAdminNavs(String idi) {
//在这里实例化了list和map,,,最后发现姿势不对,我勒了个去
// List list = new ArrayList<>();
// Map map = new HashMap<>();
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
String sql = "select * from admin_nav ";
pstmt = connection.prepareStatement(sql);
rs = pstmt.executeQuery();
//为了代码的完整性就把代码都贴出来了--------
int count = rs.getMetaData().getColumnCount();//获取列数
//根据各路前辈的代码比对了下
//list实例化的正确姿势
List list = new ArrayList<>();
while(rs.next()) {
//map实例化的正确姿势
Map map = new HashMap<>();
for(int i=1;i<count;i++) {
//这里是复杂版获取数据库数据,为了便于理解,大佬路过勿喷
int id = rs.getInt("id");
String text = rs.getString("text");
String iconCls = rs.getString("iconCls");
String state = rs.getString("state");
int parentId = rs.getInt("parentId");
map.put("id", id);
map.put("text", text);
map.put("iconCls", iconCls);
map.put("state", state);
map.put("parentId", parentId);
//这里是简化版获取数据,
//Object value = rs.getObject(i);
//Object key = rs.getMetaData().getColumnName(i);
//map.put(key,value);
}
//把map存入list中
list.add(map);
}
return list;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(connection!=null)connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
`
ok~~~