二、使用resultMap实现简单的结果匹配
首先创建另一张数据库表RoleInfo(角色表),字段就是ID、RoleName,同时创建实体类Role。
resultMap常用的两个基本属性:
1、id:resultMap的唯一标识;
2、type:表示此resultMap映射的结果类型,通常是Java实体类。
在resultMap标签中,可使用和子标签指定一个属性名跟字段名的映射,property是实体类的属性名,column是数据库中的字段名。子节点一般对应该记录行的数据库主键字段,可提升MyBatis性能,二者作用差不多。
先说一下resultMap的自动映射级别:
PARTIAL,默认值,自动匹配基本类型
NONE,不进行自动匹配
FULL,自动匹配所有类型,包括复杂的JavaBean、引用类型。
一般设置为自动匹配所有,这样只需要在resultMap中配置名称不对应的属性即可,其他不做手动映射的属性依然可以映射上。此选项在mybatis-config.xml(核心配置文件)中的settings标签中设置,代码如下
<!--设置为FULL,自动匹配所有,则在resultMap中不进行匹配的字段也可以映射-->
<setting name="autoMappingBehavior" value="FULL"/>
接下来举个例子,在实体类User中增加String类型的属性roleName,在UserMapper.java接口中定义如下方法
public User getNameAndRole(@Param("uName")String userName); //查询用户信息同时获取角色名称
在UserMapper.xml中添加如下内容
<!--resultMap属性指向一个resultMap标签的id-->
<select id="getNameAndRole" resultMap="nameAndRole">
SELECT u.*,r.RoleName FROM UserInfo u,RoleInfo r WHERE UserName=#{
uName} AND u.UserRole=r.ID
</select>
<!--type类型指定返回的实体类-->
<resultMap id="nameAndRole" type="Us