Mybatis查询,返回为HashMap或者LinkedHashMap时,某些结果集的字段null,导致map中少key。
修改mybatis配置:
callSettersOnNulls属性设置为true
mybatis.configuration.callSettersOnNulls=true
配置完重启即可。
我这里用的sql作为参数,原生sql查询。
String sql ="Select * from 表名;"
List<LinkedHashMap<String, String>> resultMap = dao.selectData(sql);//有序map
mapper写法:
@Select("${sql}")
List<LinkedHashMap<String, String>> selectData(@Param("sql") String sql);
List<String> columnDataList = new ArrayList<String>();
for (LinkedHashMap<String, String> result : resultMap) {
StringJoiner columnDataJoiner = new StringJoiner("||");
Iterator iterator = result.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
columnDataJoiner.add(ObjectUtils.isEmpty(entry.getValue())?"":entry.getValue().toString());//防止map的value为null时替换为""
}
columnDataList.add(columnDataJoiner.toString());
}