`

Ibatis配置详解

阅读更多

Ibatis配置详解【转载】

 

ibatis与hibernate都是持久层的额技术框架,这里看看ibatis的配置:作为自己以后的参考:   

  ibstis的配置主要由两种文件,   

  (一)有关项目的总体配置,如连接的数据源,连接池,缓存等的配置,也即sqlmapconfig.xml文件的配置。   

  (二)sqlmap.xml文件的配置,也即对象与表的操作映射的配置。   

下面分两个部分进行记录

第一部分 sqlmapconfig.xml   
  
在这个文件中总共的结构如下:   
<?xml version="1.0" encoding="UTF-8"?>   
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">   
<sqlMapConfig>   
   
  <!-- 这里进行文件的注释说明 -->   
   
  <properties resource="">       ------->在这里将项目(工程)的所有资源文件包含进来,将相对与src路径的资源文件的路径以及文件名包含进来   
  
   
  <settings  cacheModelsEnabled="true"  --->全局控制sqlMapClient的缓存   
              enhancementEnabled="true" --->全局控制运行时字节码增强,优化javabean的属性性能   
              lazyLoadingEnabled="true"  --->延迟加载   
              errorTracingEnabled="true"   
              maxRequests="32"   ---->同时执行sql语句的最大线程数,通常大小是maxTransactions的10倍,并且总是大于maxTransactions和maxSessions的总和。减小这个值能够提高性能。   
              maxSessions="10"   
              maxTransactions="5"   
              useStatementNamespaces="false"  --->是否启动全局的sqlmap名字空间。如果启动则应用时,必须加上名字空间:queryForObject(sqlMap的名字空间.statementName)   
  
  />  --------->这个节点是设置工程的总体性能,根据名称来设置   
  
     
  <typeAlias alias="person" type="com.Jdnis.ibatis.model.Person" />   
  ----->这个节点是将长的路径名等用短的进行替代,也就是用上面的person来代表右边的person类   
  
      
    <transactionManager type="JDBC">  -->type指定事务管理器:JDBC,JTA,EXTERNAL,三者的区别后面再讲到   
        <dataSource type="SIMPLE">  -->type值由:SIMPLE,DBCP,JNDI三者的使用后面再讲   
            <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />   
            <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/person" />   
            <property name="JDBC.Username" value="root" />   
            <property name="JDBC.Password" value="root" />   
            <property name="Pool.MaximumActiveConnections" value="10" />   
            <property name="Pool.MaximumIdleConnections" value="5" />   
            <property name="Pool.MaximumCheckoutTime" value="120000" />   
            <property name="Pool.TimeToWait" value="500" />   
            <property name="Pool.PingQuery" value="select 1 from sample" />   
            <property name="Pool.PingEnabled" value="false" />   
            <property name="Pool.PingConnectionsOlderThan" value="1" />   
            <property name="Pool.PingConnectionsNotUsedFor" value="1" />   
        </dataSource>   
    </transactionManager>     
  
    ------->这个节点是来配置数据源,数据库连接等等信息的。   
   
  
   <sqlMap resource="com/neusoft/ibatis/map/person.xml" />   
       -->将系统中的对象与数据库表的映射文件都包含进来上面采用的时相对路径,当然也可以用绝对路径:<sqlmap url="file:///C:/config/person.xml"   
      
</sqlMapConfig>   
    
  
 第二部分:sqlmap.xml映射文件   
  
<?xml version="1.0" encoding="UTF-8"?>   
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">   
<sqlMap namespace="Person">   
   <!-- 注释说明 -->   
     
   <cacheModel id="personCache" type="LRU">   
     <flushInterval hours="24"/>   
     <property name="size" value="1000"/>   
   </cacheModel>   
    
   <typeAlias alias="person" type="com.Jdnis.ibatis.model.Person" />   
     
   <parameterMap id="personParam" class="person">   
      <parameter property="id"/>   
       ......   
   </parameterMap>   
  
   <resultMap id="personResult" class="person">   
      <result property="id" column="PER_ID"/>   
         ......   
   </resultMap>   
  
   <statement id="insertPerson" parameterClass="person">   
     INSERT INTO persons VALUES(#id#,#firstName#,#lastName#,#birthDate#,#weight#,#height#)   
   </statement>   
   其他<statement>,<insert>,<update>,<select>,<delete>,<procedure>   
</sqlMap>   
  
注解:   
  <1>statement   
     属性:id(名称),parameterClass(输入参数的类型),resultClass(输出参数的类型),parameterMap(name of parameterMap),resultMap(name of reaultMap),cacheModel(name of cacheModel),其中只有一个必选属性:id   
statement 的体时sql语句,当sql有特殊字符时,将它放进CDATA块中如:<![CDATA[select * from person where PER_D>#id#]]>   
  
  <2>自动生成主键   
      通过<insert>子元素<selectKey>来支持自动生成的键值,例如:   
     ----对于oracle   
    <insert id="insertPerson-Oracl" parameterClass="person">   
       <selectKey resultClass="int" keyProperty="id">   
          SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL   
       </selectKey>   
       insert into   
       PERSON(PER_ID,PER_FIRST.....)   
       values(#id#,#firstName#....);   
    </insert>   
    --->对于sqlServer   
    <insert id="insertPerson-sqlServer" parameterClass="person">   
       insert into   
       PERSON(PER_FIRST.....)   
       values(#firstName#....);   
       <selectKey resultClass="int" keyProperty="id">   
          SELECT @@IDENTITY AS ID   
       </selectKey>   
    </insert>   
  
  <3>存储过程   
<parameterMap id="swapParameters" class="map">   
   <parameter property="email1" jdbcType="varchar" javaType="java.lang.String" model="INOUT"/>   
<parameter property="email12" jdbcType="varchar" javaType="java.lang.String" model="INOUT"/>   
  </parameterMap>   
  <procedure id="swapEmailAddresses" parameterMap="swapParameters">   
    {call swap_email_addres(?,?)}   
  </procedure>   
  
  <4>parameterClass 输入参数的类类型   
  <5>resultClass 输出参数的类类型   
  <6>parameterMap   
     用到预处理的PreparedStatement,将要进行预处理的数据,先放到parameterMap元素中,接着引用parameterMap元素:例如:   
<parameterMap id="insert-person-param" class="person">   
  <parameter property="id"/>   
  <parameter property="firstName"/>   
  <parameter property="lastName"/>   
  <parameter property="birthDate"/>   
  <parameter property="weight">   
  <parameter property="height"/>   
</parameterMap>   
<statement id="insertPerson" parameterMap="insert-person-param">   
  insert into person values(?,?,?,?,?,?);   
</statement>   
  
<7>resultMap结果映射到预先定义的resultMap中   
<resultMap id="get-person" resultClass="person">   
  <result property="id" column="PER_ID"/>   
  <result property="firstName" column="PER_FIRST_NAME"/>   
  ......   
</resultMap>   
<statement id="getPerson" resuleMap="get-person">   
  select * from person   
<statement>   
  
  <8>cacheModel定义查询缓存   
<cacheModel id="person-cache" implementation="LRU">   
  <flushInterval hours="24">   
  <flushOnExecute statement="insertPerson"/>   
  <flushOnExecute statement="updatePerson"/>   
  <flushOnExecute statement="deletePerson"/>   
   ......    
  <property name="size" value="1000"/>   
</cacheModel>   
<statement id="getPerson" parameterClass="int" cacheModel="person-cache">   
  <![CDATA[select * from person where PER_ID=#id#]]>   
</statement>   
  注解:每隔24小时,就会清除缓冲区,除非执行了insertPerson,updatePerson,deletePerson操作(立即清除缓冲区)
 

 

分享到:
评论

相关推荐

    ibatis配置详解

    **Ibatis配置详解** Ibatis,一款轻量级的Java持久层框架,它与Hibernate、MyBatis等ORM(对象关系映射)框架并列,是处理数据库操作的重要工具。Ibatis的核心理念是将SQL语句与Java代码分离,使得开发者能够更灵活...

    ibatis 配置文件详解

    ### ibatis配置文件详解 #### 一、ibatis概述 ibatis,又称MyBatis,是一种优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。ibatis可以...

    ibatis相关配置

    ### Ibatis配置详解 1. **全局配置文件(ibatis-config.xml)** 全局配置文件是Ibatis系统的起点,它包含了数据源、事务管理器、插件、类型别名等整体设置。例如: ```xml &lt;!DOCTYPE configuration PUBLIC "-/...

    log4j和ibatis配置文档

    《log4j与iBatis配置详解》 在软件开发中,日志管理和数据库操作是两个至关重要的环节。Log4j作为Java世界里最流行的日志框架之一,它提供了强大的日志记录功能,帮助开发者追踪应用程序运行过程中的信息、警告、...

    IBATIS 配置+简单案列

    **IBATIS 配置详解** IBATIS 是一款优秀的持久层框架,它为Java应用程序提供了灵活的数据库访问层。它的主要目标是简化数据库操作,将SQL与Java代码分离,从而实现更高效的数据库管理和维护。在本教程中,我们将...

    ibatis sqlmap配置详解

    SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的...Sql Map配置文件是iBatis配置的核心,从数据库连接到执行SQL时使用的sqlMap文件都是通过此文件中的配置提供给框架的,它通常命名为sqlMapConfig.xml

    ibatis配置文件、映射文件详解

    ### ibatis配置文件、映射文件详解 #### 1. SQL Map Config 文件详解 在ibatis框架中,`sqlMapConfig.xml`是一个非常重要的配置文件,它主要用于设置ibatis的全局配置信息,包括数据库连接信息、环境配置以及其它...

    ibatis基础知识详解

    **Ibatis基础知识详解** Ibatis,全称MyBatis,是一个优秀的开源持久层框架,它支持定制化SQL、存储过程以及高级映射。在Java应用中,Ibatis可以帮助开发者将数据库操作与业务逻辑分离,从而简化开发工作,提高代码...

    ibatis环境搭建教程

    #### 三、ibatis配置详解 在ibatis中,配置文件通常包括`sqlmap`、`datasource`、`settings`等元素,下面详细介绍这些配置项的作用: ##### 1. SQL Map配置 - ****:用于定义和引用属性值,可以在配置文件中使用...

    ibatis配置文件信息

    #### 二、ibatis配置文件详解 ibatis的配置文件主要包括三部分:`SqlMap.properties`、`SqlMapConfig.xml` 和 `Student.xml`。下面将分别对这三个文件进行详细介绍。 ##### 1. SqlMap.properties 文件 `SqlMap....

    Spring+iBatis整合详解

    ### Spring与iBatis整合详解 #### 一、前言 在Java企业级应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力深受开发者喜爱,而iBatis(现更名为MyBatis)作为一款优秀的持久层框架,通过...

    ibatis_SqlMapConfig配置详解

    SqlMapConfig.xml是iBATIS的核心配置文件,它定义了全局的设置和数据源信息,使得整个系统能够正确地运行和管理SQL映射。下面我们将详细解析这个配置文件的各个部分。 首先,配置文件的开头是XML声明和DTD定义,...

    ibatis开发

    #### 三、ibatis配置详解 ibatis的配置主要通过XML文件完成,其中最重要的文件是`sqlMapConfig.xml`,它包含了数据源、事务管理器等全局配置信息。此外,每个具体的数据库操作都通过单独的Mapper XML文件定义。 - *...

    struts+spring+ibaits配置详解

    ### Struts + Spring + iBatis 配置详解 #### 一、概述 在实际的软件开发项目中,为了提高代码的复用性与维护性,通常会采用一系列的框架来构建应用程序。其中,Struts、Spring 和 iBatis 是三个非常流行且互补的...

    Spring 3.0 整合Ibatis 3

    iBatis 配置详解 iBatis 的配置需要特别注意,因为这关系到 SQL 映射文件的加载以及后续的数据操作。具体的配置内容会在后续的 Java 文件中体现。 #### 五、总结 通过以上步骤,我们可以有效地将 Spring 3.0 与 ...

    ibatis 开发指南(pdf)

    #### 三、iBatis配置详解 - **Settings节点**:定义全局设置,如是否启用缓存、是否使用字节码增强机制、是否启用延迟加载等。 - **transactionManager节点**:定义iBatis的事务管理器类型,可以选择JDBC、JTA或...

Global site tag (gtag.js) - Google Analytics