自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iBATIS配置淺析

開發(fā) 后端
iBATIS配置是如何的呢?iBATIS配置需要注意些什么呢?這篇文章將會給你一一介紹。

iBATIS配置主要由兩種文件,

(一)有關(guān)項目的總體配置,如連接的數(shù)據(jù)源,連接池,緩存等的配置,也即sqlmapconfig.xml文件的配置。

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

下面分兩個部分進(jìn)行記錄

第一部分sqlmapconfig.xml

在這個文件中總共的結(jié)構(gòu)如下:

  1. ﹤?xml version="1.0" encoding="UTF-8"?﹥   
  2.  
  3. ﹤!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.iBATIS.com/dtd/sql-map-config-2.dtd"﹥   
  4.  
  5. ﹤sqlMapConfig﹥   
  6.  
  7. ﹤properties resource=""﹥在這里將項目(工程)的所有資源文件包含進(jìn)來,將相對與src路徑的資源文件的路徑以及文件名包含進(jìn)來   
  8.  
  9. ﹤settings  cacheModelsEnabled="true" 全局控制sqlMapClient的緩存   
  10.  
  11. enhancementEnabled="true"全局控制運行時字節(jié)碼增強,優(yōu)化javabean的屬性性能   
  12.  
  13. lazyLoadingEnabled="true" 延遲加載   
  14.  
  15. errorTracingEnabled="true"   
  16.  
  17. maxRequests="32" 同時執(zhí)行sql語句的最大線程數(shù),通常大小是maxTransactions的10倍,并且總是大于maxTransactions和maxSessions的總和。減小這個值能夠提高性能。  
  18.  
  19. maxSessions="10"   
  20.  
  21. maxTransactions="5"   
  22.  
  23. useStatementNamespaces="false"  是否啟動全局的sqlmap名字空間。如果啟動則應(yīng)用時,必須加上名字空間:queryForObject(sqlMap的名字空間.statementName)   
  24.   /﹥   
  25.  
  26. //這個節(jié)點是設(shè)置工程的總體性能,根據(jù)名稱來設(shè)置   
  27.  
  28. ﹤typeAlias alias="person" type="com.Jdnis.ibatis.model.Person" /﹥  
  29.  
  30.   ---﹥這個節(jié)點是將長的路徑名等用短的進(jìn)行替代,也就是用上面的person來代表右邊的person類   
  31.  
  32. ﹤transactionManager type="JDBC"﹥ type指定事務(wù)管理器:JDBC,JTA,EXTERNAL,三者的區(qū)別后面再講到   
  33.  
  34. ﹤dataSource type="SIMPLE"﹥ type值由:SIMPLE,DBCP,JNDI三者的使用后面再講   
  35.  
  36. ﹤property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /﹥   
  37.  
  38. ﹤property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/person" /﹥   
  39.  
  40. ﹤property name="JDBC.Username" value="root" /﹥   
  41.  
  42. ﹤property name="JDBC.Password" value="root" /﹥   
  43.  
  44. ﹤property name="Pool.MaximumActiveConnections" value="10" /﹥   
  45.  
  46. ﹤property name="Pool.MaximumIdleConnections" value="5" /﹥   
  47.  
  48. ﹤property name="Pool.MaximumCheckoutTime" value="120000" /﹥   
  49.  
  50. ﹤property name="Pool.TimeToWait" value="500" /﹥   
  51.  
  52. ﹤property name="Pool.PingQuery" value="select 1 from sample" /﹥   
  53.  
  54. ﹤property name="Pool.PingEnabled" value="false" /﹥   
  55.  
  56. ﹤property name="Pool.PingConnectionsOlderThan" value="1" /﹥   
  57.  
  58. ﹤property name="Pool.PingConnectionsNotUsedFor" value="1" /﹥   
  59.  
  60. ﹤/dataSource﹥   
  61.  
  62. ﹤/transactionManager﹥    

這個節(jié)點是來對iBATIS配置數(shù)據(jù)源,數(shù)據(jù)庫連接等等信息的。
 
﹤sqlMap resource="com/neusoft/ibatis/map/person.xml" /﹥

將系統(tǒng)中的對象與數(shù)據(jù)庫表的映射文件都包含進(jìn)來上面采用的時相對路徑,當(dāng)然也可以用絕對路徑:﹤sqlmap url="file:///C:/config/person.xml"

﹤/sqlMapConfig﹥

 第二部分:sqlmap.xml映射文件

  1. ﹤?xml version="1.0" encoding="UTF-8"?﹥   
  2.  
  3. ﹤!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.iBATIS.com/dtd/sql-map-2.dtd"﹥   
  4.  
  5. ﹤sqlMap namespace="Person"﹥   
  6.  
  7. ﹤cacheModel id="personCache" type="LRU"﹥   
  8.  
  9. ﹤flushInterval hours="24"/﹥   
  10.  
  11. ﹤property name="size" value="1000"/﹥   
  12.  
  13. ﹤/cacheModel﹥   
  14.     
  15.    ﹤typeAlias alias="person" type="com.Jdnis.ibatis.model.Person" /﹥   
  16.      
  17.    ﹤parameterMap id="personParam" class="person"﹥   
  18.       ﹤parameter property="id"/﹥   
  19.        ......   
  20.    ﹤/parameterMap﹥   
  21.  
  22.    ﹤resultMap id="personResult" class="person"﹥   
  23.       ﹤result property="id" column="PER_ID"/﹥   
  24.          ......   
  25.    ﹤/resultMap﹥   
  26.  
  27.    ﹤statement id="insertPerson" parameterClass="person"﹥   
  28.      INSERT INTO persons VALUES(#id#,#firstName#,#lastName#,#birthDate#,#weight#,#height#)   
  29.    ﹤/statement﹥   
  30.    其他﹤statement﹥,﹤insert﹥,﹤update﹥,﹤select﹥,﹤delete﹥,﹤procedure﹥   
  31. ﹤/sqlMap﹥  

iBATIS配置注解:

﹤1﹥statement

屬性:id(名稱),parameterClass(輸入?yún)?shù)的類型),resultClass(輸出參數(shù)的類型),parameterMap(name of parameterMap),resultMap(name of reaultMap),cacheModel(name of cacheModel),其中只有一個必選屬性:id

statement 的體時sql語句,當(dāng)sql有特殊字符時,將它放進(jìn)CDATA塊中如:﹤![CDATA[select * from person where PER_D﹥#id#]]﹥

﹤2﹥自動生成主鍵

通過﹤insert﹥子元素﹤selectKey﹥來支持自動生成的鍵值,例如:

對于oracle

  1. insert id="insertPerson-Oracl" parameterClass="person"﹥   
  2.    ﹤selectKey resultClass="int" keyProperty="id"﹥   
  3.       SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL   
  4.    ﹤/selectKey﹥   
  5.    insert into   
  6.    PERSON(PER_ID,PER_FIRST.....)   
  7.    values(#id#,#firstName#....);   
  8. ﹤/insert﹥  

對于SQLServer

  1. insert id="insertPerson-sqlServer" parameterClass="person"﹥   
  2.    insert into   
  3.    PERSON(PER_FIRST.....)   
  4.    values(#firstName#....);   
  5.    ﹤selectKey resultClass="int" keyProperty="id"﹥   
  6.       SELECT @@IDENTITY AS ID   
  7.    ﹤/selectKey﹥   
  8. ﹤/insert﹥  

﹤3﹥存儲過程

  1. ﹤parameterMap id="swapParameters" class="map"﹥   
  2.    ﹤parameter property="email1" jdbcType="varchar" javaType="java.lang.String" model="INOUT"/﹥   
  3. ﹤parameter property="email12" jdbcType="varchar" javaType="java.lang.String" model="INOUT"/﹥   
  4.   ﹤/parameterMap﹥   
  5.   ﹤procedure id="swapEmailAddresses" parameterMap="swapParameters"﹥   
  6.     {call swap_email_addres(?,?)}   
  7.   ﹤/procedure﹥  

﹤4﹥parameterClass 輸入?yún)?shù)的類類型

﹤5﹥resultClass 輸出參數(shù)的類類型

﹤6﹥parameterMap

用到預(yù)處理的PreparedStatement,將要進(jìn)行預(yù)處理的數(shù)據(jù),先放到parameterMap元素中,接著引用parameterMap元素:例如:

  1. ﹤parameterMap id="insert-person-param" class="person"﹥   
  2.   ﹤parameter property="id"/﹥   
  3.   ﹤parameter property="firstName"/﹥   
  4.   ﹤parameter property="lastName"/﹥   
  5.   ﹤parameter property="birthDate"/﹥   
  6.   ﹤parameter property="weight"﹥   
  7.   ﹤parameter property="height"/﹥   
  8. ﹤/parameterMap﹥   
  9. ﹤statement id="insertPerson" parameterMap="insert-person-param"﹥   
  10.   insert into person values(?,?,?,?,?,?);   
  11. ﹤/statement﹥ 

 ﹤7﹥resultMap結(jié)果映射到預(yù)先定義的resultMap中

  1. ﹤resultMap id="get-person" resultClass="person"﹥   
  2.   ﹤result property="id" column="PER_ID"/﹥   
  3.   ﹤result property="firstName" column="PER_FIRST_NAME"/﹥   
  4.   ......   
  5. ﹤/resultMap﹥   
  6. ﹤statement id="getPerson" resuleMap="get-person"﹥   
  7.   select * from person   
  8. ﹤statement﹥  

﹤8﹥cacheModel定義查詢緩存

  1. ﹤cacheModel id="person-cache" implementation="LRU"﹥   
  2.   ﹤flushInterval hours="24"﹥   
  3.   ﹤flushOnExecute statement="insertPerson"/﹥   
  4.   ﹤flushOnExecute statement="updatePerson"/﹥   
  5.   ﹤flushOnExecute statement="deletePerson"/﹥   
  6.    ......    
  7.   ﹤property name="size" value="1000"/﹥   
  8. ﹤/cacheModel﹥   
  9. ﹤statement id="getPerson" parameterClass="int" cacheModel="person-cache"﹥   
  10.   ﹤![CDATA[select * from person where PER_ID=#id#]]﹥   
  11. ﹤/statement﹥ 

注解:每隔24小時,就會清除緩沖區(qū),除非執(zhí)行了insertPerson,updatePerson,deletePerson操作(立即清除緩沖區(qū))

iBATIS配置的基本相關(guān)就向你介紹到這里,希望對你有所幫助。

【編輯推薦】

  1. iBATIS工作原理淺析
  2. iBATIS七大特性詳談
  3. iBATIS不適合使用的四種情況淺析
  4. iBATIS發(fā)展方向的四方面淺析
  5. iBATIS快速創(chuàng)建應(yīng)用淺析
責(zé)任編輯:仲衡 來源: CSDN博客
相關(guān)推薦

2009-07-22 09:44:05

iBATIS Para

2009-07-22 15:01:01

iBATIS SQLM

2009-07-17 16:49:18

iBATIS XML配

2009-07-21 11:17:46

iBATISDAO的配置

2009-07-21 17:39:50

iBATIS的多對多映

2009-07-22 16:27:24

iBATIS配置類iBATIS操作類

2009-07-17 10:32:45

iBATIS MapB

2009-07-22 10:03:11

iBATIS Resu

2009-07-16 09:14:26

iBATIS DAO

2009-07-20 18:00:16

iBATIS DAO事

2009-07-15 17:19:31

iBATIS Ecli

2009-07-15 17:58:07

iBATIS 動態(tài)映射

2009-07-16 10:23:30

iBATIS工作原理

2009-07-22 10:42:59

iBATIS Cach

2009-07-16 13:08:09

iBATIS快速創(chuàng)建應(yīng)

2009-07-17 17:05:44

iBATIS緩存cacheModel

2009-07-22 15:21:00

iBATIS SQLM

2009-07-15 16:42:03

iBATIS讀寫CLO

2009-07-22 16:02:14

iBATIS參數(shù)

2009-07-17 10:59:59

iBATIS接口
點贊
收藏

51CTO技術(shù)棧公眾號