`
laorer
  • 浏览: 435703 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]iBatis学习心得

阅读更多

  iBatis学习心得

http://www.blogjava.net/fanjun/archive/2005/10/19/16064.html

 前一阵一直在看iBatis,也准备将其引入项目的开发中,感觉由于使用直接sql映射对象的方式,对于熟悉sql的人来说上手十分方便。这里整理了一下学习中的心得,iBatis的文档还是十分不错的,而且还有中文版,这个在开源工具中真是不多见的,但愿以后这样的情况能越来越多:)

<o:p> </o:p>

<o:p> </o:p>

一、Statement

1、  Mapped Statementid是全局的,在各个xml文件内都可以直接使用。

<o:p> </o:p>

二、parameter

1、  parameterMap 一般可用parameterClassinline parameter替代,此外动态Mapped Statement只支持inline parameter

其中:

jdbcType 在字段可以为Null时才需要。在orcale中,若没有设置,插入null会报错。

插入的jdbcType可参考java.sql.Type中定义的类型名称。

parameterMap的名称是局部的,在其他xml文件中引用,必须以“前缀.名称”的形式

2、  parameterClass建议使用,可优化框架性能。Class的值需是全限定的java类名

3、  使用parameterMapprarmeterClass的区别:parameterMap允许null的替换值

4、  inline parameter 更灵活,可简化定义与代码量。

在内嵌参数中,可以指定parameterMap中有的所有属性。此外,在需要指定null的替换值时,必须先指定jdbcType

insert into category(CATID, NAME, DESCN)<o:p></o:p>

      values(#categoryId#,#name#,#description:VARCHAR#)

       需要指定很多字段的时候,可以使用外部parameterMap,这样可使代码更清晰

<o:p> </o:p>

三、result

1resultClass 只要JavaBean的属性名与字段名相同,自动匹配。

   限制:

1)  无法指定字段的数据类型

2)  无法自动转入相关数据(复杂类型、1:nn:m

2、  resultMap 最常用与最重要的属性

1)  columnIndex 在某些jdbcType driver的情况下可提高性能

jdbcType       resultMap没有null值问题,但是用来作为数据映射类型只用(如:将Sting——>Varcharcharblob等)

javaType       一般用于指定转换到mapxml的类型映射

select       用于描述对象间关系(1:11:m<o:p></o:p>

2)  隐式resultMap 即只用resultClass,一般用于简单的映射关系。<o:p></o:p>

缺点:<o:p></o:p>

无法指定字段的数据类型<o:p></o:p>

        无法指定null值替代<o:p></o:p>

        对于Bean中属性大小写不敏感(由于数据库本身就不是大小写敏感的)<o:p></o:p>

       此外,resultClass的自动映射会影响性能(轻微)<o:p></o:p>

3)  Re’sultMap的名称是局部的<o:p></o:p>

4)  Map类型的result,在resultMap定义只类名写成java.util.HashMap<o:p></o:p>

<resultmap class="java.util.HashMap&gt;&amp;lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt; &amp;lt;P class=MsoNormal style=" id="result"></resultmap><o:p> </o:p>

四、复杂类型(1:N,N:M)<o:p></o:p>

1、复杂类型集合的属性(JavaBean中的属性)必须是java.util.Lstjava.util.Collection。只能使用这2个接口,因为iBatis内部使用的是动态代理。<o:p></o:p>

2、使用延迟加载和字节码增强来优化查询,对于11的,可以使用联合查询来替代<o:p></o:p>

3、对于1MNM的性能问题,没有很好的解决办法,在性能要求比较高时,考虑少用。<o:p></o:p>

4、对于1Mxml<o:p></o:p>

  Resultmap的设置<o:p></o:p>

id="result" class="exsample.dao.domain.Category"><o:p></o:p>

    property="categoryId" column="catid"/><o:p></o:p>

    property="name" column="name"/><o:p></o:p>

    property="description" column="descn"/><o:p></o:p>

    property="productList" column="catid" select="getProductsByCategoryId"/><o:p></o:p>

  <o:p></o:p>

  Select的设置<o:p></o:p>

  id="getProduct" resultMap="result"><o:p></o:p>

    select productid, name, descn, category from product where productid = #value#<o:p></o:p>

  <o:p></o:p>

<o:p> </o:p>

五、缓存<o:p></o:p>

1、只读缓存,可让多用户共享,性能更好<o:p></o:p>

2Serializble可读写缓存,不能与延迟缓存同时使用,因为延迟加载代理是不支持Serializble<o:p></o:p>

3、缓存类型<o:p></o:p>

类型<o:p></o:p>

说明<o:p></o:p>

Memory<o:p></o:p>

缺省week<o:p></o:p>

能打打提高常用查询的性能<o:p></o:p>

jvm中内存管理的可达性模型,数据可能垃圾收集器清除,不会造成内存不足。<o:p></o:p>

Lru<o:p></o:p>

不要cache太多对象,可能会造成内存不足。<o:p></o:p>

Fifo<o:p></o:p>

OSCACHE<o:p></o:p>

第三方包,功能强大,需自己配置<o:p></o:p>

<o:p> </o:p>

六、动态Mapped Statement<o:p></o:p>

1Iterator$……$ 连用可以自动实现很多复杂的sql<o:p></o:p>

2、对于Iterator的传入参数,在sql中需要写成#value[]#的形式<o:p></o:p>

3、在sql#……#用于带入sql中的参数,$……$用于带入sql中的关键字、字段名等<o:p></o:p>

  id="getProductsByLike" resultMap="result"><o:p></o:p>

    select productid, name, descn, category from product<o:p></o:p>

    prepend="where"><o:p></o:p>

      prepend="and" property="productIdList"    open="(" close=")" conjunction="OR">

分享到:
评论
1 楼 laorer 2007-09-19  
http://dev2dev.bea.com.cn/bbsdoc/20050974.html
这是weblogic的一些配置,还比较不错,有意学习wls的,可以看看

相关推荐

    IBatis学习笔记以及使用心得

    IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得

    spring+struts2+ibatis简单登录实例--特别适新人学习

    一个简单的spring+struts+ibatis整合的实例,实现了用户登录,用户登录成功则显示欢迎信息,失败则显示用户名或密码错误,该实例非常简单基础,特别适合新人学习,工程包含了必要的资源包,部署到服务器中及可运行,...

    iBatisDemo

    1. "Ibatis学习随笔 - 努力创造未来! - BlogJava.htm":这可能是一篇博客文章,作者分享了他们在学习iBatis过程中的心得和经验,可能涵盖了iBatis的基本概念、安装、配置、映射文件的编写,以及如何执行SQL语句等...

    简易SSI框架搭建与验证

    在本文中,我们将探讨如何搭建一个基于Struts2、Spring和iBatis的简单SSI(Struts2-Spring-iBatis)框架,并分享相关学习心得。这个框架是Java Web开发中常用的MVC(模型-视图-控制器)架构,它能够有效地解耦应用的...

    java项目心得总结.docx

    在进行Java项目开发的过程中,我积累了丰富的经验和深入的理解。本文将主要围绕项目开发中的核心知识点进行总结,包括CRUD操作、页面布局、问题定位、持久层框架以及...不断学习和实践,才能在面对复杂项目时游刃有余。

    2021软件公司实习总结报告.doc

    此外,我还学习了新技能,如Webservice和iBatis,以及如何将所学的Struts、Hibernate、Spring框架应用到实际项目中。 【技术学习与应用】 在实习中,我接触了Webservice,这是一种轻量级的通信技术,用于接收并...

    2021软件公司实习总结报告.docx

    实习期间,实习生深入参与了Java项目的开发,从需求分析到开发实施,同时学习了Webservice和iBatis等技术。在实习过程中,实习生体验了软件开发的完整流程,包括熟悉企业开发流程、编码规范、项目设计、开发、调试...

    软件开发讲座报告资料.pdf

    10. **学习心得**: - 知识更新和观念改变的重要性。 - 学习的细节决定成败。 - 学以致用,强调实践的重要性。 - 不断学习以促进进步和创新。 这份报告揭示了软件开发行业的发展趋势,企业面临的挑战,以及个人...

    mybatis详细介绍,特点,特性,用途,使用方法,学习方法文档

    MyBatis 是一款优秀的开源持久层框架,它的前身是 iBatis。该框架通过提供一种简单的方式来将 Java 对象映射到 SQL 语句上,从而极大地方便了数据库操作。MyBatis 主要应用于 Java 应用程序中,能够帮助开发者简化对...

    大杂烩很多文档SSH

    标题中的“大杂烩很多文档SSH”可能是指这个压缩包包含了一系列与软件开发相关的文档,特别是涉及SSH(Spring、Struts、Hibernate)这三大开源框架的技术...学习这些内容有助于提升开发者在实际项目中的技能和效率。

Global site tag (gtag.js) - Google Analytics