﻿<?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-Angi Forever-文章分类-iBatis</title><link>http://www.blogjava.net/Angi/category/47589.html</link><description>YOUR WAY</description><language>zh-cn</language><lastBuildDate>Mon, 04 Apr 2011 11:20:34 GMT</lastBuildDate><pubDate>Mon, 04 Apr 2011 11:20:34 GMT</pubDate><ttl>60</ttl><item><title>iBatis transactionManager external</title><link>http://www.blogjava.net/Angi/articles/344401.html</link><dc:creator>Angi Wang</dc:creator><author>Angi Wang</author><pubDate>Tue, 15 Feb 2011 16:11:00 GMT</pubDate><guid>http://www.blogjava.net/Angi/articles/344401.html</guid><wfw:comment>http://www.blogjava.net/Angi/comments/344401.html</wfw:comment><comments>http://www.blogjava.net/Angi/articles/344401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Angi/comments/commentRss/344401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Angi/services/trackbacks/344401.html</trackback:ping><description><![CDATA[<div>iBatis的配置文件中不配置&lt;transactionManager/&gt;，即如下：<br />
&lt;sqlMapConfig&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>&lt;sqlMap resource="com/angi/ibatis/maps/User.xml" /&gt;</div>
<div>&lt;/sqlMapConfig&gt;</div>
则使用的事务为ExternalTransaction，commit和roback什么都不做的，所以此时如果配置DBCP数据源的defaultAutoCommit属性为false（默认值为true）：
<div>
<div>&lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;property name="driverClassName"&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;/property&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;!--&lt;property name="defaultAutoCommit" value="false"/&gt;--&gt;</div>
</div>
<div>则不可能提交变化到数据库的。</div>
<img src ="http://www.blogjava.net/Angi/aggbug/344401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Angi/" target="_blank">Angi Wang</a> 2011-02-16 00:11 <a href="http://www.blogjava.net/Angi/articles/344401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBatis JDBC SIMPLE</title><link>http://www.blogjava.net/Angi/articles/344400.html</link><dc:creator>Angi Wang</dc:creator><author>Angi Wang</author><pubDate>Tue, 15 Feb 2011 15:54:00 GMT</pubDate><guid>http://www.blogjava.net/Angi/articles/344400.html</guid><wfw:comment>http://www.blogjava.net/Angi/comments/344400.html</wfw:comment><comments>http://www.blogjava.net/Angi/articles/344400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Angi/comments/commentRss/344400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Angi/services/trackbacks/344400.html</trackback:ping><description><![CDATA[<div>&lt;transactionManager type="JDBC"&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>&lt;dataSource type="SIMPLE"&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/test" /&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;property name="JDBC.Username" value="root" /&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;property name="JDBC.Password" value="mysql" /&gt;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>&lt;property name="JDBC.DefaultAutoCommit" value="true" /&gt;</div>
<div>JDBC.DefaultAutoCommit这个属性对于单纯的iBatis来说，没有多大的意义，因为JdbcTransaction中有如下一段：</div>
<div>
<div>if (connection.getAutoCommit()) {</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp;connection.setAutoCommit(false);</div>
<div>&nbsp;&nbsp; &nbsp;}</div>
</div>
<div>也就是connection都被设置为手动提交的</div>
<br />
<img src ="http://www.blogjava.net/Angi/aggbug/344400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Angi/" target="_blank">Angi Wang</a> 2011-02-15 23:54 <a href="http://www.blogjava.net/Angi/articles/344400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBatis事务</title><link>http://www.blogjava.net/Angi/articles/344396.html</link><dc:creator>Angi Wang</dc:creator><author>Angi Wang</author><pubDate>Tue, 15 Feb 2011 14:56:00 GMT</pubDate><guid>http://www.blogjava.net/Angi/articles/344396.html</guid><wfw:comment>http://www.blogjava.net/Angi/comments/344396.html</wfw:comment><comments>http://www.blogjava.net/Angi/articles/344396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Angi/comments/commentRss/344396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Angi/services/trackbacks/344396.html</trackback:ping><description><![CDATA[对于单纯（相对是否使用Spring）的iBatis，一般事务控制如下：
<div>
<div>try {</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>sqlMap.startTransaction();</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>User user = new User();</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>user.setName("Angi0007@gmail.com");</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>user.setSex(new Integer(1));</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>sqlMap.insert("insertUser", user);</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>sqlMap.commitTransaction();</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>} catch (SQLException e) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>System.out.println(e.getMessage());</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>} finally {</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>try {</div>
<div><span class="Apple-tab-span" style="white-space:pre">				</span>sqlMap.endTransaction();</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>} catch (SQLException e) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">				</span>e.printStackTrace();</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>System.out.println("Insert successfully!");</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div>
</div>
<div>sqlMap.startTransaction()，会在当前线程中创建Transaction</div>
<div>sqlMap.insert("insertUser", user)，先判断当前线程中是否存在Transaction对象，如果存在就认为是手动事务，即autoStart为false，那么就需要手工提交事务，否则为true</div>
<div>sqlMap.commitTransaction()，手动提交事务</div>
<div>sqlMap.endTransaction()，关闭事务</div>
<div>如果不添加上面的事务控制，而采用如下方式：</div>
<div>
<div>try {</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>User user = new User();</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>user.setName("Angi0006@gmail.com");</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>user.setSex(new Integer(1));</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>sqlMap.insert("insertUser", user);</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>} catch (SQLException e) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>System.out.println(e.getMessage());</div>
<div><span class="Apple-tab-span" style="white-space:pre">		</span>}&nbsp;</div>
<div>就是自动提交事务</div>
</div>
<img src ="http://www.blogjava.net/Angi/aggbug/344396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Angi/" target="_blank">Angi Wang</a> 2011-02-15 22:56 <a href="http://www.blogjava.net/Angi/articles/344396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>