其实Mybatis中的select标签,还有其他很多属性,前面我们已经讲了几个,接着还会讲几个相对重要的,其他的,同学们可以参照一下手册(http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#select)自己学习一下
手册里resultType和resultMap介绍有点模糊,说清楚了resultType是期望的返回的类型,集合的话是集合包含的类型,不是集合本身,且这两个不能同时使用
其实两者的关系就是resultType解决数据表上的字段名称和JavaBean上的属性名称不一致的时候,前面介绍了两种方案,①在sql语句上起别名;②设置全局变量mapUnderscoreToCamelCase让符合驼峰命名约定的两个名字建立关联,如JavaBean属性名称regDate对应数据库字段名reg_date;其实这里还有第三种解决方案就是resultMap,它可以让我们指定定义数据库里的字段名称对应JavaBean的属性名称。
select属性resultMap的使用
1.使用resultMap自定义数据库字段名称和JavaBean的属性名称的对应关系,关键就是定义一组resultMap标签
2.使用resultMap实现关联查询(在hibernate中是自动完成的,Mybatis得我们手工配置)
试验步骤:
①新增Role类,在User你新增属性Role role
②在UserDao.xml重写sql和resultMap(复杂的查询结果resultType是吃不够的,必须用resultMap)
查询出来的结果:
id username password state reg_date rid role_name rstate
③编写对应的resultMap(通过级联的方式建立关联)
④看测试,实现关联查询
3.在上面的基础上使用association标签实现关联查询
试验步骤
①把RoleDao接口和RoleDao.xml建好,定义一个getRoleById的方法
②修改UserDao.xml的内容
把2中的发起一条sql语句,变成了发起两条sql语句分步执行。