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閰嶇疆鏂囦欢:
聽
- <?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>聽聽
- 聽聽
- <settings聽//-------------------------锛堬紤锛壜犅?/span>
- 聽聽
- cacheModelsEnabled="true"聽聽
- 聽聽
- enhancementEnabled="true"聽聽
- 聽聽
- lazyLoadingEnabled="true"聽聽
- 聽聽
- errorTracingEnabled="true"聽聽
- 聽聽
- maxRequests="32"聽聽
- 聽聽
- maxSessions="10"聽聽
- 聽聽
- maxTransactions="5"聽聽
- 聽聽
- useStatementNamespaces="false"聽聽
- 聽聽
- />聽聽
- 聽聽
- <transactionManager聽type="JDBC">聽//-----------------------锛堬紥锛壜犅?/span>
- 聽聽
- <dataSource聽type="SIMPLE">銆€銆€銆€銆€//-------------------------锛堬紦锛壜犅?/span>
- 聽聽
- <property聽name="JDBC.Driver"聽value="com.p6spy.engine.spy.P6SpyDriver"/>聽聽
- 聽聽
- <property聽name="JDBC.ConnectionURL"聽value="jdbc:mysql://localhost/sample"/>聽聽
- 聽聽
- <property聽name="JDBC.Username"聽value="user"/>聽聽
- 聽聽
- <property聽name="JDBC.Password"聽value="mypass"/>聽聽
- 聽聽
- <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聽ACCOUNT"/>聽聽
- 聽聽
- <property聽name="Pool.PingEnabled"聽value="false"/>聽聽
- 聽聽
- <property聽name="Pool.PingConnectionsOlderThan"聽value="1"/>聽聽
- 聽聽
- <property聽name="Pool.PingConnectionsNotUsedFor"聽value="1"/>聽聽
- 聽聽
- </dataSource>聽聽
- 聽聽
- </transactionManager>聽聽
- 聽聽
- <sqlMap聽resource="com/ibatis/sample/User.xml"/>聽//-------------------锛堬紨锛壜犅?/span>
- 聽聽
- <sqlMap聽resource="com/ibatis/sample/Address.xml"/>聽聽
- 聽聽
- </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閰嶇疆
聽
- <transactionManager聽type="JDBC"聽>聽聽
- 聽聽
- <dataSource聽type="JNDI">聽聽
- 聽聽
- <property聽name="DataSource"聽value="java:comp/env/jdbc/myDataSource"/>聽聽
- 聽聽
- </dataSource>聽聽
- 聽聽
- </transactionManager>聽聽
- 聽聽
- <transactionManager聽type="JTA"聽>聽聽
- 聽聽
- <property聽name="UserTransaction"聽value="java:/ctx/con/UserTransaction"/>聽聽
- 聽聽
- <dataSource聽type="JNDI">聽聽
- 聽聽
- <property聽name="DataSource"聽value="java:comp/env/jdbc/myDataSource"/>聽聽
- 聽聽
- </dataSource>聽聽
- 聽聽
- </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>
聽
- 聽聽聽聽聽聽聽public聽class聽SQLMapper聽{聽聽
- 聽聽
- 聽聽聽聽聽聽聽public聽static聽SqlMapClient聽sqlMapper;聽聽
- 聽聽
- 聽聽聽聽聽聽聽static{聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽resource聽=聽"org/lzp/xml/SqlMapConfig.xml";鎸囨槑浜嗛厤缃枃浠剁殑鐩稿璺緞聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽try聽{聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Reader聽reader聽=聽Resources.getResourceAsReader(resource);聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽//ibatis2.0聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽/*聽XmlSqlMapClientBuilder聽xmlBuilder聽=銆€new聽XmlSqlMapClientBuilder();聽
- 聽
- sqlMapper聽=聽xmlBuilder.buildSqlMap(reader);聽
- 聽
- */聽聽
- 聽聽
- //ibatis1.0聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽sqlMapper聽=聽SqlMapClientBuilder.buildSqlMapClient(reader);聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽catch聽(Exception聽e)聽{聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();聽聽
- 聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽聽
- 聽聽
- 聽聽聽聽聽聽聽}聽聽
- 聽聽
- }聽聽
聽
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>
聽
鍔ㄦ€佹槧灏勶細
聽
- <select聽id="getUsers"聽parameterClass="user"聽resultClass="user">聽聽
- 聽聽
- Select聽id,name,sex聽from聽t_user聽聽
- 聽聽
- <dynamic聽prepend="WHERE">聽聽
- 聽聽
- <isNotEmpty聽prepend="AND"聽property="name">聽聽
- 聽聽
- (name聽like聽#name#)聽聽
- 聽聽
- </isNotEmpty>聽聽
- 聽聽
- <isNotEmpty聽prepend="AND"聽property="address">聽聽
- 聽聽
- (address聽like聽#address#)聽聽
- 聽聽
- </isNotEmpty>聽聽
- 聽聽
- </dynamic>聽聽
- 聽聽
- </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>灏忎簬绛変簬
聽