Ibatis 閰嶇疆鍙傛暟璇﹁В (浜

Ibatis 閰嶇疆鍙傛暟璇﹁В (浜?

鐩稿Hibernate鍜孉pache OJB 绛夆€滀竴绔欏紡鈥漁RM瑙e喅鏂规鑰岃█锛宨batis 鏄竴绉嶁€滃崐鑷姩鍖栤€濈殑ORM瀹炵幇銆?/span>

浠ュ墠ORM鐨勬鏋讹紙hibernate,ojb锛夌殑灞€闄愶細

1锛?绯荤粺鐨勯儴鍒嗘垨鍏ㄩ儴鏁版嵁鏉ヨ嚜鐜版湁鏁版嵁搴擄紝澶勪簬瀹夊叏鑰冭檻锛屽彧瀵瑰紑鍙戝洟闃熸彁渚涘嚑鏉elect SQL锛堟垨瀛樺偍杩囩▼锛変互鑾峰彇鎵€闇€鏁版嵁锛屽叿浣撶殑琛ㄧ粨鏋勪笉浜堝叕寮€銆?/span>

2锛?寮€鍙戣鑼冧腑瑕佹眰锛屾墍鏈夌壍娑夊埌涓氬姟閫昏緫閮ㄥ垎鐨勬暟鎹簱鎿嶄綔锛屽繀椤诲湪鏁版嵁搴撳眰鐢卞瓨鍌ㄨ繃绋嬪疄鐜帮紙灏辩瑪鑰呭伐浣滄墍闈㈠悜鐨勯噾铻嶈涓氳€岃█锛屽伐鍟嗛摱琛屻€佷腑鍥介摱琛屻€佷氦閫氶摱琛岋紝閮藉湪寮€鍙戣鑼冧腑涓ユ牸鎸囧畾锛?/span>

3锛?绯荤粺鏁版嵁澶勭悊閲忓法澶э紝鎬ц兘瑕佹眰鏋佷负鑻涘埢锛岃繖寰€寰€鎰忓懗鐫€鎴戜滑蹇呴』閫氳繃缁忚繃楂樺害浼樺寲鐨凷QL璇彞锛堟垨瀛樺偍杩囩▼锛夋墠鑳借揪鍒扮郴缁熸€ц兘璁捐鎸囨爣銆?/span>

ibatis 鐨勭潃鍔涚偣:

鍦ㄤ簬POJO 涓嶴QL涔嬮棿鐨勬槧灏勫叧绯汇€備篃灏辨槸璇达紝ibatis

骞朵笉浼氫负绋嬪簭鍛樺湪杩愯鏈熻嚜鍔ㄧ敓鎴怱QL 鎵ц銆傚叿浣撶殑SQL 闇€瑕佺▼搴忓憳缂栧啓锛岀劧鍚庨€氳繃鏄犲皠閰嶇疆鏂囦欢锛屽皢SQL鎵€闇€鐨勫弬鏁帮紝浠ュ強杩斿洖鐨勭粨鏋滃瓧娈垫槧灏勫埌鎸囧畾POJO銆?/span>

Ibatis涓嶩ibernate鐨勫尯鍒細

Hibernate鎻愪緵浜嗗叏闈㈢殑鏁?鎹簱灏佽鏈哄埗鐨勨€滃叏鑷姩鍖栤€漁RM 瀹炵幇鑰岃█锛屸€滃叏鑷姩鈥漁RM 瀹炵幇浜哖OJO 鍜屾暟鎹簱琛ㄤ箣闂寸殑鏄犲皠锛屼互鍙奡QL 鐨勮嚜鍔ㄧ敓鎴愬拰鎵ц锛岃€宨batis 鐨勭潃鍔涚偣锛屽垯鍦ㄤ簬POJO 涓嶴QL涔嬮棿鐨勬槧灏勫叧绯汇€備篃灏辨槸璇达紝ibatis骞朵笉浼氫负绋嬪簭鍛樺湪杩愯鏈熻嚜鍔ㄧ敓鎴怱QL 鎵ц銆傚叿浣撶殑SQL 闇€瑕佺▼搴忓憳缂栧啓锛岀劧鍚庨€氳繃鏄犲皠閰嶇疆鏂囦欢锛屽皢SQL鎵€闇€鐨勫弬鏁帮紝浠ュ強杩斿洖鐨勭粨鏋滃瓧娈垫槧灏勫埌鎸囧畾POJO銆?/span>

ibatis閰嶇疆鏂囦欢:

[html] view plaincopy
  1. <?xmlversion="1.0"encoding="UTF-8"?>聽聽
  2. 聽聽
  3. <!DOCTYPE聽sqlMapConfig聽聽
  4. 聽聽
  5. PUBLIC聽"-//iBATIS.com//DTD聽SQL聽Map聽Config聽2.0//EN"聽聽
  6. 聽聽
  7. "http://www.ibatis.com/dtd/sql-map-config-2.dtd">聽聽
  8. 聽聽
  9. <sqlMapConfig>聽聽
  10. 聽聽
  11. <settings聽//-------------------------锛堬紤锛壜犅?/span>
  12. 聽聽
  13. cacheModelsEnabled="true"聽聽
  14. 聽聽
  15. enhancementEnabled="true"聽聽
  16. 聽聽
  17. lazyLoadingEnabled="true"聽聽
  18. 聽聽
  19. errorTracingEnabled="true"聽聽
  20. 聽聽
  21. maxRequests="32"聽聽
  22. 聽聽
  23. maxSessions="10"聽聽
  24. 聽聽
  25. maxTransactions="5"聽聽
  26. 聽聽
  27. useStatementNamespaces="false"聽聽
  28. 聽聽
  29. />聽聽
  30. 聽聽
  31. <transactionManagertype="JDBC">聽//-----------------------锛堬紥锛壜犅?/span>
  32. 聽聽
  33. <dataSourcetype="SIMPLE">銆€銆€銆€銆€//-------------------------锛堬紦锛壜犅?/span>
  34. 聽聽
  35. <propertyname="JDBC.Driver"value="com.p6spy.engine.spy.P6SpyDriver"/>聽聽
  36. 聽聽
  37. <propertyname="JDBC.ConnectionURL"value="jdbc:mysql://localhost/sample"/>聽聽
  38. 聽聽
  39. <propertyname="JDBC.Username"value="user"/>聽聽
  40. 聽聽
  41. <propertyname="JDBC.Password"value="mypass"/>聽聽
  42. 聽聽
  43. <propertyname="Pool.MaximumActiveConnections"value="10"/>聽聽
  44. 聽聽
  45. <propertyname="Pool.MaximumIdleConnections"value="5"/>聽聽
  46. 聽聽
  47. <propertyname="Pool.MaximumCheckoutTime"value="120000"/>聽聽
  48. 聽聽
  49. <propertyname="Pool.TimeToWait"value="500"/>聽聽
  50. 聽聽
  51. <propertyname="Pool.PingQuery"value="select聽1聽from聽ACCOUNT"/>聽聽
  52. 聽聽
  53. <propertyname="Pool.PingEnabled"value="false"/>聽聽
  54. 聽聽
  55. <propertyname="Pool.PingConnectionsOlderThan"value="1"/>聽聽
  56. 聽聽
  57. <propertyname="Pool.PingConnectionsNotUsedFor"value="1"/>聽聽
  58. 聽聽
  59. </dataSource>聽聽
  60. 聽聽
  61. </transactionManager>聽聽
  62. 聽聽
  63. <sqlMapresource="com/ibatis/sample/User.xml"/>聽//-------------------锛堬紨锛壜犅?/span>
  64. 聽聽
  65. <sqlMapresource="com/ibatis/sample/Address.xml"/>聽聽
  66. 聽聽
  67. </sqlMapConfig>聽聽

鈶碨ettings 鑺傜偣 鍙傛暟

鎻忚堪

cacheModelsEnabled

鏄惁鍚敤SqlMapClient涓婄殑缂撳瓨鏈哄埗銆傚缓璁涓?true"


enhancementEnabled

鏄惁閽堝POJO鍚敤瀛楄妭鐮佸寮烘満鍒朵互鎻愬崌getter/setter鐨勮皟鐢ㄦ晥鑳斤紝閬垮厤浣跨敤JavaReflect鎵€甯︽潵鐨勬€ц兘寮€閿€銆?/span>

鍚屾椂锛岃繖涔熶负Lazy Loading甯︽潵浜嗘瀬澶х殑鎬ц兘鎻愬崌銆傚缓璁涓?true"


errorTracingEnabled

鏄惁鍚敤閿欒鏃ュ織锛屽湪寮€鍙戞湡闂村缓璁涓?true"浠ユ柟渚胯皟璇?/span>


lazyLoadingEnabled

鏄惁鍚敤寤惰繜鍔犺浇鏈哄埗锛屽缓璁涓?true"


maxRequests

鏈€澶у苟鍙戣姹傛暟锛圫tatement骞跺彂鏁帮級


maxTransactions

鏈€澶у苟鍙戜簨鍔℃暟


maxSessions

鏈€澶ession 鏁般€傚嵆褰撳墠鏈€澶у厑璁哥殑骞跺彂SqlMapClient鏁般€?/span>

maxSessions璁惧畾蹇呴』浠嬩簬maxTransactions鍜宮axRequests涔嬮棿锛?/span>

鍗?maxTransactions<maxSessions=<maxRequestsuseStatementNamespaces

鏄惁浣跨敤Statement鍛藉悕绌洪棿銆傝繖閲岀殑鍛藉悕绌洪棿鎸囩殑鏄槧灏勬枃浠朵腑锛宻qlMap鑺傜偣鐨刵amespace灞炴€э紝濡傚湪涓婁緥涓拡瀵箃_user

琛ㄧ殑鏄犲皠鏂囦欢sqlMap鑺傜偣锛?/span>

<sqlMap namespace="User">

杩欓噷锛屾寚瀹氫簡姝qlMap鑺傜偣涓嬪畾涔夌殑鎿嶄綔鍧囦粠灞炰簬"User"鍛藉悕绌洪棿銆?/span>

鍦╱seStatementNamespaces="true"鐨勬儏鍐典笅锛孲tatement璋冪敤闇€杩藉姞鍛藉悕绌洪棿锛屽锛歴qlMap.update("User.updateUser",user);

鍚﹀垯鐩存帴閫氳繃Statement鍚嶇О璋冪敤鍗冲彲锛屽锛歴qlMap.update("updateUser",user);

浣嗚娉ㄦ剰姝ゆ椂闇€瑕佷繚璇佹墍鏈夋槧灏勬枃浠朵腑锛孲tatement瀹氫箟鏃犻噸鍚嶃€?/span>

鈶?transactionManager鑺傜偣

transactionManager 鑺傜偣瀹氫箟浜唅batis 鐨勪簨鍔$鐞嗗櫒锛岀洰鍓嶆彁渚涗簡浠ヤ笅鍑犵閫夋嫨锛?/p>

脴 JDBC

閫氳繃浼犵粺JDBC Connection.commit/rollback瀹炵幇浜嬪姟鏀寔銆?/p>

脴 JTA

浣跨敤瀹瑰櫒鎻愪緵鐨凧TA鏈嶅姟瀹炵幇鍏ㄥ眬浜嬪姟绠$悊銆?/p>

脴 EXTERNAL

澶栭儴浜嬪姟绠$悊锛屽鍦‥JB涓娇鐢╥batis锛岄€氳繃EJB鐨勯儴缃查厤缃嵆鍙疄鐜拌嚜鍔ㄧ殑浜嬪姟绠$悊鏈哄埗銆?/p>

姝ゆ椂ibatis 灏嗘妸鎵€鏈変簨鍔″鎵樼粰澶栭儴瀹瑰櫒杩涜绠$悊銆傛澶栵紝閫氳繃Spring 绛夎交閲忕骇瀹瑰櫒瀹炵幇浜嬪姟鐨勯厤缃寲绠$悊涔熸槸涓€涓笉閿欑殑閫夋嫨銆?/p>

鍏充簬缁撳悎瀹瑰櫒瀹炵幇浜嬪姟绠$悊锛屽弬瑙佲€滈珮绾х壒鎬р€濅腑鐨勬弿杩般€?/p>

鈶?dataSource鑺傜偣

dataSource浠庡睘浜巘ransactionManager鑺傜偣锛岀敤浜庤瀹歩batis杩愯鏈熶娇鐢ㄧ殑DataSource灞炴€с€?/span>

type灞炴€э細 dataSource鑺傜偣鐨則ype灞炴€ф寚瀹氫簡dataSource鐨勫疄鐜扮被鍨嬨€傚彲閫夐」鐩細


脴 SIMPLE锛?/span>

SIMPLE鏄痠batis鍐呯疆鐨刣ataSource瀹炵幇锛屽叾涓疄鐜颁簡涓€涓畝鍗曠殑鏁版嵁搴撹繛鎺ユ睜鏈哄埗锛屽搴攊batis 瀹炵幇绫讳负com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory銆?/span>


脴 DBCP:

鍩轰簬Apache DBCP 杩炴帴姹犵粍浠跺疄鐜扮殑DataSource 灏佽锛屽綋鏃犲鍣ㄦ彁渚汥ataSource 鏈嶅姟鏃讹紝寤鸿浣跨敤璇ラ€夐」锛?/span>

瀵瑰簲ibatis 瀹炵幇绫讳负com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory銆?/span>


脴 JNDI锛?/span>

浣跨敤J2EE 瀹瑰櫒鎻愪緵鐨凞ataSource 瀹炵幇锛孌ataSource 灏嗛€氳繃鎸囧畾鐨凧NDI Name 浠庡鍣ㄤ腑鑾峰彇銆?/span>

瀵瑰簲ibatis 瀹炵幇绫讳负com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory銆?/span>

---------------------------------------------------------------------------------------------------------------------------------------


dataSource鐨勫瓙鑺傜偣璇存槑锛圫IMPLE&DBCP锛夛細

鍙傛暟

鎻忚堪

JDBC.Driver

JDBC 椹卞姩銆傚锛歝om.microsoft.jdbc.sqlserver.SQLServerDriver


JDBC.ConnectionURL

鏁版嵁搴揢RL銆傚锛?/span>

jdbc:microsoft:sqlserver://localhost:1433;databaseName=ibatis濡傛灉鐢ㄧ殑鏄疭QLServer JDBC Driver锛?/span>

闇€瑕佸湪url鍚庤拷鍔燬electMethod=Cursor浠ヨ幏寰桱DBC浜嬪姟鐨勫Statement鏀寔銆?/span>


JDBC.Username

鏁版嵁搴撶敤鎴峰悕


JDBC.Password

鏁版嵁搴撶敤鎴峰瘑鐮?/span>


Pool.MaximumActiveConnections

鏁版嵁搴撹繛鎺ユ睜鍙淮鎸佺殑鏈€澶у閲忋€?/span>


Pool.MaximumIdleConnections

鏁版嵁搴撹繛鎺ユ睜涓厑璁哥殑鎸傝捣锛坕dle锛夎繛鎺ユ暟銆?/span>

浠ヤ笂瀛愯妭鐐归€傜敤浜嶴IMPLE 鍜孌BCP 妯″紡锛屽垎鍒拡瀵筍IMPLE 鍜孌BCP 妯″紡鐨凞ataSource绉佹湁閰嶇疆鑺傜偣濡備笅锛?/span>


SIMPLE:

Pool.MaximumCheckoutTime

鏁版嵁搴撹仈鎺ユ睜涓紝杩炴帴琚煇涓换鍔℃墍鍏佽鍗犵敤鐨勬渶澶ф椂闂达紝濡傛灉瓒呰繃杩欎釜鏃堕棿闄愬畾锛岃繛鎺ュ皢琚己鍒舵敹鍥炪€傦紙姣锛?/span>


Pool.TimeToWait

褰撶嚎绋嬭瘯鍥句粠杩炴帴姹犱腑鑾峰彇杩炴帴鏃讹紝杩炴帴姹犱腑鏃犲彲鐢ㄨ繛鎺ュ彲渚涗娇鐢紝姝ゆ椂绾跨▼灏嗚繘鍏ョ瓑寰呯姸鎬侊紝鐩村埌姹犱腑鍑虹幇绌洪棽杩炴帴銆?/span>

姝ゅ弬鏁拌瀹氫簡绾跨▼鎵€鍏佽绛夊緟鐨勬渶闀挎椂闂淬€傦紙姣锛?/span>


Pool.PingQuery

鏁版嵁搴撹繛鎺ョ姸鎬佹娴嬭鍙ャ€傛煇浜涙暟鎹簱鍦ㄨ繛鎺ュ湪鏌愭鏃堕棿鎸佺画澶勪簬绌洪棽鐘舵€佹椂浼氬皢鍏舵柇寮€銆傝€岃繛鎺ユ睜绠$悊鍣ㄥ皢閫氳繃姝よ鍙ユ娴嬫睜涓繛鎺ユ槸鍚﹀彲鐢ㄣ€?/span>

妫€娴嬭鍙ュ簲璇ユ槸涓€涓渶绠€鍖栫殑鏃犻€昏緫SQL銆傚鈥渟elect 1 from t_user鈥濓紝濡傛灉鎵ц姝よ鍙ユ垚鍔燂紝杩炴帴姹犵鐞嗗櫒灏嗚涓烘杩炴帴澶勪簬鍙敤鐘舵€?/span>


Pool.PingEnabled

鏄惁鍏佽妫€娴嬭繛鎺ョ姸鎬併€?/span>


Pool.PingConnectionsOlderThan

瀵规寔缁繛鎺ユ椂闂磋秴杩囪瀹氬€硷紙姣锛夌殑杩炴帴杩涜妫€娴嬨€?/span>


Pool.PingConnectionsNotUsedFor

瀵圭┖闂茶秴杩囪瀹氬€硷紙姣锛夌殑杩炴帴杩涜妫€娴嬨€?/span>


DBCP:

Pool.MaximumWait

褰撶嚎绋嬭瘯鍥句粠杩炴帴姹犱腑鑾峰彇杩炴帴鏃讹紝杩炴帴姹犱腑鏃犲彲鐢ㄨ繛鎺ュ彲渚涗娇鐢紝姝ゆ椂绾跨▼灏嗚繘鍏ョ瓑寰呯姸鎬侊紝鐩村埌姹犱腑鍑虹幇绌洪棽杩炴帴銆?/span>

姝ゅ弬鏁拌瀹氫簡绾跨▼鎵€鍏佽绛夊緟鐨勬渶闀挎椂闂淬€傦紙姣锛?/span>


Pool.ValidationQuery

鏁版嵁搴撹繛鎺ョ姸鎬佹娴嬭鍙ャ€傛煇浜涙暟鎹簱鍦ㄨ繛鎺ュ湪鏌愭鏃堕棿鎸佺画澶勪簬绌洪棽鐘舵€佹椂浼氬皢鍏舵柇寮€銆?/span>

鑰岃繛鎺ユ睜绠$悊鍣ㄥ皢閫氳繃姝よ鍙ユ娴嬫睜涓繛鎺ユ槸鍚﹀彲鐢ㄣ€傛娴嬭鍙ュ簲璇ユ槸涓€涓渶绠€鍖栫殑鏃犻€昏緫SQL銆傚鈥渟elect 1 from t_user鈥濓紝

濡傛灉鎵ц姝よ鍙ユ垚鍔燂紝杩炴帴姹犵鐞嗗櫒灏嗚涓烘杩炴帴澶勪簬鍙敤鐘舵€併€?/span>


Pool.LogAbandoned

褰撴暟鎹簱杩炴帴琚簾寮冩椂锛屾槸鍚︽墦鍗版棩蹇椼€?/span>


Pool.RemoveAbandonedTimeout

鏁版嵁搴撹繛鎺ヨ搴熷純鐨勬渶澶ц秴鏃舵椂闂?/span>


Pool.RemoveAbandoned

褰撹繛鎺ョ┖闂叉椂闂磋秴杩嘡emoveAbandonedTimeout鏃讹紝鏄惁灏嗗叾搴熷純銆?/span>


JNDI:

鐢变簬澶ч儴鍒嗛厤缃槸鍦ㄥ簲鐢ㄦ湇鍔″櫒涓繘琛岋紝鍥犳ibatis涓殑閰嶇疆鐩稿绠€鍗曪紝涓嬮潰鏄垎鍒娇鐢↗DBC鍜孞TA浜嬪姟绠$悊鐨凧DNI閰嶇疆锛?/span>

浣跨敤JDBC浜嬪姟绠$悊鐨凧NDI DataSource閰嶇疆

[html] view plaincopy
  1. <transactionManagertype="JDBC">聽聽
  2. 聽聽
  3. <dataSourcetype="JNDI">聽聽
  4. 聽聽
  5. <propertyname="DataSource"value="java:comp/env/jdbc/myDataSource"/>聽聽
  6. 聽聽
  7. </dataSource>聽聽
  8. 聽聽
  9. </transactionManager>聽聽
  10. 聽聽
  11. <transactionManagertype="JTA">聽聽
  12. 聽聽
  13. <propertyname="UserTransaction"value="java:/ctx/con/UserTransaction"/>聽聽
  14. 聽聽
  15. <dataSourcetype="JNDI">聽聽
  16. 聽聽
  17. <propertyname="DataSource"value="java:comp/env/jdbc/myDataSource"/>聽聽
  18. 聽聽
  19. </dataSource>聽聽
  20. 聽聽
  21. </transactionManager>聽聽


鈶?sqlMap鑺傜偣

sqlMap 鑺傜偣鎸囧畾浜嗘槧灏勬枃浠剁殑浣嶇疆锛岄厤缃腑鍙嚭鐜板涓猻qlMap 鑺傜偣锛屼互鎸囧畾椤圭洰鍐呮墍鍖呭惈鐨勬墍鏈夋槧灏勬枃浠躲€?/p>

<?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="鏄犲皠鏂囦欢鍚嶇О锛歎ser">

<typeAlias alias="user" type="com.ibatis.sample.User"/> 缁欏搴旂殑绫诲彇鍒悕

<cacheModel id="userCache" type="LRU">

<flushInterval hours="24"/> 璁惧畾缂撳瓨鏈夋晥鏈?/p>

<flushOnExecute statement=" updateUser"/>

鎸囧畾鎵ц鐗瑰畾Statement鏃讹紝灏嗙紦瀛樻竻绌恒€傚updateUser鎿嶄綔灏嗘洿鏂版暟鎹簱涓殑鐢ㄦ埛淇℃伅锛岃繖灏嗗鑷寸紦瀛樹腑鐨勬暟鎹璞′笌鏁版嵁搴撲腑鐨勫疄闄呮暟鎹彂鐢熷亸宸紝鍥犳蹇呴』灏嗙紦瀛樻竻绌轰互閬垮厤鑴忔暟鎹殑鍑虹幇銆?/p>

<property name="size" value="1000" /> CacheModel涓渶澶у绾崇殑鏁版嵁瀵硅薄鏁伴噺

</cacheModel>

鐢虫槑浜嗕竴涓悕涓?userCache"鐨刢acheModel锛屼箣鍚庡彲浠ュ湪Statement鐢虫槑涓鍏惰繘琛屽紩鐢細渚嬪锛?/p>

<select id="getUser" parameterClass="java.lang.String" resultClass="user"

cacheModel="userCache">

<select id="" parameterClass="java.lang.String" resultClass="user">

<![CDATA[聽聽聽 鍙互閬垮厤SQL 涓笌XML 瑙勮寖鐩稿啿绐佺殑瀛楃瀵筙ML鏄犲皠鏂囦欢鐨勫悎娉曟€ч€犳垚褰卞搷銆?/p>

SQL璇彞

]]>

</select>

< update id=" " parameterClass="java.lang.String" >

<![CDATA[

SQL璇彞

]]>

</ update >

< insert id=" " parameterClass="java.lang.String" >

<![CDATA[

SQL璇彞

]]>

</ insert >

< delete id="" parameterClass="java.lang.String" >

<![CDATA[

SQL璇彞

]]>

</ delete >

</sqlMap>

闇€瑕佷竴涓狫AVABEAN锛氭湁getter鍜宻etter鏂规硶

濡備綍璇诲彇閰嶇疆鏂囦欢锛?/p>

[java] view plaincopy
  1. 聽聽聽聽聽聽聽publicclass聽SQLMapper聽{聽聽
  2. 聽聽
  3. 聽聽聽聽聽聽聽publicstatic聽SqlMapClient聽sqlMapper;聽聽
  4. 聽聽
  5. 聽聽聽聽聽聽聽static{聽聽
  6. 聽聽
  7. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽resource聽=聽"org/lzp/xml/SqlMapConfig.xml";鎸囨槑浜嗛厤缃枃浠剁殑鐩稿璺緞聽聽
  8. 聽聽
  9. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽try聽{聽聽
  10. 聽聽
  11. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Reader聽reader聽=聽Resources.getResourceAsReader(resource);聽聽
  12. 聽聽
  13. 聽聽聽聽聽聽聽聽聽聽聽//ibatis2.0聽聽
  14. 聽聽
  15. 聽聽聽聽聽聽聽聽聽聽聽/*聽XmlSqlMapClientBuilder聽xmlBuilder聽=銆€new聽XmlSqlMapClientBuilder();
  16. sqlMapper聽=聽xmlBuilder.buildSqlMap(reader);
  17. */聽聽
  18. 聽聽
  19. //ibatis1.0聽聽
  20. 聽聽
  21. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽sqlMapper聽=聽SqlMapClientBuilder.buildSqlMapClient(reader);聽聽
  22. 聽聽
  23. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽catch聽(Exception聽e)聽{聽聽
  24. 聽聽
  25. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();聽聽
  26. 聽聽
  27. 聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
  28. 聽聽
  29. 聽聽聽聽聽聽聽}聽聽
  30. 聽聽
  31. }聽聽

SqlMapClient鏄痠batis杩愪綔鐨勬牳蹇冿紝鎵€鏈夋搷浣滃潎閫氳繃SqlMapClient瀹炰緥瀹屾垚銆備緥濡傦細

sqlMapper.insert("鍚嶇О", 鍙傛暟);

sqlMapper鎻愪緵浜嗕紬澶氭暟鎹搷浣滄柟娉曪紝涓嬮潰鏄竴浜涘父鐢ㄦ柟娉曠殑绀轰緥锛屽叿浣撹鏄庢枃妗h鍙傝ibatis java doc锛屾垨鑰卛batis瀹樻柟寮€鍙戞墜鍐屻€?/p>

Statement閰嶇疆锛?/p>

Statement閰嶇疆鍖呭惈浜嗘暟涓笌SQL Statement鐩稿叧鐨勮妭鐐癸紝鍒嗗埆涓猴細

u statement: 鏈€涓洪€氱敤锛屽畠鍙互鏇夸唬鍏朵綑鐨勬墍鏈夎妭鐐广€?/p>

u insert

u delete

u update

u select

u procedure

鍙傛暟鎻忚堪锛氬彲浠ユ槸绫汇€佸熀鏈暟鎹被鍨嬪拰MAP杩涜浼犲€?/p>

鍙傛暟

鎻忚堪

parameterClass

鍙傛暟绫汇€傛寚瀹氫簡鍙傛暟鐨勫畬鏁寸被鍚嶏紙鍖呮嫭鍖呰矾寰勶級銆?/p>

鍙€氳繃鍒悕閬垮厤姣忔閲嶅涔﹀啓鍐楅暱鐨勭被鍚嶃€?/p>

resultClass

缁撴灉绫汇€傛寚瀹氱粨鏋滅被鍨嬬殑瀹屾暣绫诲悕锛堝寘鎷寘璺緞锛?/p>

鍙€氳繃鍒悕閬垮厤姣忔閲嶅涔﹀啓鍐楅暱鐨勭被鍚嶃€?/p>

parameterMap

鍙傛暟鏄犲皠锛岄渶缁撳悎parameterMap鑺傜偣瀵规槧灏勫叧绯诲姞浠ュ畾涔夈€傚浜庡瓨鍌ㄨ繃绋嬩箣澶栫殑statement鑰岃█锛?/p>

寤鸿浣跨敤parameterClass浣滀负鍙傛暟閰嶇疆鏂瑰紡锛屼竴鏂归潰閬垮厤浜嗗弬鏁版槧灏勯厤缃伐浣滐紝鍙︿竴鏂归潰鍏舵€ц兘琛ㄧ幇涔熸洿鍔犲嚭鑹层€?/p>

resultMap

缁撴灉鏄犲皠锛岄渶缁撳悎resultMap鑺傜偣瀵规槧灏勫叧绯诲姞浠ュ畾涔夈€?/p>

cacheModel

statement瀵瑰簲鐨凜ache妯″潡銆?/p>

鍔ㄦ€佹槧灏勶細

[html] view plaincopy
  1. <selectid="getUsers"parameterClass="user"resultClass="user">聽聽
  2. 聽聽
  3. Select聽id,name,sex聽from聽t_user聽聽
  4. 聽聽
  5. <dynamicprepend="WHERE">聽聽
  6. 聽聽
  7. <isNotEmptyprepend="AND"property="name">聽聽
  8. 聽聽
  9. (name聽like聽#name#)聽聽
  10. 聽聽
  11. </isNotEmpty>聽聽
  12. 聽聽
  13. <isNotEmptyprepend="AND"property="address">聽聽
  14. 聽聽
  15. (address聽like聽#address#)聽聽
  16. 聽聽
  17. </isNotEmpty>聽聽
  18. 聽聽
  19. </dynamic>聽聽
  20. 聽聽
  21. </select>聽聽

脴 涓€鍏冨垽瀹? 鏄拡瀵瑰睘鎬у€兼湰韬殑鍒ゅ畾锛屽灞炴€ф槸鍚︿负NULL锛屾槸鍚︿负绌哄€肩瓑銆?/p>

涓€鍏冨垽瀹氳妭鐐规湁锛?/p>

鑺傜偣鍚?/p>

鎻忚堪

<isPropertyAvailable>

鍙傛暟绫讳腑鏄惁鎻愪緵浜嗘灞炴€?/p>

<isNotPropertyAvailable>涓?lt;isPropertyAvailable>鐩稿弽

<isNull>

灞炴€у€兼槸鍚︿负NULL

<isNotNull>涓?lt;isNull>鐩稿弽

<isEmpty>

濡傛灉灞炴€т负Collection鎴栬€匰tring锛屽叾size鏄惁<1锛屽鏋滈潪浠ヤ笂涓ょ绫诲瀷锛屽垯閫氳繃String.valueOf(灞炴€у€?

鑾峰緱鍏禨tring绫诲瀷鐨勫€煎悗锛屽垽鏂叾size鏄惁<1

<isNotEmpty>涓?lt;isEmpty>鐩稿弽銆?/p>

脴 浜屽厓鍒ゅ畾

浜屽厓鍒ゅ畾鏈変袱涓垽瀹氬弬鏁帮紝涓€鏄睘鎬у悕锛岃€屾槸鍒ゅ畾鍊硷紝濡?/p>

<isGreaterThan prepend="AND" property="age" compareValue="18">(age=#age#)</isGreaterThan>

鍏朵腑锛宲roperty="age"鎸囧畾浜嗗睘鎬у悕鈥漚ge鈥濓紝compareValue=鈥?8鈥濇寚鏄庝簡鍒ゅ畾鍊间负鈥?8鈥濄€?/p>

涓婇潰鍒ゅ畾鑺傜偣isGreaterThan 瀵瑰簲鐨勮涔夋槸锛氬鏋渁ge 灞炴€уぇ浜?8(compareValue)锛屽垯鍦⊿QL涓姞鍏?age=#age#)鏉′欢銆?/p>

浜屽厓鍒ゅ畾鑺傜偣鏈夛細

鑺傜偣鍚?/p>

灞炴€у€间笌compareValues鐨勫叧绯?/p>

<isEqual>鐩哥瓑銆?/p>

<isNotEqual>涓嶇瓑銆?/p>

<isGreaterThan>澶т簬

<isGreaterEqual>澶т簬绛変簬

<isLessThan>灏忎簬

<isLessEqual>灏忎簬绛変簬