Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477434
  • 博文数量: 155
  • 博客积分: 2954
  • 博客等级: 少校
  • 技术积分: 1000
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-12 22:00
文章分类

全部博文(155)

文章存档

2014年(2)

2013年(5)

2012年(10)

2011年(33)

2010年(105)

我的朋友

分类: Java

2011-03-07 19:29:51

返回值

insert 返回的为插入的主键值,但必须在配置文件中加入

   如果主键值为String

    <selectKey resultClass="String" keyProperty="resourceId" > 

        

             select resource_id as resourceId  from rentout where resource_id=#resourceId#

       ]]> 

     selectKey>

   如果主键值为Int

      <selectKey resultClass="Integer" keyProperty="id" > 

        

           Select last_insert_id();

       ]]> 

     selectKey>

 

Update,Delete返回为修改数据影响的条数;

注入

  a.在关键字传入前加‘%’; 例:String  keyword=”%”+keyword+”%”;

b、过滤关键字中的非法字符

SQL提取的运用

   中包含需要复用的SQL语句,在需要的地方  refid=””/> 引入即可

ResultMap的区别

  resultClass:可以把结果自动映射到相应的JAVA类中,但无法指定输出字段的类型,会对性能产生轻微的影响。

  resultMap:可以预先定义resultMap元素,可以控制数据如何从结果集中取出,以及哪个属性匹配哪个字段,

 

 

parameterMap的区别

parameterClass属性值是JAVA类的全限定名,目的是限制输入参数的类型为指定的JAVA类,如果不指定,任何带有合适属性(get/set方法)的JAVA BEAN都可以作为输入参数

parameterMap:预先定义parameterMap的属性值,用于有次序的参数匹配JDBC符号

#”和“$”的区别

  # 为占为符

  $”为直接替换,但为出现SQL引入问题和性能上的影响,like,limit和表名的引入必须使用“$

 a. ibatis自带的分页功能,但是自带分页是把所有数据读入内存再分页的,所以必须自己覆写LimitSqlExecutor方法,

 b. 直接使用limit实现

 条件的组装

           比较属性值和静态值或另一个属性值是否相等

        比较属性值和静态值或另一个属性值是否不相等

      比较属性值是否大于静态值或另一个属性值

     比较属性值是否大于等于静态值或另一个属性值

        比较属性值是否小于静态值或另一个属性值

       比较属性值是否小于等于静态值或另一个属性值

            检查属性是否为NULL

         检查属性是否不为NULL

          检查属性是否为NULL或空

       检查属性是否不为NULL或不为空

         检查是否存在该属性

      检查是否不存在该属性

的含义

用了特殊字符的SQL语句不能直接使用。必须用

 

自带缓存的运用

  id=”person-cache” implementation=”LRU”>

     hours=”24”/>       //可以用hours/minutes/second

      statement=”selectperson”/>    //需要缓存的方法,可以为多个

     name=”size”  value=”1000”/>

 

缓存策略:

   LRU:最近最少使用

   MEMORY:适用于没有统一的对象重用模式,property的属性值必须是STRONG

      SOFTWEAK,这三个值分别对应于JVM不同内存reference类型。

      WEAK,大多数情况下,WEAK是最佳选择,缺省值就是WEAK,它能大大提高常用查询的性能,对于当前不被使用的查询数据,将被清除

      SOFT,在查询结果对象不被使用,可以减少内存不足的可能性

      STRONG,对查询的结果一直保留在内存中,可以使用在数据量很少或者静态数据的时

   FIFO:先进先出

   OSCACHE:配置oscache.properties

的使用

  假如没有必要写JAVA BEAN作为参数,可以直接使用基本类型,也可以直接传入参数值。如果是直接传入参数值就配置文件中必须写 #value#做为参数传入

ibatis里的运用

  perpend=”AND” property=”stringList”  open=”(”   close=”)”  conjunction=”OR”>

   

       Username=#stringList[]#

]]>

 

List参数名后面一定要加“[]”,防止解析器简单的把List解析成String

 

结果:username=(1 or 2 or 3)

startTransacton();

commitTransaction();

rollbackTransaction();

如果有很多非查询的(insert/update/delete)语句要处理,为了减少网络通讯的流量,可以进行批处理

sqlMap.startBatch();

sqlMap.endBatch();

xmlResultName的运用 详细输出结果

 直接把查存出来的结果映射成XML document

   id=”getPerson” parameterClass=”int”  resultClass=”xml” xmlResultName=”person”>

   Select id as id,name as name from  person  where id=#value#;

结果:返回的为XML格式的字符串(String

 

< person>

2

2222

person>

xmlResultName属性值为根目录名

阅读(1281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~