多表查询都用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>