mybatis学习demo4之集合和关联类的查询

[size=medium]也不想弄很多!代码都是demo1和demo2的差不多的,就只贴出有集合的mapper的配置,其余代码上传了,要看的自己下了就可以用了!
[/size]

<?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.study.dao.UserMapper">
<resultMap type="User" id="userResMap">
<id property="id" column="id" />
<result property="loginName" column="login_name" />
<result property="password" column="password" />
<result property="name" column="name" />
<result property="email" column="email" />

<!-- 配置一对一的对象,association标签要放到collection
的上面-->
<association property="group" javaType="Group">
<id property="id" column="group_id"/>
<result property="name" column="group_name"/>
</association>

<!-- 配置一对多的集合的两种方式 -->
<!-- 第一种是在collection中直接配置集合 ,注意其中的是ofType-->

<!--
<collection property="groupList" ofType="Group">
<id property="id" column="group_id" />
<result property="name" column="group_name" />
</collection>
-->

<!-- 第二种就是直接连接到GroupMapper中的resultMap,
名字为namespace+resultName,这里面填写ofType="Group"
和javaType="List"都OK,单是上面那一种填javaType="List"不行,
只能填ofType="Group" -->
<collection property="groupList" javaType="List" resultMap="com.study.dao.GroupMapper.groupResMap"></collection>

</resultMap>
<!-- 值的注意的地方是,因为user表和group表中都是有id和name的,所以查出来的
时候要其中一个表的ID和name要用别名,且上面的resultMap配置colum也要用
对应的别名,不然的话查询出来的结果不正确,会造成group表的id和name也是
存放的user的id和name -->
<select id="findAll" resultMap="userResMap">
select u.id, u.name, u.email, u.login_name, u.password, g.id as group_id, g.name as group_name
from t_user u left join t_user_group u_g on u.id = u_g.user_id
left join t_group g on g.id = u_g.group_id
</select>

<select id="findById" resultMap="userResMap" parameterType="java.lang.Long">
select u.id, u.name, u.email, u.login_name, u.password, g.id as group_id, g.name as group_name
from t_user u left join t_user_group u_g on u.id = u_g.user_id
left join t_group g on g.id = u_g.group_id
where u.id = #{value}
</select>
</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值