`

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源码 ibatis源码

    本文将通过分析iBatis的源码,深入探讨其设计理念和实现机制。 一、iBatis架构概述 iBatis主要由SqlMapConfig.xml配置文件、SqlMap接口和Executor执行器三大部分构成。SqlMapConfig.xml配置文件定义了数据源、事务...

    Ibatis3手册 Ibatis3参考手册

    本篇文章基于“Ibatis3手册 Ibatis3参考手册”的标题及描述,深入解析Ibatis3的核心概念、架构特点以及如何进行实际操作,旨在帮助读者全面理解Ibatis3的工作原理与应用场景。 ### 一、Ibatis3简介 Ibatis3是一款...

    ibatis官方中文文档

    以下是对iBatis核心知识点的详细解析: 1. **简介**: iBatis是由Apache软件基金会维护的开源项目,其主要功能是在Java应用中简化数据库操作。它将SQL与Java代码分离,使开发者能更好地管理和控制数据访问层。 2....

    ibatis2.0中文API

    在iBATIS 2.0中文API中,我们可以深入理解这个框架的核心功能和用法,包括一对多、多对一的关系映射、属性设置以及解决方案的详细解析。 首先,一对多和多对一的关系映射是ORM(对象关系映射)中的关键概念。在...

    myBatis和ibatis的区别

    通过对ibatis与myBatis之间区别的详细分析,我们可以看到myBatis不仅继承了ibatis的优点,还在很多方面进行了改进和优化,使得其在功能性和易用性上都有了显著提升。对于开发者而言,选择myBatis作为持久层框架可以...

    ibatis学习资料汇总

    2. 参数映射:通过参数映射,iBatis可以自动将Java对象的属性值映射到SQL语句的参数,反之亦然,返回结果也能自动映射到Java对象。 3. 事务管理:iBatis提供了简单的事务控制,可以在代码中手动管理,也可以通过...

    ibatis的dtd文件

    在Ibatis中,DTD(Document Type Definition)文件扮演着关键角色,它们定义了XML配置文件的结构和规则,使得XML配置能够被正确解析和理解。下面我们将深入探讨Ibatis的DTD文件及其在学习和开发过程中的应用。 首先...

    ibatis基本操作数据库

    6. **插件支持**:iBatis允许用户自定义插件,通过拦截器(Interceptor)对SqlSession的方法进行增强,实现如日志记录、性能分析等功能。 在使用iBatis进行数据库操作时,应遵循以下步骤: 1. 创建...

    iBATIS框架源码剖析源码

    通过深入分析iBATIS的源码,开发者不仅可以了解其工作原理,还能学习到设计模式、数据库访问的最佳实践以及如何优雅地处理数据库操作。对于提升Java开发者的技能和理解数据库访问层的实现有极大的帮助。在实际开发中...

    ibatis 配置文件详解

    通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。

    ibatis的使用教程

    - `&lt;select&gt;` 标签用于查询,其中包含 SQL 语句,并设置 `resultClass` 属性指定返回结果的类型。 - `&lt;insert&gt;` 标签用于插入数据,设置 `parameterClass` 指定输入参数类型。 - `&lt;update&gt;` 标签用于更新数据。 - `...

    开发Ibatis需要的类库

    本篇将详细讲解开发Ibatis过程中所需的关键类库和相关知识点。 首先,Ibatis 的核心类库包括以下几个主要部分: 1. **MyBatis.jar**:这是Ibatis的主要实现库,包含了SqlSession、SqlSessionFactory、Mapper接口和...

    ibatis jar

    《深入解析iBatis框架:基于ibatis-2.3.0.677.jar的探索》 在Java世界中,iBatis作为一个轻量级的持久层框架,以其灵活性和易用性深受开发者喜爱。它将SQL语句与Java代码分离,提供了比JDBC更为方便的数据操作方式...

    ibatis 文档查询

    【描述】:本文将详细解析iBATIS框架中的查询功能,包括处理复杂对象关系、XML映射和数据集操作,旨在帮助开发者充分利用iBATIS进行高效数据库操作。 【标签】:iBATIS、查询、映射、对象关系 【正文】: iBATIS...

    ibatis.util包

    Ibatis提供了一个日志接口`org.apache.ibatis.logging.Log`,而`ibatis.util.LogFactory`则负责根据用户配置的实现(如Log4j、SLF4J或Java内置的日志系统)创建对应的日志实例,用于记录SQL执行和其他操作的详细信息...

    解决IBatis缓存动态字段问题

    #### 问题分析 在IBatis框架中,`com.ibatis.sqlmap.engine.mapping.result.AutoResultMap` 类负责处理结果集的映射。该类中的 `getResults` 方法会在第一次执行时初始化缓存中的字段映射信息。这意味着,如果前后...

    ibatis.doc

    下面将详细介绍iBATIS的关键概念和特性。 首先,准备工作包括对iBATIS环境的搭建,这通常涉及下载iBATIS库,将其导入到项目中,并配置相应的依赖。构建iBATIS基础代码主要是创建SqlMapConfig.xml配置文件,用于设置...

    Ibatis Plugin

    4. **代码生成**:这个工具的实现原理可能包括解析数据库元数据,根据表结构生成相应的Java实体类,包括属性、getter和setter方法、构造函数等,同时也可能生成与之对应的Mapper接口和XML配置文件。 5. **Demo编写*...

    iBATIS 模板

    iBATIS,全称为“Java SQL Mapping Framework”,是一款在Java应用程序中进行数据库操作的开源框架..."iBATIS test"这个文件可能是用于测试iBATIS模板配置和功能的示例,你可以通过分析和运行它来加深对iBATIS的理解。

Global site tag (gtag.js) - Google Analytics