- 1.表的设计:
- 2.实体类
- 3.Mapper映射文件
- 4.测试类
- 5.结果
- 6.问题分析:password没有获取到?
- 7.解决方案
- 7.1.取别名
- 7.2.使用结果集映射->ResultMap
1.表的设计: 2.实体类
public class User {
private int id;
private String name;
private String password;
}
3.Mapper映射文件
4.测试类select * from mybatis.user where id = #{id}
public class UserDaoTest {
@Test
public void test(){
//第一步:获得SqlSession对象
SqlSession sqlSession =null;
try {
//第二步:执行SQL
sqlSession = MybatisUtils.getSqlSession();
UserDao userMapper = sqlSession.getMapper(UserDao.class);
User user = userMapper.getUserById(1);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
} catch (Error error){
error.printStackTrace();
} finally {
//第三步:关闭sqlSession
sqlSession.close();
}
}
}
5.结果
6.问题分析:password没有获取到?
sql语句:select * from user where id = #{id} 可以看做sql select id,name,pwd from user where id = #{id},mybatis会根据这些查询的列名(会将列名转化为小写,数据库不区分大小写) , 去对应的实体类中查找相应列名的set方法设值 , 由于找不到setPassword() , 所以password返回null ; 【自动映射】
7.解决方案 7.1.取别名7.2.使用结果集映射->ResultMapselect userId,userName,pwd as password where id = #{id}
//结果集映射//column是数据库中的字段,property是实体类中的属性 //可以省略 //可以省略
- resultMap 元素是 MyBatis 中最重要最强大的元素
- ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
- ResultMap 最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们
当然了,如果世界真的有那么简单就好了
To be continue…



