JavaEE_Mybatis_SpringMVC_Mybatis_ResultMap 与 ResultType应用场合选择

来源:互联网 发布:图片上加字的软件 编辑:程序博客网 时间:2024/06/08 09:08

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} ANDuser.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">SELECTorders.*,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_priceFROMuser,orders,orderdetail,itemsWHEREorders.user_id = user.idAND orderdetail.orders_id = orders.idAND orderdetail.items_id = items.id</select>



使用注意

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

 2.association , collection 

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

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


场合:

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

2. 用户购买的商品

0 0
原创粉丝点击