﻿<?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-Knight of the round table-文章分类-ibatis</title><link>http://www.blogjava.net/wansong/category/46298.html</link><description>wansong</description><language>zh-cn</language><lastBuildDate>Mon, 04 Oct 2010 00:24:18 GMT</lastBuildDate><pubDate>Mon, 04 Oct 2010 00:24:18 GMT</pubDate><ttl>60</ttl><item><title>oracle sequence ibatis</title><link>http://www.blogjava.net/wansong/articles/332477.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 19 Sep 2010 13:46:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/332477.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/332477.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/332477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/332477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/332477.html</trackback:ping><description><![CDATA[http://www.javaeye.com/topic/215571<br />
&lt;!-- Oracle SEQUENCE --&gt; <br />
&lt;insert id="insertProduct-ORACLE" parameterClass="com.domain.Product"&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;selectKey resultClass="int" keyProperty="id" type="pre"&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/selectKey&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]&gt; <br />
&lt;/insert&gt; <br />
<br />
<br />
http://www.dnbcw.com/biancheng/oracle/BVBZ11361.html<br />
<br />
<div>create table example(<br />
id number(4) not null primary key,<br />
name varchar(25),<br />
phone varchar(10),<br />
address varchar(50));</div>
<div>然后，你需要一个自定义的sequence<br />
create sequence emp_sequence<br />
increment by 1 -- 每次加几个<br />
start with 1 -- 从1开始计数<br />
nomaxvalue -- 不设置最大值<br />
nocycle -- 一直累加，不循环<br />
nocache -- 不建缓冲区</div>
<div>以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq</div>
<br />
create or replace trigger "触发器名称" before<br />
insert on example for each row when (new.id is null)<br />
begin<br />
<span style="color: red"><strong>select emp_sequence.nextval into: new.id </strong></span>from dual;<br />
end;<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/wansong/aggbug/332477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-09-19 21:46 <a href="http://www.blogjava.net/wansong/articles/332477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ibatis3整合spring</title><link>http://www.blogjava.net/wansong/articles/331849.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 12 Sep 2010 12:57:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/331849.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/331849.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/331849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/331849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/331849.html</trackback:ping><description><![CDATA[http://www.javaeye.com/topic/528374 <br />
<br />
<br />
Spring 3.0 整合 iBatis 3 Beta10 配置:<br />
http://blog.csdn.net/s_ongfei/archive/2010/08/14/5811162.aspx
<img src ="http://www.blogjava.net/wansong/aggbug/331849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-09-12 20:57 <a href="http://www.blogjava.net/wansong/articles/331849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ibatis详细配置</title><link>http://www.blogjava.net/wansong/articles/331848.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 12 Sep 2010 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/331848.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/331848.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/331848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/331848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/331848.html</trackback:ping><description><![CDATA[http://hi.baidu.com/ajin111/blog/item/bab0fbfc11c41a87b801a00b.html<br />
<br />
<br />
<p><font size="2">ibatis基础代码包括： <br />
1．&nbsp;&nbsp;&nbsp; ibatis实例配置 <br />
一个典型的配置文件如下（具体配置项目的含义见后）： <br />
&lt;? <a name="baidusnap0"></a><strong style="background-color: #ffff66; color: black">xml</strong> version="1.0" encoding="UTF-8"&nbsp;&nbsp;&nbsp; ?&gt;&nbsp;&nbsp;<br />
&lt;! DOCTYPE sqlMapConfig <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PUBLIC "-//iBATIS.com//DTD <a name="baidusnap1"></a><strong style="background-color: #a0ffff; color: black">SQL</strong> <a name="baidusnap2"></a><strong style="background-color: #99ff99; color: black">Map</strong> Config 2.0/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "</font><a href="http://www.ibatis.com/dtd/sql-map-config-2.dt"><font color="#4389cf" size="2">http://www.ibatis.com/dtd/<strong style="background-color: #a0ffff; color: black">sql</strong>-<strong style="background-color: #99ff99; color: black">map</strong>-config-2.dt</font></a><br />
<font size="2"><br />
&lt;sqlMapConfig &gt;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt; settings <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cacheModelsEnabled ="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enhancementEnabled ="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lazyLoadingEnabled ="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorTracingEnabled ="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxRequests ="32"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxSessions ="10"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxTransactions ="5"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useStatementNamespaces ="false"&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt; transactionManager&nbsp;&nbsp;&nbsp; type ="JDBC" &gt;&nbsp;&nbsp;</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; &lt; dataSource&nbsp;&nbsp;&nbsp; type ="SIMPLE" &gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="JDBC.Driver"&nbsp;&nbsp;&nbsp; value ="com.p6spy.engine.spy.P6SpyDriver" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="JDBC.ConnectionURL"&nbsp;&nbsp;&nbsp; value ="jdbc:mysql://localhost/sample" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="JDBC.Username"&nbsp;&nbsp;&nbsp; value ="user" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="JDBC.Password"&nbsp;&nbsp;&nbsp; value ="mypass" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.MaximumActiveConnections"&nbsp;&nbsp;&nbsp; value ="10" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.MaximumIdleConnections"&nbsp;&nbsp;&nbsp; value ="5" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.MaximumCheckoutTime"&nbsp;&nbsp;&nbsp; value ="120000" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.TimeToWait"&nbsp;&nbsp;&nbsp; value ="500" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.PingQuery"&nbsp;&nbsp;&nbsp; value ="select 1 from ACCOUNT" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.PingEnabled"&nbsp;&nbsp;&nbsp; value ="false" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.PingConnectionsOlderThan"&nbsp;&nbsp;&nbsp; value ="1" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; property&nbsp;&nbsp;&nbsp; name ="Pool.PingConnectionsNotUsedFor"&nbsp;&nbsp;&nbsp; value ="1" /&gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ dataSource &gt;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ transactionManager &gt;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt; sqlMap&nbsp;&nbsp;&nbsp; resource ="com/ibatis/sample/User.<strong style="background-color: #ffff66; color: black">xml</strong>" /&gt;&nbsp;&nbsp;<br />
<br />
&lt;/ sqlMapConfig &gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</font></p>
<p><font size="2">⑴ Settings 节点 </font></p>
<p><font size="2">cacheModelsEnabled&nbsp;&nbsp;<br />
是否启用SqlMapClient上的缓存机制。 建议设为"true" </font></p>
<p><font size="2">enhancementEnabled&nbsp;&nbsp;<br />
是否针对POJO启用字节码增强机getter/setter的调用效能，避免Reflect所带来的性能开销。同时，这也为Lazy Loading带来提升。 建议设为"true" </font></p>
<p><font size="2">errorTracingEnabled <br />
是否启用错误日志，在开发期间建议设为"true" 以方便调试 </font></p>
<p><font size="2">lazyLoadingEnabled <br />
是否启用延迟加载机制，建议设为"true" </font></p>
<p><font size="2">maxRequests <br />
最大并发请求数（Statement并发数） </font></p>
<p><font size="2">maxTransactions&nbsp;&nbsp;<br />
最大并发事务数 </font></p>
<p><font size="2">maxSessions&nbsp;&nbsp;&nbsp; 最大Session数。即当前最大允许的并发SqlMapClient数。 <br />
<br />
useStatementNamespaces&nbsp;&nbsp;<br />
是否使用Statement命名空间。 <br />
这里的命名空间指的是映射文件中，sqlMap节的namespace属性，如在上例中针对t_use<br />
表的映射文件sqlMap节点： &lt;sqlMap namespace="User"&gt; 这里，指定了此sqlMap节点下定义的操作均属于"User"命名空间。 在useStatementNamespaces="true"的情况下，Statement调用需追加命名空间，如：sqlMap.update("User.updateUser",user); <br />
否则直接通过Statement名称调用即可，如： sqlMap.update("updateUser",user); 但请注意此时需要保证所有映射文件中，Statement定义无重名。 </font></p>
<p><br />
<font size="2">transactionManager节点<br />
transactionManager节点定义了ibatis的事务管理器，目前提供了以下几种选择： <br />
JDBC<br />
通过传统JDBC Connection.commit/rollback实现事务支持。&nbsp;&nbsp;<br />
JTA<br />
使用容器提供的JTA服务实现全局事务管理。<br />
EXTERNAL<br />
外部事务管理，如在EJB中使用ibatis，通过EJB的部署配置即可实现自<br />
动的事务管理机制。此时ibatis将把所有事务委托给外部容器进行管理。 </font></p>
<p><font size="2">dataSource节点 <br />
&nbsp;&nbsp;&nbsp; dataSource从属于transactionManager节点，用于设定ibatis运行期使用的DataSource属性。<br />
type属性：<br />
dataSource节点的type属性指定了dataSource的实现类型。 可选项目： <br />
SIMPLE： <br />
&nbsp;&nbsp;&nbsp; SIMPLE是ibatis内置的dataSource实现，其中实现了一个简单的<br />
数据库连接池机制，对应 ibatis 实现类为<br />
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。 <br />
<br />
DBCP:<br />
&nbsp;&nbsp;&nbsp; 基于Apache DBCP连接池组件实现的DataSource封装，当无容器提<br />
供DataSource服务时，建议使用该选项，对应ibatis实现类为<br />
com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。 <br />
<br />
JNDI：<br />
使用J2EE容器提供的DataSource实现，DataSource将通过指定<br />
的JNDI Name从容器中获取。对应 ibatis实现类为<br />
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。<br />
<br />
dataSource的子节点说明（SIMPLE&amp;DBCP）：<br />
JDBC.Driver&nbsp;&nbsp;&nbsp; JDBC 驱动。 <br />
如：org.gjt.mm.mysql.Driver </font></p>
<p><font size="2">JDBC.ConnectionURL&nbsp;&nbsp;<br />
数据库URL。 <br />
如：jdbc:mysql://localhost/sample <br />
如果用的是SQLServer JDBC Driver，需要<br />
在url后追加SelectMethod=Cursor以获得<br />
JDBC事务的多Statement支持。<br />
JDBC.Username<br />
&nbsp;&nbsp;&nbsp; 数据库用户名 <br />
JDBC.Password&nbsp;&nbsp;<br />
数据库用户密码 <br />
Pool.MaximumActiveConnections <br />
数据库连接池可维持的最大容量。 </font></p>
<p><font size="2">Pool.MaximumIdleConnections <br />
数据库连接池中允许的挂起（idle）连接数。 </font></p>
<p><font size="2">JNDI由于大部分配置是在应用服务器中进行，因此ibatis中的配置相对简<br />
分别使用JDBC和JTA事务管理的JDNI配置： <br />
使用JDBC事务管理的JNDI DataSource配置 </font></p>
<p><br />
<font size="2">&lt; transactionManager&nbsp;&nbsp;&nbsp; type ="JDBC"&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;<br />
&lt; dataSource&nbsp;&nbsp;&nbsp; type ="JNDI" &gt;&nbsp;&nbsp;<br />
&lt; property&nbsp;&nbsp;&nbsp; name ="DataSource"&nbsp;&nbsp;&nbsp;&nbsp; value ="java:comp/env/jdbc/myDataSource" /&gt;&nbsp;&nbsp;<br />
&lt;/ dataSource &gt;&nbsp;&nbsp;<br />
&lt;/ transactionManager &gt;&nbsp;&nbsp;<br />
&lt; transactionManager&nbsp;&nbsp;&nbsp; type ="JTA"&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;<br />
&lt; property&nbsp;&nbsp;&nbsp; name ="UserTransaction"&nbsp;&nbsp;&nbsp;&nbsp; value ="java:/ctx/con/UserTransaction" /&gt;&nbsp;&nbsp;<br />
&lt; dataSource&nbsp;&nbsp;&nbsp; type ="JNDI" &gt;&nbsp;&nbsp;<br />
&lt; property&nbsp;&nbsp;&nbsp; name ="DataSource"&nbsp;&nbsp;&nbsp;&nbsp; value ="java:comp/env/jdbc/myDataSource" /&gt;&nbsp;&nbsp;<br />
&lt;/ dataSource &gt;&nbsp;&nbsp;&nbsp;<br />
sqlMap节点<br />
sqlMap节点指定了映射文件的位置，配置中可出现多个sqlMap节点，以指定<br />
项目内所包含的所有映射文件。 </font></p>
<p><font size="2">ibatis基础语义 </font></p>
<p><font size="2">XmlSqlMapClientBuilder<br />
XmlSqlMapClientBuilder是ibatis 2.0之后版本新引入的组件，用以替代1.x<br />
版本中的XmlSqlMapBuilder。其作用是根据配置文件创建SqlMapClient实例。 <br />
<br />
SqlMapClient<br />
SqlMapClient是ibatis的核心组件，提供数据操作的基础平台。SqlMapClient<br />
可通过XmlSqlMapClientBuilder创建: <br />
&nbsp;&nbsp;</font></p>
<p><font size="2">String resource&nbsp;&nbsp;&nbsp; = " com/ibatis/sample/SqlMapConfig.<strong style="background-color: #ffff66; color: black">xml</strong> " ; <br />
Reader reader; <br />
<br />
reader&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; Resources.getResourceAsReader(resource); <br />
<br />
XmlSqlMapClientBuilder xmlBuilder&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp;<br />
new&nbsp;&nbsp;&nbsp; XmlSqlMapClientBuilder(); <br />
<br />
SqlMapClient sqlMap&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; xmlBuilder.buildSqlMap(reader);&nbsp;&nbsp;<br />
"com/ibatis/sample/SqlMapConfig.<strong style="background-color: #ffff66; color: black">xml</strong>"指明了配置文件在CLASSPATH<br />
中的相对路径。XmlSqlMapClientBuilder通过接受一个Reader类型的配置文<br />
件句柄，根据配置参数，创建SqlMapClient实例。 <br />
<br />
SqlMapClient提供了众多数据操作方法，下面是一些常用方法的示例，具体说明<br />
文档请参见ibatis java doc，或者ibatis官方开发手册。 </font></p>
<p><font size="2">SqlMapClient基本操作示例 </font></p>
<p><font size="2">以下示例摘自ibatis官方开发手册，笔者对其进行了重新排版以获得更好的阅读效果。<br />
例1: 数据写入操作(insert, update, delete): </font></p>
<p><br />
<font size="2">sqlMap.startTransaction(); <br />
Product product&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp;&nbsp; Product(); <br />
product.setId ( 1 ); <br />
product.setDescription (&#8220;Shih Tzu&#8221;); <br />
int&nbsp;&nbsp;&nbsp; rows&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; sqlMap.insert (&#8220;insertProduct&#8221;, product); <br />
sqlMap.commitTransaction();&nbsp;&nbsp;<br />
例2: 数据查询 (select) </font></p>
<p><br />
<font size="2">sqlMap.startTransaction(); <br />
Integer key&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp;&nbsp; Integer ( 1 ); <br />
Product product&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; (Product)sqlMap.queryForObject (&#8220;getProduct&#8221;, key); <br />
sqlMap.commitTransaction();&nbsp;&nbsp;<br />
例3: 在指定对象中存放查询结果(select)&nbsp;&nbsp;</font></p>
<p><br />
<font size="2">sqlMap.startTransaction(); <br />
Customer customer&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp;&nbsp; Customer(); <br />
sqlMap.queryForObject(&#8220;getCust&#8221;, parameterObject, customer); <br />
sqlMap.queryForObject(&#8220;getAddr&#8221;, parameterObject, customer); <br />
sqlMap.commitTransaction();&nbsp;&nbsp;<br />
例4: 执行批量查询 (select) </font></p>
<p><br />
<font size="2">sqlMap.startTransaction(); <br />
List list&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; sqlMap.queryForList (&#8220;getProductList&#8221;,&nbsp;&nbsp;&nbsp; null )<br />
sqlMap.commitTransaction();&nbsp;&nbsp;<br />
例5: 关于AutoCommit </font></p>
<p><br />
<font size="2">// 没有预先执行startTransaction时，默认为auto_commit模式&nbsp;&nbsp;<br />
int&nbsp;&nbsp;&nbsp; rows&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; sqlMap.insert (&#8220;insertProduct&#8221;, product);&nbsp;&nbsp;<br />
例6:查询指定范围内的数据 </font></p>
<p><br />
<font size="2">sqlMap.startTransaction(); <br />
List list&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; sqlMap.queryForList (&#8220;getProductList&#8221;,&nbsp;&nbsp;&nbsp; null ,&nbsp;&nbsp;&nbsp; 0 ,&nbsp;&nbsp;&nbsp; 40 ); <br />
sqlMap.commitTransaction();&nbsp;&nbsp;<br />
例7: 结合RowHandler进行查询(select) </font></p>
<p><br />
<font size="2">&nbsp;&nbsp;&nbsp; public&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp; MyRowHandler&nbsp;&nbsp;&nbsp; implements&nbsp;&nbsp;&nbsp; RowHandler&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; handleRow (Object object, List list)&nbsp;&nbsp;&nbsp; throws&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQLException&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Product product&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; (Product) object; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; product.setQuantity ( 10000 ); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlMap.update (&#8220;updateProduct&#8221;, product); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
}&nbsp;&nbsp;<br />
sqlMap.startTransaction(); <br />
RowHandler rowHandler&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp;&nbsp; MyRowHandler(); <br />
List list&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; sqlMap.queryForList (&#8220;getProductList&#8221;,&nbsp;&nbsp;&nbsp; null , <br />
rowHandler); <br />
sqlMap.commitTransaction();&nbsp;&nbsp;<br />
&nbsp;&nbsp;</font></p>
<p><font size="2">// 例8: 分页查询 (select)&nbsp;&nbsp;<br />
PaginatedList list&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;<br />
sqlMap.queryForPaginatedList (&#8220;getProductList&#8221;,&nbsp;&nbsp;&nbsp; null ,&nbsp;&nbsp;&nbsp; 10 ); <br />
list.nextPage(); <br />
list.previousPage(); <br />
<br />
<br />
// 例9: 基于<strong style="background-color: #99ff99; color: black">Map</strong>的批量查询 (select)&nbsp;&nbsp;<br />
sqlMap.startTransaction(); <br />
<strong style="background-color: #99ff99; color: black">Map</strong> <strong style="background-color: #99ff99; color: black">map</strong>&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; sqlMap.queryForMap (&#8220;getProductList&#8221;,&nbsp;&nbsp;&nbsp; null , &#8220;productCode&#8221;); <br />
sqlMap.commitTransaction(); <br />
Product p&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; (Product) <strong style="background-color: #99ff99; color: black">map</strong>.get(&#8220;EST - 93 &#8221;);&nbsp;&nbsp;</font></p>
<img src ="http://www.blogjava.net/wansong/aggbug/331848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-09-12 20:52 <a href="http://www.blogjava.net/wansong/articles/331848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBATIS创建视图</title><link>http://www.blogjava.net/wansong/articles/331669.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 10 Sep 2010 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/331669.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/331669.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/331669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/331669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/331669.html</trackback:ping><description><![CDATA[http://www.qqread.com/mysql/z341874.html<br />
<br />
<br />
<p>查询直接store procedure然后IBATIS里访问store procedure easy到了极致，连resultset都不用你自己去封装，直接：</p>
<p>{call P_PPQPWEB_LOGIN.SP_PPQPWEB_LOGIN_CHECKLOGIN<br />
&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;#{inputUserId},<br />
&nbsp;&nbsp;&nbsp;&nbsp;#{inputUserPwd},<br />
&nbsp;&nbsp;&nbsp;&nbsp;#{inputUserIP},<br />
&nbsp;&nbsp;&nbsp;&nbsp;#{loginCheck,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode=OUT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; javaType=java.lang.String,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jdbcType=VARCHAR<br />
&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #{usrCur,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode=OUT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; javaType=java.sql.ResultSet,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jdbcType=CURSOR,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultMap=loginDBO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;} 这样一下，你(List)map.get(userCur)一下，这个LIST就已经给你封装好了<br />
<br />
<br />
<br />
<br />
<br />
<br />
</p>
<p>{usrCur,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode=OUT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; javaType=java.sql.ResultSet,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jdbcType=CURSOR,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultMap=loginDBO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>这边有一个OUT你看到了吧？</p>
<p>然后你代码里怎么样你知道吧？</p>
<p>userInfoList = (List&lt;LoginDBO&gt;) userInfoMap.get("usrCur");<br />
<br />
<br />
<span style="color: red">com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: FUNCTION rbac-cms.prc_page_result does not exist<br />
<span style="color: red">http://forums.mysql.com/read.php?46,173826,229449#msg-229449</span></span><br />
</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/wansong/aggbug/331669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-09-10 15:20 <a href="http://www.blogjava.net/wansong/articles/331669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>