多表查询都用resultMap
resultMap
说白了就是他可以手动设置映射参数,例如
可以指定
column代表数据库的参数 property 代表实体类的参数
<id column="roleid" property="id"></id> column代表数据库的参数 property 代表实体类的参数
<result property="roleDesc" column="roleDesc"></result>
<result property="rolename" column="rolename"></result>
一对多查询
一个订单可以被多个用户拥有
<resultMap id="orderResultMap" type="order"> 第一个参数 定义标识符 第二个参数 要填写的实体类
<id column="oid" property="id"></id>
<result column="ordertime" property="ordertime"></result>
<result property="total" column="total"></result>
<!-- <result property="user.id" column="uid"></result>-->
<!-- <result property="user.username" column="username"></result>-->
<!-- <result property="user.password" column="password"></result>-->
<!-- <result property="user.birthday" column="birthday"></result>-->
设置专门的user对象
<association property="user" javaType="user"> 这个标签专门用于对象
<result column="uid" property="id"></result>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
<result column="birthday" property="birthday"></result>
</association>
</resultMap>
<select id="findAll" resultMap="orderResultMap">
select * ,o.id oid from user u,orders o where u.id =o.uid;
</select>
<resultMap id="userAndRoleMap" type="user">
<id column="userid" property="id"></id>
<result property="birthday" column="birthday"></result>
<result property="username" column="username"></result>
<result property="password" column="password"></result>
<collection property="listRole" ofType="role"> 还有一种是专门用于集合
<id column="roleid" property="id"></id>
<result property="roleDesc" column="roleDesc"></result>
<result property="rolename" column="rolename"></result>
</collection>
</resultMap>