mybatis第四天之一对多
作者:互联网
上一篇讲了多表中一对一的应用,这一篇说一下mybatis中一对多的应用
user表中用户很多,account表中账户数少,那么并不是每一个user都有对应的account表的账户
所以当就是一条user信息中 需要对应account多条信息
我们来看下如何解决这个问题
一对多,这个多要用一个集合,换言之就是一对应一个集合
所以我们就在主类,user类中建立一个泛型为account的集合类 记为: private List<Account> accounts;
然后生成get set方法
此时此刻 我就要设置新的user的映射文件xml
因为还是查询 还是要用select标签
我的习惯是先写sql语句 所有 sql语句就是
select u.*,a.id as aid ,a.uid,a.money from user as u left outer join account as a on a.uid = u.id ;
此时为什么不用, 而用了左外连接left outer join ;因为 user表中很多用户没account中对应的数据,用左外连接可以让左表内容完全展示
写好了sql语句我们就可以配置
<resultMap id="userMap" type="com.....User" >
<id="" colunm="">
<!--p代表实体类中的名称 c代表数据库中的名称 -->
<result proptety="username" col="username">
.
.
.
因为一对多,多对应的是集合,因此要用集合标签coolection oftype=封装在哪,, account
</reslutMap>
完整映射文件代码:
<resultMap id="userMap" type="com.itheima.domain.User">
<id property="id" column="id"></id>
<result column="username" property="username"></result>
<result column="sex" property="sex"></result>
<result column="birthday" property="birthday"></result>
<result column="address" property="address"></result>
<collection property="accounts" ofType="com.itheima.domain.Account">
<id column="aid" property="id"></id>
<result column="uid" property="uid"></result>
<result column="money" property="money"></result>
</collection>
</resultMap>
<select id="findAll" resultMap="userMap">
SELECT u.*,a.id as aid ,a.uid,a.money from user AS u left OUTER JOIN account as a on u.id = a.uid
</select>
标签:account,之一,uid,表中,集合,user,第四天,mybatis,id 来源: https://www.cnblogs.com/jianbingxia/p/14351459.html