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

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


<?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>

你可能感兴趣的:(mybatis)