昨天调试代码时发现将下面红圈中的值改成小写时,运行会得到null,改成其它的(比如empNo, EmpNo)也不行。
/**
* MyBatisEmpDao.findByDeptNo()
*/
@Test
public void test7() {
MyBatisEmpDao dao = new MyBatisEmpDao();
List<Map<String, Object>> list = dao.findByDeptNo(1);
for(Map<String, Object> e : list) {
System.out.println(
e.get("EMPNO") + " " +
e.get("ENAME"));
}
}
原因何在,查询资料发现,数据库本身对大小写不敏感(我使用的是oracle),但是创建表格的时候,数据库里面字段都会默认大写,所以MyBatis映射的时候,key也会映射成大写,可以用LinkedCaseInsensitiveMap( key值不区分大小写的LinkedMap)来处理。
修改后代码
/**
* MyBatisEmpDao.findByDeptNo()
*/
@Test
public void test7() {
MyBatisEmpDao dao = new MyBatisEmpDao();
List<Map<String, Object>> list = dao.findByDeptNo(1);
Map<String, Object> tempMap = new LinkedCaseInsensitiveMap<Object>();
for(Map<String, Object> e : list) {
tempMap.putAll(e);
System.out.println(
// e.get("EMPNO") + " " +
// e.get("ENAME"));
tempMap.get("empno") + " " +
tempMap.get("ename"));
}
}
LinkedCaseInsensitiveMap属于spring,要注意导包
org.springframework.util.LinkedCaseInsensitiveMap.class