`

ibatis 属性详细分析

阅读更多

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

   如果主键值为String

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

       <![CDATA[ 

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

       ]]> 

     </selectKey>

   如果主键值为Int

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

       <![CDATA[ 

           Select last_insert_id();

       ]]> 

     </selectKey>

 

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

SQL注入

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

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

公共SQL提取的运用

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

ResultClassResultMap的区别

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

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

 

 

parameterClassparameterMap的区别

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

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

#”和“$”的区别

  # 为占为符

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

分页功能的实现

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

 b. 直接使用limit实现

 where 条件的组装

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

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

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

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

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

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

  <isNull>          检查属性是否为NULL

  <isNotNull>       检查属性是否不为NULL

  <isEmpty>        检查属性是否为NULL或空

  <isNotEmpty>     检查属性是否不为NULL或不为空

  <isPropertyAvailable>       检查是否存在该属性

  <isNotPropertyAvailable>    检查是否不存在该属性

<![CDATA[  ]]>的含义

用了特殊字符的SQL语句不能直接使用。必须用<![CDATA[ ]]>

 

ibatis自带缓存的运用

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

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

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

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

</cacheModel>

 

缓存策略:

   LRU:最近最少使用

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

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

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

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

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

   FIFO:先进先出

   OSCACHE:配置oscache.properties

value的使用

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

iterateibatis里的运用

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

   <![CDATA[

       Username=#stringList[]#

]]>

</iterate>

 

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

 

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

事务的处理

startTransacton();

commitTransaction();

rollbackTransaction();

批处理

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

sqlMap.startBatch();

sqlMap.endBatch();

xmlResultName的运用 详细输出结果

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

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

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

</select>

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

 <xmlversion="1.0"encoding="UTF-8"/>

< person>

<id>2</id>

<name>2222</name>

</person>

xmlResultName属性值为根目录名

分享到:
评论

相关推荐

    iBATIS实战

    本书是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例...

    架构师考试-快速通关-知识点

    分析-Hibernate和iBatis 分析-内存数据库和关系数据库 分析-数据持久层定义及优点 分析-数据持久层技术分类 分析-文件系统和关系型数据库 分析-状态图和活动图定义与区别 关系模式 关系运算-比较 管理信息系统规划的...

    Spring in Action(第2版)中文版

    16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3在jsf页面中使用springbean 16.4.4在jsf中暴露应用程序环境 16.5spring中带有dwr的支持ajax的应用程序 16.5.1直接web远程控制 16.5.2访问spring管理的...

    Spring in Action(第二版 中文高清版).part2

    16.4.1 解析JSF管理的属性 16.4.2 解析Spring Bean 16.4.3 在JSF页面中使用Spring Bean 16.4.4 在JSF中暴露应用程序环境 16.5 Spring中带有DWR的支持Ajax的应用程序 16.5.1 直接Web远程控制 16.5.2 访问...

    Spring in Action(第二版 中文高清版).part1

    16.4.1 解析JSF管理的属性 16.4.2 解析Spring Bean 16.4.3 在JSF页面中使用Spring Bean 16.4.4 在JSF中暴露应用程序环境 16.5 Spring中带有DWR的支持Ajax的应用程序 16.5.1 直接Web远程控制 16.5.2 访问...

    spring chm文档

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @...

    spring in action英文版

     4.6 Spring和iBATIS  4.6.1 配置SQL Map  4.6.2 使用SqlMapClientTemplate  4.7 Spring和OJB  4.8 小结  第5章 事务管理  5.1 理解事务  5.1.1 仅用4个词解释事务  5.1.2 理解Spring对...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。 C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。 D .可使用存储过程写分页逻辑...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 ...

    AppFramework_V1.0

    1.1 引言 约有90%的企业信息化管理系统基于数据库实现,这类系统中又有超过30%的代码集中在数据访问层负责...下文将分入门、精通、高级三个篇章,详细讲述如何使用AppFramework数据库访问组件来搭建应用程序。

    Spring 2.0 开发参考手册

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @...

    AppFramework_V1.0_New

    代码生成器,ORMap,支持Oracle/SqlServer/MSAccess,性能大大优于iBatisNet,终身免费,随意使用。...下文将分入门、精通、高级三个篇章,详细讲述如何使用AppFramework数据库访问组件来搭建应用程序。

    spring applicationContext 配置文件

    &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" p:dataSource-ref="dataSourceProxy"&gt; &lt;value&gt;classpath:SqlMapConfig.xml&lt;/value&gt; &lt;/property&gt; ...

    Spring中文帮助文档

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 ...

    Spring API

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 ...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    V1.1比V1.0增强了IDBSession功能,可查询得到 IDataReader;修改了查询 in 操作符的bug。 内含代码生成器,支持...下文将分入门、精通、高级三个篇章,详细讲述如何使用AppFramework数据库访问组件来搭建应用程序。

    Spring面试题

    ☆ Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 ☆ Spring Web 模块:...

    Java面试宝典2010版

    11、iBatis与Hibernate有什么不同? 12、写Hibernate的一对多和多对一双向关联的orm配置? 9、hibernate的inverse属性的作用? 13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、...

    最新Java面试宝典pdf版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试笔试资料大全

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

Global site tag (gtag.js) - Google Analytics