将查询结果保存为Map集合,如果返回的是多条结果,将map加入到List中返回。
关联查询返回的是多个结果使用 List<Map<String,Object>>,map中存的是 <字段名,值>
单个结果使用Map<String,Object>
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.*;
/**
* Description:用于查询结果类型转换
* Date: 2023/2/19 21:42
**/
public class ModelConvert {
/**
* Date: 2023/2/19 21:58
* description:查询出多条结果时
*/
public static List<Map<String,Object>> convertMany(ResultSet resultSet) {
// 新建map,使用list集合存放多条记录
List<Map<String,Object>> list=new ArrayList<Map<String, Object>>();
try {
//resultSet的结构信息,比如字段数
ResultSetMetaData md=resultSet.getMetaData();
// 查询出来的字段数
int columnCount=md.getColumnCount();
while(resultSet.next()){
// 将查询到的内容按照 <字段名,值> 的方式放入map集合中
Map<String,Object> dataMap=new HashMap<String, Object>();
for (int i=1;i<=columnCount;i++){
// 循环,将所有字段放到Map中 getColumnName(i) 获取第i个列名 getObject(i) 获取第i个对象的值
dataMap.put(md.getColumnName(i),resultSet.getObject(i));
// 将map添加到List中
list.add(dataMap);
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 关闭连接
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
resultSet=null;
}
}
return list;
}
/**
* Date: 2023/2/19 21:59
* description:查询出单条记录
*/
public static Map<String,Object> convertOne(ResultSet resultSet) {
// 新建map,使用list集合存放多条记录
Map<String,Object> map=new TreeMap<String, Object>();
try {
//resultSet的结构信息,比如字段数
ResultSetMetaData md=resultSet.getMetaData();
// 查询出来的字段数
int columnCount=md.getColumnCount();
while(resultSet.next()){
// 将查询到的内容按照 <字段名,值> 的方式放入map集合中
Map<String,Object> dataMap=new HashMap<String, Object>();
for (int i=1;i<=columnCount;i++){
// 循环,将所有字段放到Map中 getColumnName(i) 获取第i个列名 getObject(i) 获取第i个对象的值
dataMap.put(md.getColumnName(i),resultSet.getObject(i));
}
}
return map;
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 关闭连接
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
resultSet=null;
}
}
return null;
}
}
Mapper.xml文件中多表联合查询使用的是resultMap
在resultMap标签中使用association标签或者collection标签
association是用于一对一和多对一,而collection是用于一对多的关系