什么是mybatis的sql映射
Resultmap节点的定义和使用(单向一对多映射)应用场景:类名与表名不一致,类属性名和表列(字段)名不一致列名和属性名不一致导致查询的结果某个字段为null
下面是映射的演示
首先我们要在com.ah bai.pojo包下面创建一对多的实现类RoleInfo
然后我们就要创建 resultMap映射。
<!--id为映射的id type为对应的一对多类名-->
<resultMap id="roleInfoMap" type="com.ahbai.pojo.RoleInfo">
<!--column为数据库列名 property为类对应的属性名-->
<id column="roleid" property="roleId"/>
<result column="rolename" property="roleName"/>
<result column="shortname" property="shortName"/>
<!--property类里的集合属性 ofType集合的泛形的路径-->
<collection property="userInfoList" ofType="com.ahbai.pojo.UserInfo">
<id column="userid" property="userId"/>
<result column="username" property="userName"/>
<result column="regemail" property="regEmail"/>
<result column="phone" property="phone"/>
<result column="icon" property="icon"/>
</collection>
</resultMap>
接下来是通过resultMap方法来调用映射。
<!--id是实现mybatis的接口方法名 而resultMap则是上面映射的id-->
<select id="findRoleOut" resultMap="roleInfoMap" parameterType="com.ahbai.pojo.UserInfo">
<!--sql语句-->
SELECT rfo.*,IFNULL(tal.shortname,0) flag FROM
(SELECT rf.* FROM userinfo uf,user_role ur,roleinfo rf
WHERE uf.`userid`=ur.`userid` AND ur.`roleid`=rf.`roleid` AND uf.`userid`=#{userId})
AS tal RIGHT JOIN roleinfo rfo ON rfo.`roleid`=tal.roleid
</select>
然后去实现findRoleOut接口就可以了。