﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-黑咖啡-随笔分类-Ibatis</title><link>http://www.blogjava.net/kyleYang/category/42719.html</link><description>孩儿立志出乡关，学不成名誓不还。
风华正茂乾坤地，人生无处不青山。
光阴如同流水去，珍惜时光最宝贵。
鹏程万里靠自己，飞黄腾达青少年。
</description><language>zh-cn</language><lastBuildDate>Thu, 04 Feb 2010 08:28:56 GMT</lastBuildDate><pubDate>Thu, 04 Feb 2010 08:28:56 GMT</pubDate><ttl>60</ttl><item><title>ibatis的iterate使用</title><link>http://www.blogjava.net/kyleYang/archive/2010/02/02/311688.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Tue, 02 Feb 2010 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2010/02/02/311688.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/311688.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2010/02/02/311688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/311688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/311688.html</trackback:ping><description><![CDATA[
		<strong>Iterate：这属性遍历整个集合，并为 List 集合中的元素重复元素体的内容。</strong>
		<br />
		<strong>Iterate 的属性： <br /></strong>      prepend  － 可被覆盖的 SQL 语句组成部分，添加在语句的前面（可选） <br />      property  － 类型为 java.util.List 的用于遍历的元素（必选） <br />      open  －  整个遍历内容体开始的字符串，用于定义括号（可选） <br />      close  －整个遍历内容体结束的字符串，用于定义括号（可选） <br />      conjunction －  每次遍历内容之间的字符串，用于定义 AND 或 OR（可选） <br />      遍历类型为 java.util.List的元素。 <br /><br />例子： <br />&lt;iterate prepend=”AND” property=”userNameList” <br />open=”(” close=”)” conjunction=”OR”&gt; <br />username=#userNameList[]# <br />&lt;/iterate&gt;<br /><br />ibatis中如何配置in语句，需要迭代，不能直接用string的写法<br />&lt;select id="sql_test" parameterclass="myPramBean" resultclass="myResult"&gt;<br />select *from tablewhere name in <br />&lt;iterate property="ids" conjunction="," close=")" open="(" /&gt; <br />#value[]# <br />&lt;/iterate&gt;<br />and code=#code#<br />&lt;/select&gt;<br />myPramBean<br />{<br />private String code;<br />private List ids;<br />...<br />} <br /><br />eg:<br />&lt;delete id="member.batchDelete" parameterClass="java.util.List"&gt;<br />      DELETE FROM member where id IN<br />      &lt;iterate conjunction="," open="(" close=")" &gt;<br />          #value[]# <br />      &lt;/iterate&gt;<br />&lt;/delete&gt;<br /><br /><strong>注意：</strong>使用&lt;iterate&gt;时，在List元素名后面包括方括号[]非常重要，方括号[]将<br />对象标记为List，以防解析器简单地将List输出成String。<br /><img src ="http://www.blogjava.net/kyleYang/aggbug/311688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2010-02-02 15:49 <a href="http://www.blogjava.net/kyleYang/archive/2010/02/02/311688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBatis中的动态查询</title><link>http://www.blogjava.net/kyleYang/archive/2010/01/22/310529.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Fri, 22 Jan 2010 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2010/01/22/310529.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/310529.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2010/01/22/310529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/310529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/310529.html</trackback:ping><description><![CDATA[
		<p>下面给出几个例子和dtd定义：</p>
		<p>&lt;<strong>select</strong> id="selectDispatchedKey" parameterClass="KeyAndKeyFlowInfo" resultMap="KeyAndKeyFlowResult"&gt;<br />   select distinct<br />    KEY_ID,<br />    USER_ID,<br />    INITIATOR,<br />    INIT_DATE,<br />    INITIATOR_EMAIL,<br />    SGS_KEY.BRANCH_NAME,<br />    APPROVER,<br />    APPROVER_EMAIL,<br />    APPROVE_DATE<br />   from <br />    SGS_KEY,<br />    SGS_KEY_FLOW<br />   where SGS_KEY.APPLY_FLOW_ID=SGS_KEY_FLOW.KEY_FLOW_ID<br />   &lt;<strong>dynamic</strong><strong>prepend</strong>="and" <strong>open</strong>="(" close=")"&gt;   <br />    &lt;<strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b></strong> property="ki.userId" prepend="and" <b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">removeFirstPrepend</b>="false"&gt;<br />     USER_ID = #ki.userId#<br />    &lt;/<strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b></strong>&gt;<br />    &lt;<strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b></strong><strong>property</strong>="kfi.initiator" <strong>prepend</strong>="and"&gt;<br />     INITIATOR = #kfi.initiator#<br />    &lt;/<strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b></strong>&gt;<br />    &lt;<strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b></strong><strong>property</strong>="kfi.initDate" <strong>prepend</strong>="and"&gt;<br />     INIT_DATE = #kfi.initDate#<br />    &lt;/<strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b></strong>&gt;<br />   &lt;/<strong>dynamic</strong>&gt;<br />&lt;/select&gt;</p>
		<p>&lt;<strong>update</strong> id="updateKeyFlow" parameterClass="KeyFlowInfo"&gt;<br />   update SGS_KEY_FLOW set <br />   &lt;<strong>dynamic</strong>&gt;<br />     KEY_FLOW_ID =#keyFlowId#<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="branchName" prepend=","&gt;<br />     BRANCH_NAME = #branchName#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;isNotEqual property="operation" prepend="," compareProperty="operation" compareValue="0"&gt;<br />     OPERATION = #operation#<br />    &lt;/isNotEqual&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="initiator" prepend=","&gt;<br />     INITIATOR = #initiator#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="initiatorEmail" prepend=","&gt;<br />     INITIATOR_EMAIL = #initiatorEmail#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="initDate" prepend=","&gt;<br />     INIT_DATE = #initDate#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="approver" prepend=","&gt;<br />     APPROVER = #approver#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="approverEmail" prepend=","&gt;<br />     APPROVER_EMAIL = #approverEmail#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="approveDate" prepend=","&gt;<br />     APPROVE_DATE = #approveDate#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;isNotEqual property="keyNum" prepend="," compareProperty="keyNum" compareValue="0"&gt;<br />     KEY_NUM = #keyNum#<br />    &lt;/isNotEqual&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="applyReason" prepend=","&gt;<br />     APPLY_REASON = #applyReason#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;<br />    &lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b> property="rejectReason" prepend=","&gt;<br />     REJECT_REASON = #rejectReason#<br />    &lt;/<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;                        <br />   &lt;/<strong>dynamic</strong>&gt;<br />   where <br />    KEY_FLOW_ID =#keyFlowId#<br />&lt;/update&gt;</p>
		<p>
		</p>
		<table style="MARGIN: auto auto auto 17.95pt; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" border="1">
				<tbody>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top">
										<p>
												<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">属性关键字</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" valign="top">
										<p>
												<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">含义</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">
														<span style="COLOR: #ff6600">&lt;isEqual&gt;</span>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: #ff6600; FONT-FAMILY: 宋体">如果参数相等于值</span>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isNotEqual&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数不等于值则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">
														<span style="COLOR: #ff6600">&lt;isGreaterThan&gt;</span>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数大于值则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isGreaterEqual&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数等于值则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isLessEqual&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-FAMILY: 宋体">如果参数小于值则查询条件有效。如下所示：</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” &gt;</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">ADOLESCENT = ‘TRUE’</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;/isLessEqual&gt;</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isPropertyAvailable&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数有使用则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isNotPropertyAvailable&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数没有使用则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isNull&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数为NULL则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">isNotNull</b>&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数不为NULL则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isEmpty&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">如果参数为空则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="COLOR: #ff6600">
														<span style="FONT-FAMILY: Times New Roman">&lt;isNotEmpty&gt;</span>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: #ff6600; FONT-FAMILY: 宋体">如果参数不为空则查询条件有效</span>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">。参数的数据类型为</span>
												<span style="FONT-FAMILY: Times New Roman">Collection</span>
												<span style="FONT-FAMILY: 宋体">、</span>
												<span style="FONT-FAMILY: Times New Roman">String </span>
												<span style="FONT-FAMILY: 宋体">时参数不为</span>
												<span style="FONT-FAMILY: Times New Roman">NULL</span>
												<span style="FONT-FAMILY: 宋体">或“”。如下所示：</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isNotEmpty prepend=”AND” property=”firstName” &gt;</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">FIRST_NAME=#firstName#</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;/isNotEmpty&gt;</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">
														<span style="COLOR: #ff6600">&lt;isParameterPresent&gt;</span>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-SIZE: 12pt; COLOR: #ff6600; FONT-FAMILY: 宋体">如果参数类不为NULL</span>
												<span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体">则查询条件有效。</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 131.45pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid">
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isNotParameterPresent&gt;</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 276.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
										<p>
												<span style="FONT-FAMILY: Times New Roman">Checks to see if the parameter object is not present (null). Example Usage:</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;isNotParameterPresent prepend=”AND”&gt;</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">EMPLOYEE_TYPE = ‘DEFAULT’</span>
										</p>
										<p>
												<span style="FONT-FAMILY: Times New Roman">&lt;/isNotParameterPresent&gt;</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<a href="http://203.208.39.132/search?q=cache:c0ebNIxuwRsJ:blog.csdn.net/yangguoqi/archive/2009/04/25/4122824.aspx+isNotNull+removeFirstPrepend&amp;cd=4&amp;hl=zh-CN&amp;ct=clnk&amp;gl=cn&amp;st_usg=ALhdy292qjrM9JyeUS1SW1kaFKLSpEs4-w">http://203.208.39.132/search?q=cache:c0ebNIxuwRsJ:blog.csdn.net/yangguoqi/archive/2009/04/25/4122824.aspx+isNotNull+removeFirstPrepend&amp;cd=4&amp;hl=zh-CN&amp;ct=clnk&amp;gl=cn&amp;st_usg=ALhdy292qjrM9JyeUS1SW1kaFKLSpEs4-w</a>
		<br />项目的例子：<br />  &lt;statement id="[customerinfo-lookup]" parameterClass="java.util.Map" resultClass="java.util.HashMap"&gt;<br />    &lt;![CDATA[<br />   SELECT A.ROW_ID s_CUSTOMER_ID,A.PERMIT_NO s_PERMIT_NO,A.CUSTOMER_DESC s_CUSTOMER_DESC,A.ADDR s_ADDR,<br />     A.CUSTMGR_ID s_CUSTMGR_ID,B.EMPLOYEE_NAME s_CUSTMGR_NAME,A.MARKET_ORG s_MARKET_ORG,C.DEPT_NAME s_DEPT_NAME<br />      FROM MD_CUSTOMER A LEFT JOIN MD_EMPLOYEE B ON A.CUSTMGR_ID=B.ROW_ID LEFT JOIN MD_DEPT C ON A.MARKET_ORG=C.ROW_ID<br />      WHERE 1=1 AND A.STATUS='1'<br />    ]]&gt;<br />    &lt;isNotEmpty prepend="and" property="custmgrID"&gt;<br />      &lt;![CDATA[ A.CUSTMGR_ID=#custmgrID# ]]&gt;<br />    &lt;/isNotEmpty&gt;<br />    &lt;isNotNull property="filter" removeFirstPrepend="true" prepend="AND" open="(" close=")"&gt; <br />   &lt;isNotEmpty prepend="OR" property="filter.m_PERMIT_NO"&gt;<br />     &lt;![CDATA[ A.PERMIT_NO LIKE '%$filter.m_PERMIT_NO$%' ]]&gt;<br />   &lt;/isNotEmpty&gt;<br />   &lt;isNotEmpty prepend="OR" property="filter.m_CUSTOMER_DESC"&gt;<br />     &lt;![CDATA[ A.CUSTOMER_DESC LIKE '%$filter.m_CUSTOMER_DESC$%' ]]&gt;<br />   &lt;/isNotEmpty&gt;<br />   &lt;isNotEmpty prepend="OR" property="filter.s_PLACE_NAME"&gt;<br />     &lt;![CDATA[ A.ADDR LIKE '%$filter.m_ADDR$%' ]]&gt;<br />   &lt;/isNotEmpty&gt;<br />    &lt;/isNotNull&gt;<br />    &lt;isNotNull prepend="ORDER BY" property="sort"&gt; &lt;!--排序--&gt;<br />      $sort$<br />    &lt;/isNotNull&gt;<br />  &lt;/statement&gt;<img src ="http://www.blogjava.net/kyleYang/aggbug/310529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2010-01-22 15:30 <a href="http://www.blogjava.net/kyleYang/archive/2010/01/22/310529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat下JNDI 配置 DBCP 连接池</title><link>http://www.blogjava.net/kyleYang/archive/2009/12/14/305835.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Mon, 14 Dec 2009 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/12/14/305835.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/305835.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/12/14/305835.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/305835.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/305835.html</trackback:ping><description><![CDATA[
		<span style="COLOR: #0000ff">Tomcat 的配置如下：（在某个App的context.xml中，或某个虚拟主机的ROOT.xml中）<br />&lt;?</span>
		<span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF-8"</span>
		<span style="COLOR: #0000ff">?&gt;</span>
		<span style="COLOR: #000000">
				<br />
		</span>
		<span style="COLOR: #0000ff">&lt;</span>
		<span style="COLOR: #800000">Context </span>
		<span style="COLOR: #ff0000">path</span>
		<span style="COLOR: #0000ff">=""</span>
		<span style="COLOR: #0000ff">&gt;</span>
		<span style="COLOR: #000000">
				<br />     </span>
		<span style="COLOR: #0000ff">&lt;</span>
		<span style="COLOR: #800000">Resource </span>
		<span style="COLOR: #ff0000">name</span>
		<span style="COLOR: #0000ff">="jdbc/pgsqldbcp"</span>
		<span style="COLOR: #ff0000"> <br />               auth</span>
		<span style="COLOR: #0000ff">="Container"</span>
		<span style="COLOR: #ff0000"> <br />               type</span>
		<span style="COLOR: #0000ff">="javax.sql.DataSource"</span>
		<span style="COLOR: #ff0000"> <br />               factory</span>
		<span style="COLOR: #0000ff">="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"</span>
		<span style="COLOR: #ff0000">
				<br />               driverClassName</span>
		<span style="COLOR: #0000ff">="org.postgresql.Driver"</span>
		<span style="COLOR: #ff0000">
				<br />               url</span>
		<span style="COLOR: #0000ff">="jdbc:postgresql://localhost/xxxxdb"</span>
		<span style="COLOR: #ff0000">
				<br />               username</span>
		<span style="COLOR: #0000ff">="postgres"</span>
		<span style="COLOR: #ff0000"> <br />               password</span>
		<span style="COLOR: #0000ff">="xxxx"</span>
		<span style="COLOR: #ff0000"> <br />               maxActive</span>
		<span style="COLOR: #0000ff">="20"</span>
		<span style="COLOR: #ff0000"> <br />     </span>
		<span style="COLOR: #0000ff">/&gt;</span>
		<span style="COLOR: #000000">
				<br />
		</span>
		<span style="COLOR: #0000ff">&lt;/</span>
		<span style="COLOR: #800000">Context</span>
		<span style="COLOR: #0000ff">&gt;<br />这里使用Tomcat带的tomcat-dbcp.jar包，它包含了 commons-collections.jar, commons-pool.jar, commons-dbcp.jar，如果不使用tomcat-dbcp.jar 则需要将上述3个包拷贝到 Tomcat的lib中。另外把数据库的驱动包拷贝到Tomcat的lib中，就可以了。<br /><br />在开发中spring中的dataSource可以按如下形式写：<br /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="dataSource"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.springframework.jndi.JndiObjectFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="jndiName"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="java:comp/env/jdbc/pgsqldbcp"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></span>
<img src ="http://www.blogjava.net/kyleYang/aggbug/305835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-12-14 10:04 <a href="http://www.blogjava.net/kyleYang/archive/2009/12/14/305835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;datasource&gt;元素</title><link>http://www.blogjava.net/kyleYang/archive/2009/12/09/305261.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Wed, 09 Dec 2009 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/12/09/305261.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/305261.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/12/09/305261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/305261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/305261.html</trackback:ping><description><![CDATA[用<span style="COLOR: #0000ff">JDBC方式</span>基本配置都很简单，weblogic的数据源JNDI名字是：TestDatasource<br />那么ibatis的SqlMapConfig.xml的配置如下<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">transactionManager </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="JDBC"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">dataSource </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="JNDI"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="context.java.naming.factory.initial"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="weblogic.jndi.WLInitialContextFactory"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="context.java.naming.provider.url"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="t3://localhost:7001"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="DataSource"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="TestDatasource"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">dataSource</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">transactionManager</span><span style="COLOR: #0000ff">&gt;</span></div><br /><br />&lt;transactionManager type="JTA" &gt;<br />&lt;property name="UserTransaction" value="java:/ctx/con/UserTransaction"/&gt;<br />&lt;dataSource type="JNDI"&gt;<br />&lt;property name="DataSource" value="java:comp/env/jdbc/jpetstore"/&gt;<br />&lt;/dataSource&gt;<br />&lt;/transactionManager&gt;<br />注意，UserTransaction属性指向UserTransaction实例所在的JNDI位置。JTA事务管理需要它，以使SQL Map能够参与涉及其他数据库和事务资源的范围更大的事务。<img src ="http://www.blogjava.net/kyleYang/aggbug/305261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-12-09 12:01 <a href="http://www.blogjava.net/kyleYang/archive/2009/12/09/305261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring+ibatis实例</title><link>http://www.blogjava.net/kyleYang/archive/2009/11/12/302159.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Thu, 12 Nov 2009 15:46:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/11/12/302159.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/302159.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/11/12/302159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/302159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/302159.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/kyleYang/archive/2009/11/12/302159.html'>阅读全文</a><img src ="http://www.blogjava.net/kyleYang/aggbug/302159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-11-12 23:46 <a href="http://www.blogjava.net/kyleYang/archive/2009/11/12/302159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ibatis与spring的整合</title><link>http://www.blogjava.net/kyleYang/archive/2009/11/12/302157.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Thu, 12 Nov 2009 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/11/12/302157.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/302157.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/11/12/302157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/302157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/302157.html</trackback:ping><description><![CDATA[<p>Spring<span style="font-family: 宋体">通过</span>DAO<span style="font-family: 宋体">模式，提供了对</span>iBATIS<span style="font-family: 宋体">的良好支持。</span>SqlMapClient<span style="font-family: 宋体">对象是</span>iBATIS<span style="font-family: 宋体">中的主要对象，我们可以通过配置让</span>spring<span style="font-family: 宋体">来管理</span>SqlMapClient<span style="font-family: 宋体">对象的创建。</span></p>
<p><span style="font-family: 宋体">与</span>hibernate<span style="font-family: 宋体">类似，</span>Spring <span style="font-family: 宋体">提供了</span><span style="font-size: 10pt; background: silver; color: #000000; font-family: 'Courier New'">SqlMapClientDaoSupport</span><span style="font-size: 10pt; color: black; font-family: 宋体">对象，我们的</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">DAO</span><span style="font-size: 10pt; color: black; font-family: 宋体">可以继承这个类，通过它所提供的</span><span style="font-size: 10pt; background: silver; color: black; font-family: 'Courier New'">SqlMapClientTemplate</span><span style="font-size: 10pt; color: black; font-family: 宋体">对象来操纵数据库。看起来这些概念都与</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">hibernate</span><span style="font-size: 10pt; color: black; font-family: 宋体">类似。</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">通过</span><span style="font-size: 10pt; background: silver; color: black; font-family: 'Courier New'">SqlMapClientTemplate</span><span style="font-size: 10pt; color: black; font-family: 宋体">来操纵数据库的</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">CRUD</span><span style="font-size: 10pt; color: black; font-family: 宋体">是没有问题的，这里面关键的问题是事务处理。</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Spring</span><span style="font-size: 10pt; color: black; font-family: 宋体">提供了强大的声明式事务处理的功能，我们已经清楚</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">hibernate</span><span style="font-size: 10pt; color: black; font-family: 宋体">中如何配置声明式的事务，那么在</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">iBATIS</span><span style="font-size: 10pt; color: black; font-family: 宋体">中如何获得声明式事务的能力呢？</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">第一，我们需要了解的是</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">spring</span><span style="font-size: 10pt; color: black; font-family: 宋体">通过</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">AOP</span><span style="font-size: 10pt; color: black; font-family: 宋体">来拦截方法的调用，从而在这些方法上面添加声明式事务处理的能力。典型配置如下：</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">applicationContext-common.xml</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">&lt;!-- </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 宋体">配置事务特性</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'"> --&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:advice </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"txAdvice" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">transaction-manager</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"</span><em><span style="font-size: 10pt; color: red; font-family: 宋体">事务管理器名称</span></em><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:attributes</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:method </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"add*" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">propagation</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"REQUIRED"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:method </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"del*" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">propagation</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"REQUIRED"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:method </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"update*" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">propagation</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"REQUIRED"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:method </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"*" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">read-only</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"true"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:attributes</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">tx:advice</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">&lt;!-- </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 宋体">配置哪些类的方法需要进行事务管理</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'"> --&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">aop:config</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">aop:pointcut </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"allManagerMethod" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">expression</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"execution(* com.ibatis.manager.*.*(..))"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">aop:advisor </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">advice-ref</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"txAdvice" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">pointcut-ref</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"allManagerMethod"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">aop:config</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">这些事务都是声明在业务逻辑层的对象上的。</span></p>
<p><span style="font-family: 宋体">第二，我们需要一个事务管理器，对事务进行管理。</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">bean </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"txManager" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"org.springframework.jdbc.datasource.DataSourceTransactionManager"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"dataSource" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">ref</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"dataSource"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">bean</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">bean </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"dataSource" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"org.apache.commons.dbcp.BasicDataSource"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"driverClassName" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com.mysql.jdbc.Driver"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"url" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"jdbc:mysql://127.0.0.1/ibatis"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"username" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"root"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"password" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"mysql"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
            <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">bean</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">此后，我们需要让</span>spring<span style="font-family: 宋体">来管理</span>SqlMapClient<span style="font-family: 宋体">对象：</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">bean </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"sqlMapClient" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"org.springframework.orm.ibatis.SqlMapClientFactoryBean"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"configLocation"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">classpath:sqlMapConfig.xml</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">bean</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">我们的</span>sqlMapConfig.xml<span style="font-family: 宋体">就可以简写为：</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;?</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">xml </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">version</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"1.0" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">encoding</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"UTF-8" </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">?&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;!</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">DOCTYPE </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">sqlMapConfig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: gray; font-family: 'Courier New'">PUBLIC </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">"-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">"http://ibatis.apache.org/dtd/sql-map-config-2.dtd"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">sqlMapConfig</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">settings </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">lazyLoadingEnabled</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"true"</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">useStatementNamespaces</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"true" </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">&lt;!-- </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 宋体">使用</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">spring</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 宋体">之后，数据源的配置移植到了</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">spring</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 宋体">上，所以</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">iBATIS</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 宋体">本身的配置可以取消</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'"> --&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">sqlMap </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">resource</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com/ibatis/dao/impl/ibatis/User.xml"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">sqlMapConfig</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-size: 10pt; background: #d9d9d9; color: black; font-family: 'Courier New'">User.xml:</span><span style="font-size: 10pt; background: #d9d9d9; color: black; font-family: 宋体">如下</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;?</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">xml </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">version</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"1.0" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">encoding</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"UTF-8" </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">?&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;!</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">DOCTYPE </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">sqlMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: gray; font-family: 'Courier New'">PUBLIC </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">"-//ibatis.apache.org//DTD SQL Map 2.0//EN"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">"http://ibatis.apache.org/dtd/sql-map-2.dtd"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">sqlMap </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">namespace</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"User"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">&lt;!-- Use type aliases to avoid typing the full classname every time. --&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">typeAlias </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">alias</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"User" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">type</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com.ibatis.User"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">&lt;!-- Select with no parameters using the result map for Account class. --&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">select </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"selectAllUsers" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">resultClass</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"User"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; select * from t_user</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">select</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">select </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"selectUser" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">resultClass</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"User" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">parameterClass</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"int"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;select * from t_user where id=#id#</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">select</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">insert </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"insertUser" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">parameterClass</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"User"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;insert into t_user values (</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,#username#,#password#</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;)</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">insert</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">update </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"updateUser" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">parameterClass</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"User"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;update t_user set username = #username#,password=#password#</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;where id=#id#</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">update</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">delete </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"deleteUser" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">parameterClass</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"int"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;delete from t_user where id=#id#</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">delete</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">sqlMap</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-family: 宋体">我们的</span>DAO<span style="font-family: 宋体">的编写：</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p>package com.iabtis.dao.impl.ibatis;</p>
            <p>import java.util.List;</p>
            <p>import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;</p>
            <p>import com.ibatis.dao.UserDAO;</p>
            <p>import com.ibatis.crm.model.User;</p>
            <p>public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO {</p>
            <p>&nbsp;&nbsp;&nbsp; public void select(User user) {</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getSqlMapClientTemplate().delete("<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">selectUser</span> ",user.getId());</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;public List findAll() {</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return getSqlMapClientTemplate().queryForList("<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">selectAllUsers</span> ");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void delete(User user) {</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getSqlMapClientTemplate().delete("<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">deleteUser</span> ",user.getId());</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void save(User user) {</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getSqlMapClientTemplate().insert("<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">insertUser</span> ",user);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void update(User user) {</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getSqlMapClientTemplate().update("<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">updateUser</span> ",user);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>}</p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">继承</span>SqlMapClientDaoSupport<span style="font-family: 宋体">，要求我们注入</span>SqlMapClient<span style="font-family: 宋体">对象，因此，需要有如下的</span>DAO<span style="font-family: 宋体">配置：</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p>&lt;bean id="userDAO" class="com.ibatils.dao.impl.ibatis.UserDAOImpl"&gt;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name=&#8221;<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">sqlMapClient</span>&#8221; ref=&#8221;<span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">sqlMapClient</span>&#8221;/&gt;</p>
            <p>&lt;/bean&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">这就是所有需要注意的问题了，此后就可以在业务逻辑层调用</span>DAO<span style="font-family: 宋体">对象了！</span></p>
<img src ="http://www.blogjava.net/kyleYang/aggbug/302157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-11-12 23:45 <a href="http://www.blogjava.net/kyleYang/archive/2009/11/12/302157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring+ibatis或jdbc配置proxool连接池 </title><link>http://www.blogjava.net/kyleYang/archive/2009/11/12/302158.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Thu, 12 Nov 2009 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/11/12/302158.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/302158.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/11/12/302158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/302158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/302158.html</trackback:ping><description><![CDATA[<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">dataSource</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.logicalcobwebs.proxool.ProxoolDataSource</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;destroy</span><span style="color: #000000">-</span><span style="color: #000000">method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">close</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">driver</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000">net.sourceforge.jtds.jdbc.Driver</span><span style="color: #000000">&lt;/</span><span style="color: #000000">value</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">driverUrl</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000">jdbc:jtds:sqlserver:</span><span style="color: #008000">//</span><span style="color: #008000">server:1433;socketTimeout=20;loginTimeout=10&lt;/value&gt;&lt;/property&gt;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">user</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000">someusername</span><span style="color: #000000">/</span><span style="color: #000000">value</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">password</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000">somepassword</span><span style="color: #000000">&lt;/</span><span style="color: #000000">value</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span>
<img src ="http://www.blogjava.net/kyleYang/aggbug/302158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-11-12 23:45 <a href="http://www.blogjava.net/kyleYang/archive/2009/11/12/302158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SqlMapClient对象</title><link>http://www.blogjava.net/kyleYang/archive/2009/11/12/302156.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Thu, 12 Nov 2009 15:44:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/11/12/302156.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/302156.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/11/12/302156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/302156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/302156.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这个对象是iBatis操作数据库的接口（执行CRUD等操作），它也可以执行事务管理等操作。这个类是我们使用iBATIS的最主要的类。它是线程安全的。通常，将它定义为单例。（与hibernate中sessionFactory的定义类似）。如：                                    import java.io.Reader;          ...&nbsp;&nbsp;<a href='http://www.blogjava.net/kyleYang/archive/2009/11/12/302156.html'>阅读全文</a><img src ="http://www.blogjava.net/kyleYang/aggbug/302156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-11-12 23:44 <a href="http://www.blogjava.net/kyleYang/archive/2009/11/12/302156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ibatis使用知识总结</title><link>http://www.blogjava.net/kyleYang/archive/2009/11/12/302119.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Thu, 12 Nov 2009 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2009/11/12/302119.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/302119.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2009/11/12/302119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/302119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/302119.html</trackback:ping><description><![CDATA[1.&nbsp; 从官方网站下载，ibatis的jar及相关的文件，http://ibatis.apache.org/ <br />
2 . 新建一个工程， 我们如果要进行ibatis相关的操作， 就一个要导入ibatis-2.3.3.720.jar <br />
3 . 建立pojo与pojo.xml形成映射. <br />
4.&nbsp; 一般一个pojo对应一个pojo.xml， 例如.User.java.与User.xml <br />
pojo的类最好实现java.io.Serializable接口， 以备应用时， 进一步的扩展， 还要提供一个缺省的构造方法(空构造方法)。 <br />
5. ibatis的配置文件.SqlMapConfig.xml， 这个文件一般放到src下. <br />
&lt;?xml version="1.0" encoding="UTF-8" &gt; <br />
&lt;!DOCTYPE sqlMapConfig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"&gt; <br />
<br />
&lt;sqlMapConfig&gt; <br />
<br />
&nbsp; &lt;!-- Configure a built-in transaction manager.&nbsp; If you're using an <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app server, you probably want to use its transaction manager <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and a managed datasource -- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;properties resource="dbconfig.properties"/&gt;/*数据库的驱动配置文件,一般与SqlMapConfig.xml是同一级目录*/ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; &lt;transactionManager type="JDBC" commitRequired="false"&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;dataSource type="SIMPLE"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="JDBC.Driver" value="${driver}"/&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="JDBC.ConnectionURL" value="${url}"/&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="JDBC.Username" value="${user}"/&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="JDBC.Password" value="${password}"/&gt;/*配置文件的Key*/ <br />
&nbsp;&nbsp;&nbsp; &lt;/dataSource&gt; <br />
&nbsp; &lt;/transactionManager&gt; <br />
&nbsp;&nbsp; <br />
&nbsp; <br />
&nbsp; &lt;sqlMap resource="com/lxit/test/LXGroup.xml"/&gt; <br />
<br />
&nbsp; /*指定pojo的映射文件,&nbsp; 这句话一定要加上， 否则， 找不到配置文件，包名/类名.xml*/ <br />
&lt;/sqlMapConfig&gt; <br />
LXGroup.xml <br />
&lt;?xml version="1.0" encoding="UTF-8" ?&gt; <br />
<br />
&lt;!DOCTYPE sqlMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; "http://ibatis.apache.org/dtd/sql-map-2.dtd"&gt; <br />
<br />
&lt;sqlMap namespace="LXGroup"&gt; <br />
<br />
&nbsp;&nbsp;&nbsp; &lt;typeAlias alias="LXGroup" type="com.lxitedu.pojo.permission.LXGroup" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 类型别名 ， 为一个pojo类取一个别名， 以便在下面用时候， 直接用别名引用对象(上面的解释) <br />
&nbsp;&nbsp;&nbsp; &lt;resultMap class="LXGroup" id="paginationList"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;result property="groupId" column="ID" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;result property="groupName" column="groupName" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;result property="description" column="description" /&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/resultMap&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 数据返回类型，我用的是一张表 ， id 与select 标签的id一致， 就可以指定返回是多个pojo <br />
&nbsp;&nbsp;&nbsp; &lt;select id="userGroupRowCount" resultClass="int"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select count(*) from userGroup <br />
&nbsp;&nbsp;&nbsp; &lt;/select&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 我们可以， 根据自己的SQL查询语句， 及传入的参数来决定它的返回类型， <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resutlClass="返回类型" parameterClass="传入的参数类型" <br />
&nbsp;&nbsp;&nbsp; &lt;select id="userGroupList" resultMap="paginationList"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select * from userGroup <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/select&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;delete id="deleteUserGroup" parameterClass="String"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete from userGroup where groupName=#value# <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #value#由方法的传入参数填充 <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/delete&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;select id="userGroup" parameterClass="String" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultClass="LXGroup"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select ID as groupId,groupName as groupName,description as description from <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userGroup where groupName=#value# <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/select&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;insert id="addUserGroup" parameterClass="com.lxitedu.pojo.permission.LXGroup"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert into userGroup(groupName,description)values <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (#groupName#,## where <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID=#groupId# <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/update&gt;description#) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;selectKey resultClass="int" keyProperty="groupId"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select LAST_INSERT_ID() as value <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/selectKey&gt;(这是主键自动增长) <br />
&nbsp;&nbsp;&nbsp; &lt;/insert&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;update id="updateUserGroup" parameterClass="LXGroup"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update userGroup set groupName=#groupName#,description=#description <br />
&lt;/sqlMap&gt; <br />
6. 这里所有配置文件都完成了 <br />
之后就是得到SqlMapClient对象， 调用相应的方法， 完成相应操作 <br />
private static SqlMapClient sqlMapper; <br />
&nbsp;&nbsp;&nbsp; public static synchronized SqlMapClient getSqlMapClientInstance() <br />
&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(sqlMapper==null) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.close(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sqlMapper; <br />
&nbsp;&nbsp;&nbsp; } <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ibatis与spring的整合 <br />
<br />
1. ibatis与spring整合, 我们要导入相应的jar.commons-dbcp-1.2.jar,commons-pool-1.4.jar,spring2.5.5.jar,这些是Spring的jar <br />
2. 要想spring与ibatis整合起来， 我们只需修改一下配置文件就可以了，如果成功之后， 我们就会发现， 他会使的我们的程序越来越简单 <br />
第一步：在SqlMapConfig.xml里 ， 要删除 连接数据库驱动。 <br />
第二步：在ApplicationContext.xml里修改驱动 <br />
<br />
&nbsp;&nbsp;&nbsp; &lt;bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="ignoreResourceNotFound" value="true" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="locations"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;classpath:dbconfig.properties&lt;/value&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/list&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destroy-method="close"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="driverClassName"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;${driver}&lt;/value&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="url"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;${url}&lt;/value&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="username"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;${user}&lt;/value&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;${password}&lt;/value&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt; <br />
第三步： 整合ibatis与spring <br />
&nbsp; &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="configLocation" value="classpath:SqlMapConfig.xml"/&gt;（src下） <br />
&nbsp;&nbsp;&nbsp; &lt;property name="dataSource" ref="dataSource"/&gt; <br />
&nbsp; &lt;/bean&gt; <br />
<br />
第四步：修改实例对象方式 <br />
如果是单独的ibatis， 我们要通过读取SqlMapConfig.xml来得到SqlMapConfig来得到SqlMapClient对象 <br />
现在与spring整合之间， 我们只需要修改类的继承关系就可以了， 一般继承SqlMapClientDaoSupport <br />
this.getSqlMapClient()就可以实现得到数据库的操作对象，简化了操作。 <br />
第五步：在sqlmapconfig.xml里面我们只要写映射pojo.xml的路径就可以了。
 <img src ="http://www.blogjava.net/kyleYang/aggbug/302119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2009-11-12 17:00 <a href="http://www.blogjava.net/kyleYang/archive/2009/11/12/302119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>