JavaEE_Mybatis_SpringMVC_Mybatis_ResultMap 与 ResultType应用场合选择

Mybatis中  ResultType与ResultMap有一定的不同,不同的场景选择不同


ResultType

示例:

	<sql id="query_user_where">
		<if test="userCustom!=null">
			<if test="userCustom.sex!=null and userCustom.sex!=''">
				AND user.sex = #{userCustom.sex}
			</if>
			<if test="userCustom.username!=null and userCustom.username!=''">
				AND user.username like'%${userCustom.username}%'
			</if>
		</if>
	</sql>

	<select id="findUserCount" parameterType="cn.itcast.mybatis.po.UserQueryVo"
		resultType="int">
		SELECT COUNT(*) FROM user WHERE user.sex = #{userCustom.sex} AND
		user.username like'%${userCustom.username}%'
		<!-- where 可以自动去掉第一个and -->
		<where>
			<include refid="query_user_where"></include>
		</where>
	</select>


使用注意

1.在数据库SQL查询出来的字段必须与java对象的属性名完全一致,否则取不到数据

作用:

 将查询结果按照 sql列名和 pojo属性名一致性映射到Pojo中。

场合:

 常见一些明细记录的展示

 


ResultMap

示例:

		<collection property="orderlist" ofType="cn.itcast.mybatis.po.Orders">
		<!--
			private Integer id;
			private Integer userId;
			private String number;
			private Date createtime;
			private String note; 
		 -->
		 	<id column="id" property="id"/>
		 	<result column="user_id" property="userId"/>
		 	<result column="number" property="number"/>
		 	<result column="createtime" property="createtime"/>
		 	<result column="note" property="note"/>
		 	
		 	<collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
		 	<!--
		 		private Integer id;
				private Integer ordersId;
				private Integer itemsId;
				private Integer itemsNum;
				// 商品的Items信息
				private Items items; 
		 	 -->
		 	 	<id column="orderdetail_id" property="id"/>
		 	 	<result column="items_id" property="itemsId"/>
		 	 	<result column="items_num" property="itemsNum"/>
		 	 	
		 	 	<association property="items" javaType="cn.itcast.mybatis.po.Items">
		 	 	<!-- 
		 	 	  private Integer id;
    			  private String name;
    			  private Float price;
    			  private String pic;
    			  private Date createtime;
     			  private String detail;
		 	 	 -->
		 	 	 <id column="items_id" property="id"/>
		 	 	 <result column="items_name" property="name"/>
		 	 	 <result column="items_detail" property="detail"/>
		 	 	 <result column="items_price" property="price"/>
		 	 	</association>
		 	</collection>
		</collection> 	
	</resultMap>

	<select id="findUsersAndItemsResultMap" resultMap="UsersAndItemsResultMap">
		SELECT
			orders.*,
			user.username,
			user.sex,
			user.address,
			orderdetail.id orderdetail_id,
			orderdetail.items_id,
			orderdetail.items_num,
			orderdetail.orders_id,
			items.name items_name,
			items.detail items_detail,
			items.price items_price
		FROM
			user,
			orders,
			orderdetail,
			items
		WHERE
			orders.user_id = user.id
			AND orderdetail.orders_id = orders.id
			AND orderdetail.items_id = items.id
	</select>



使用注意

1.可以利用 column(数据库查询出来的字段) 与 property (Java对象中的字段)进行映射。

 2.association , collection 

 association 将关联查询信息映射到一个pojo 对象中。

 collection 将关联查询的信息映射到一个list 集合中。


场合:

1. 与订单关联的用户 一起的信息

2. 用户购买的商品

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值