情景:一个用户有多个账户
需求:查询账户及其关联的用户信息
实现:
1、自己另外封装个实体类(不常用)
2、使用resultMap 和 association
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.lernamybatis.repository.IAccountDAO">
<resultMap id="accountUserMap" type="com.example.lernamybatis.entity.Account">
<id property="id" column="aid"></id>
<result property="uid" column="uid"></result>
<result property="money" column="money"></result>
<association property="user" column="uid">
<id property="id" column="id"></id>
<result column="username" property="userName"></result>
<result column="address" property="address"></result>
<result column="sex" property="sex"></result>
<result column="birthday" property="birthday"></result>
</association>
</resultMap>
<select id="findAll" resultMap="accountUserMap">
select u.*,a.id as aid,a.uid,a.money from account a ,user u where u.id = a.uid
</select>
<select id="findAllAccount" resultType="com.example.lernamybatis.entity.AccountUser">
select a.*, u.username,u.address from account a, user u where a.uid=u.id;
</select>
</mapper>
需求:查询所有用户及其拥有的账户
实现:使用collection标签,对应列名和实体字段名
<resultMap id="userAccountMap" type="com.example.lernamybatis.entity.User">
<id property="id" column="id"></id>
<result property="userName" column="username"></result>
<result property="sex" column="sex"></result>
<result property="address" column="address"></result>
<result property="birthday" column="birthday"></result>
<collection property="accounts" ofType="com.example.lernamybatis.entity.Account">
<id property="id" column="aid"></id>
<result property="uid" column="uid"></result>
<result property="money" column="money"></result>
</collection>
</resultMap>
<select id="selectAll" resultMap="userAccountMap">
select u.*, a.id as aid, a.uid, a.money from user u left join account a on u.id = a.uid
</select>
网友评论