其他分享
首页 > 其他分享> > mybatis第四天之一对多

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