braint8  
日历
<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
统计
  • 随笔 - 0
  • 文章 - 15
  • 评论 - 16
  • 引用 - 0

导航

留言簿(2)

文章分类(15)

文章档案(15)

搜索

  •  

积分与排名

  • 积分 - 17473
  • 排名 - 1882

最新评论

 
1.Result Map各种方式
1)隐式的Result Map,返回结果为Product实例
    <statement id=”getProduct” resultClass=”com.ibatis.example.Product”>
        select
        PRD_ID as id,
        PRD_DESCRIPTION as description
        from PRODUCT
        where PRD_ID = #value#
    </statement>
上面的 mapped statement定义了 resultClass 属性,并为每个字段指定了别名,用于匹配
Product 类的属性名称。这样就可以了,不需要 result map。缺点在于,您无法指定字段的数据类型,且
不区分大小写,不建议用。

2)基本类型的Result(即String,Integer,Boolean)返回结果为int
<resultMap id=”get-product-result” class=”java.lang.String”>
    <result property=”value” column=”PRD_DESCRIPTION”/>
</resultMap>
更简单方法是,在 mapped statement 中使用 resultClass 属性(使用“as”关键字给字段
取别名“value” ) :
<statement id=”getProductCount” resultClass=”java.lang.Integer”>
    select count(1) as value
    from PRODUCT
</statement>

3)Map方式,返回结果为HashMap
<resultMap id=”get-product-result” class=”java.util.HashMap”>
    <result property=”id” column=”PRD_ID”/>
    <result property=”code” column=”PRD_CODE”/>
    <result property=”description” column=”PRD_DESCRIPTION”/>
    <result property=”suggestedPrice” column=”PRD_SUGGESTED_PRICE”/>
</resultMap>

<statement id=”getProductCount” resultClass=”java.util.HashMap”>
    select * from PRODUCT
</statement>

2.一对多的配置实现方式,如:Category 拥有 Product 对象的 List
<resultMap id=”get-category-result” class=”com.ibatis.example.Category”>
    <result property=”id” column=”CAT_ID”/>
    <result property=”description” column=”CAT_DESCRIPTION”/>
    <result property=”productList” column=”CAT_ID” select=” getProductsByCatId”/>
</resultMap>
<resultMap id=”get-product-result” class=”com.ibatis.example.Product”>
    <result property=”id” column=”PRD_ID”/>
    <result property=”description” column=”PRD_DESCRIPTION”/>
</resultMap>
<statement id=”getCategory” parameterClass=”int” resultMap=”get-category-result”>
    select * from CATEGORY where CAT_ID = #value#
</statement>
<statement id=”getProductsByCatId” parameterClass=”int” resultMap=”get-product-result”>
    select * from PRODUCT where PRD_CAT_ID = #value#
</statement>

3.ibatis通过配置解决N+1的问题,解决大数据量时的效率问题
    <resultMap id=”get-product-result” class=”com.ibatis.example.Product”>
        <result property=”id” column=”PRD_ID”/>
        <result property=”description” column=”PRD_DESCRIPTION”/>
        <result property=”category.id” column=”CAT_ID” />
        <result property=”category.description” column=”CAT_DESCRIPTION” />
    </resultMap>
    <statement id=”getProduct” parameterClass=”int” resultMap=”get-product-result”>
        select *
        from PRODUCT, CATEGORY
        where PRD_CAT_ID=CAT_ID
        and PRD_ID = #value#
    </statement>
    利用连接来实现,直接一条SQL语句

4.ibatis对于字段的继承的问题?
如:表字段10个,定义一个映射第1,2字段,再定义一个映射包含1,2字段,还需要3,4字段,是否可以用继承来减少资源实现?
<typeAlias alias="Test" type="com.xxx.Test" /> 
<resultMap id = "test" type = "Test"> 
   <result property="id" column="id" /> 
</resultMap> 
<resultMap id = "extTest" extends="test"> 
  <result property="name" column="name"/> 
</resultMap>
这样使用 extTest 则拥有id,name两个属性,达到复用。
posted on 2009-09-21 10:42 情晚风 阅读(274) 评论(0)  编辑  收藏 所属分类: ibatis学习过程
 
Copyright © 情晚风 Powered by: 博客园 模板提供:沪江博客