﻿<?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-疯狂-随笔分类-读代码</title><link>http://www.blogjava.net/freeman1984/category/49876.html</link><description>         
        STANDING ON THE SHOULDERS OF GIANTS</description><language>zh-cn</language><lastBuildDate>Sun, 06 Jan 2013 11:05:59 GMT</lastBuildDate><pubDate>Sun, 06 Jan 2013 11:05:59 GMT</pubDate><ttl>60</ttl><item><title>Spring jdbc(java类型和oracle类型的转换)</title><link>http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Sun, 06 Jan 2013 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/393854.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/393854.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/393854.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; spring在执行sql语句时，会根据用户提供的类型参数来进行sql参数的绑定，例如：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public&nbsp;int&nbsp;update(String&nbsp;sql,&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/393854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-01-06 11:09 <a href="http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数原理和使用</title><link>http://www.blogjava.net/freeman1984/archive/2012/12/24/393402.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Mon, 24 Dec 2012 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/12/24/393402.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/393402.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/12/24/393402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/393402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/393402.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数原理和使用&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2012/12/24/393402.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/393402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-12-24 15:16 <a href="http://www.blogjava.net/freeman1984/archive/2012/12/24/393402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate，spring管理事务中(transaction，JDBC connection，Hibernate Session的使用研究)（一）</title><link>http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 18 Nov 2011 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/363984.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/363984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/363984.html</trackback:ping><description><![CDATA[如果单独使用hibernate可参考上一篇文章<a href="http://www.blogjava.net/freeman1984/archive/2011/08/04/355808.html">http://www.blogjava.net/freeman1984/archive/2011/08/04/355808.html</a><br /><br /><strong>首先hibernate的Connection release mode有以下几种：<br /></strong>1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jta中 ，<span style="color: red"><strong>on_close 是3.1之前遗留的（也许是为spring留的-_-），也就是3.1之前默认是on_close ，但3.1之后默认如果单独使用hibernate是after_transaction，</strong></span>如果有第三方事务管理，就用第三方提供的默认值，spring就是默认使用了on_close。<br /><strong>在spring管理事务中我们看看系统启动后默认使用的配置：<br /></strong>1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事务策略<br />2，hibernate内部 Automatic session close at end of transaction: disabled 因为已经交给spring了<br />3&nbsp;&nbsp; Connection release mode: auto 默认，也就是没有配置hibernate.connection.release_mode的时候，但是这里有地方需要注意：也就是前面提到的使用第三方策略时的问题：看一下代码： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">String&nbsp;releaseModeName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;PropertiesHelper.getString(&nbsp;Environment.RELEASE_CONNECTIONS,&nbsp;properties,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">auto</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Connection&nbsp;release&nbsp;mode:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;releaseModeName&nbsp;);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionReleaseMode&nbsp;releaseMode;<br /><img id="Codehighlighter1_246_311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_246_311_Open_Text.style.display='none'; Codehighlighter1_246_311_Closed_Image.style.display='inline'; Codehighlighter1_246_311_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_246_311_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_246_311_Closed_Text.style.display='none'; Codehighlighter1_246_311_Open_Image.style.display='inline'; Codehighlighter1_246_311_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">auto</span><span style="color: #000000">"</span><span style="color: #000000">.equals(releaseModeName)&nbsp;)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_246_311_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_246_311_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: red">releaseMode&nbsp;</span><span style="color: red">=</span><span style="color: red">&nbsp;transactionFactory.getDefaultReleaseMode();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span></span><span style="color: #000000"><br /><img id="Codehighlighter1_320_663_Open_Image" onclick="this.style.display='none'; Codehighlighter1_320_663_Open_Text.style.display='none'; Codehighlighter1_320_663_Closed_Image.style.display='inline'; Codehighlighter1_320_663_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_320_663_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_320_663_Closed_Text.style.display='none'; Codehighlighter1_320_663_Open_Image.style.display='inline'; Codehighlighter1_320_663_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_320_663_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_320_663_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;releaseMode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.parse(&nbsp;releaseModeName&nbsp;);<br /><img id="Codehighlighter1_494_659_Open_Image" onclick="this.style.display='none'; Codehighlighter1_494_659_Open_Text.style.display='none'; Codehighlighter1_494_659_Closed_Image.style.display='inline'; Codehighlighter1_494_659_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_494_659_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_494_659_Closed_Text.style.display='none'; Codehighlighter1_494_659_Open_Image.style.display='inline'; Codehighlighter1_494_659_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;releaseMode&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.AFTER_STATEMENT&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">connections.supportsAggressiveRelease()&nbsp;)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_494_659_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_494_659_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.warn(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Overriding&nbsp;release&nbsp;mode&nbsp;as&nbsp;connection&nbsp;provider&nbsp;does&nbsp;not&nbsp;support&nbsp;'after_statement'</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;releaseMode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.AFTER_TRANSACTION;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>其中红色部分就是调用了spring提供的默认值，而spring的默认值：在jta和cmt中都默认使用的是after_statement<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_0_328_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_328_Open_Text.style.display='none'; Codehighlighter1_0_328_Closed_Image.style.display='inline'; Codehighlighter1_0_328_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_0_328_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_0_328_Closed_Text.style.display='none'; Codehighlighter1_0_328_Open_Image.style.display='inline'; Codehighlighter1_0_328_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_0_328_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_0_328_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Sets&nbsp;connection&nbsp;release&nbsp;mode&nbsp;"on_close"&nbsp;as&nbsp;default.<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;This&nbsp;was&nbsp;the&nbsp;case&nbsp;for&nbsp;Hibernate&nbsp;3.0;&nbsp;Hibernate&nbsp;3.1&nbsp;changed<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;to&nbsp;"auto"&nbsp;(i.e.&nbsp;"after_statement"&nbsp;or&nbsp;"after_transaction").<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;However,&nbsp;for&nbsp;Spring's&nbsp;resource&nbsp;management&nbsp;(in&nbsp;particular&nbsp;for<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;HibernateTransactionManager),&nbsp;"on_close"&nbsp;is&nbsp;the&nbsp;better&nbsp;default.<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_384_428_Open_Image" onclick="this.style.display='none'; Codehighlighter1_384_428_Open_Text.style.display='none'; Codehighlighter1_384_428_Closed_Image.style.display='inline'; Codehighlighter1_384_428_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_384_428_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_384_428_Closed_Text.style.display='none'; Codehighlighter1_384_428_Open_Image.style.display='inline'; Codehighlighter1_384_428_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ConnectionReleaseMode&nbsp;getDefaultReleaseMode()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_384_428_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_384_428_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.ON_CLOSE;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div><br />而spring为什么要使用on_close ，而不是用after_transaction ,我们想想opensessioninview的原理也许能明白，session在view成还要使用，所以不能再transactio<span>n使用完后关闭JDBC connection，必须要在session之后，所以要使用on<strong>_close</strong></span><strong><span>（</span><span>也就是在on session(flush.auto，或者flush.Eagerly) 关闭）。这种情况hibernate内部还会在spring关闭JDBC connection后提示(费解，因为after transaction之后session没有关闭，但是&nbsp;Connection release mode配置的是on_close,session的关闭和&nbsp;Connection 的关闭都由spring来管理，hibernate就不知道了)，所以hibernate有好的提示如下(其实session，已经关闭。当然随着session的关闭jdbc链接释放回连接池)：</span><br /><span style="color: red">transaction completed on session with on_close connection release mode; be sure to cl</span></strong>ose the session to release JDBC resources!，<br /><br />。当然我们也可以使用after_transaction ，这种情况对使用编程式事务非常适用。<br />&nbsp;&nbsp;&nbsp;&nbsp;   <img src ="http://www.blogjava.net/freeman1984/aggbug/363984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2011-11-18 11:25 <a href="http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring JdbcTemplate的queryForObject为空返回异常情况的一个处理</title><link>http://www.blogjava.net/freeman1984/archive/2011/10/25/361976.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Tue, 25 Oct 2011 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2011/10/25/361976.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/361976.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2011/10/25/361976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/361976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/361976.html</trackback:ping><description><![CDATA[看spring的queryForObject(如果查询结果条数为0或者大于1)都会返回异常，我们希望没查到返回null，这样我们就可以给用户提示没有找到，要不我们的每个queryforObject，queryForInt...等等方法都需要手动拦截这个异常来判断为空，才能做出判断。<br />先看下spring的这段源码： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_106_252_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_252_Open_Text.style.display='none'; Codehighlighter1_106_252_Closed_Image.style.display='inline'; Codehighlighter1_106_252_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_106_252_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_106_252_Closed_Text.style.display='none'; Codehighlighter1_106_252_Open_Image.style.display='inline'; Codehighlighter1_106_252_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;T&nbsp;queryForObject(String&nbsp;sql,&nbsp;Object[]&nbsp;args,&nbsp;RowMapper</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;rowMapper)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;DataAccessException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_106_252_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_106_252_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;results&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;query(sql,&nbsp;args,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RowMapperResultSetExtractor</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">(rowMapper,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;DataAccessUtils.requiredSingleResult(results);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_364_686_Open_Image" onclick="this.style.display='none'; Codehighlighter1_364_686_Open_Text.style.display='none'; Codehighlighter1_364_686_Closed_Image.style.display='inline'; Codehighlighter1_364_686_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_364_686_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_364_686_Closed_Text.style.display='none'; Codehighlighter1_364_686_Open_Image.style.display='inline'; Codehighlighter1_364_686_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;T&nbsp;requiredSingleResult(Collection</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;results)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IncorrectResultSizeDataAccessException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_364_686_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_364_686_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;size&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(results&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;results.size()&nbsp;:&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><img id="Codehighlighter1_436_544_Open_Image" onclick="this.style.display='none'; Codehighlighter1_436_544_Open_Text.style.display='none'; Codehighlighter1_436_544_Closed_Image.style.display='inline'; Codehighlighter1_436_544_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_436_544_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_436_544_Closed_Text.style.display='none'; Codehighlighter1_436_544_Open_Image.style.display='inline'; Codehighlighter1_436_544_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(size&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_436_544_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_436_544_Open_Text"><span style="color: #000000">{</span><span style="color: #008000">//</span><span style="color: #008000">记录为o返回异常</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmptyResultDataAccessException(</span><span style="color: #000000">1</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">此异常继承自IncorrectResultSizeDataAccessException</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_572_647_Open_Image" onclick="this.style.display='none'; Codehighlighter1_572_647_Open_Text.style.display='none'; Codehighlighter1_572_647_Closed_Image.style.display='inline'; Codehighlighter1_572_647_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_572_647_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_572_647_Closed_Text.style.display='none'; Codehighlighter1_572_647_Open_Image.style.display='inline'; Codehighlighter1_572_647_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(results.size()&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_572_647_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_572_647_Open_Text"><span style="color: #000000">{有多条记录返回异常<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IncorrectResultSizeDataAccessException(</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;size);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;results.iterator().next();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><br />下面是我的一个方法，其他的方法请大家补充：<br />写一个接口定义规则： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_41_89_Open_Image" onclick="this.style.display='none'; Codehighlighter1_41_89_Open_Text.style.display='none'; Codehighlighter1_41_89_Closed_Image.style.display='inline'; Codehighlighter1_41_89_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_41_89_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_41_89_Closed_Text.style.display='none'; Codehighlighter1_41_89_Open_Image.style.display='inline'; Codehighlighter1_41_89_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;JdbcTemplateCallBack</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_41_89_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_41_89_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;&nbsp;T&nbsp;querys(JdbcTemplate&nbsp;jdbcTemplate);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>然后是BaseDao的通用的方法：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_0_174_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_174_Open_Text.style.display='none'; Codehighlighter1_0_174_Closed_Image.style.display='inline'; Codehighlighter1_0_174_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_0_174_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_0_174_Closed_Text.style.display='none'; Codehighlighter1_0_174_Open_Image.style.display='inline'; Codehighlighter1_0_174_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_0_174_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_0_174_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;可以用于处理查询queryfor&nbsp;为空或者多条的时候返回异常的情况，现在返回null,主要是拦截IncorrectResultSizeDataAccessException异常,以及子类<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;jdbcTemplateCallBack<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;DaoException<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_270_565_Open_Image" onclick="this.style.display='none'; Codehighlighter1_270_565_Open_Text.style.display='none'; Codehighlighter1_270_565_Closed_Image.style.display='inline'; Codehighlighter1_270_565_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_270_565_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_270_565_Closed_Text.style.display='none'; Codehighlighter1_270_565_Open_Image.style.display='inline'; Codehighlighter1_270_565_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;T&nbsp;queryNullAble(JdbcTemplateCallBack</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;jdbcTemplateCallBack)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;DaoException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_270_565_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_270_565_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_278_340_Open_Image" onclick="this.style.display='none'; Codehighlighter1_278_340_Open_Text.style.display='none'; Codehighlighter1_278_340_Closed_Image.style.display='inline'; Codehighlighter1_278_340_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_278_340_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_278_340_Closed_Text.style.display='none'; Codehighlighter1_278_340_Open_Image.style.display='inline'; Codehighlighter1_278_340_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_278_340_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_278_340_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;jdbcTemplateCallBack.querys(getJdbcTemplate());<br /><img id="Codehighlighter1_362_562_Open_Image" onclick="this.style.display='none'; Codehighlighter1_362_562_Open_Text.style.display='none'; Codehighlighter1_362_562_Closed_Image.style.display='inline'; Codehighlighter1_362_562_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_362_562_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_362_562_Closed_Text.style.display='none'; Codehighlighter1_362_562_Open_Image.style.display='inline'; Codehighlighter1_362_562_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_362_562_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_362_562_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">((e&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;IncorrectResultSizeDataAccessException)<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">((IncorrectResultSizeDataAccessException)e).getActualSize()</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">)<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">其他的异常正常抛出</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DaoException(e);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br />最后是调用实例（根据id查用户）：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_94_352_Open_Image" onclick="this.style.display='none'; Codehighlighter1_94_352_Open_Text.style.display='none'; Codehighlighter1_94_352_Closed_Image.style.display='inline'; Codehighlighter1_94_352_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_94_352_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_94_352_Closed_Text.style.display='none'; Codehighlighter1_94_352_Open_Image.style.display='inline'; Codehighlighter1_94_352_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SUser&nbsp;getUserByColunm(</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String&nbsp;columnName,&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Object&nbsp;value)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;DaoException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_94_352_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_94_352_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_153_347_Open_Image" onclick="this.style.display='none'; Codehighlighter1_153_347_Open_Text.style.display='none'; Codehighlighter1_153_347_Closed_Image.style.display='inline'; Codehighlighter1_153_347_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_153_347_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_153_347_Closed_Text.style.display='none'; Codehighlighter1_153_347_Open_Image.style.display='inline'; Codehighlighter1_153_347_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;queryNullAble(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JdbcTemplateCallBack</span><span style="color: #000000">&lt;</span><span style="color: #000000">SUser</span><span style="color: #000000">&gt;</span><span style="color: #000000">()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_153_347_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_153_347_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_205_343_Open_Image" onclick="this.style.display='none'; Codehighlighter1_205_343_Open_Text.style.display='none'; Codehighlighter1_205_343_Closed_Image.style.display='inline'; Codehighlighter1_205_343_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_205_343_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_205_343_Closed_Text.style.display='none'; Codehighlighter1_205_343_Open_Image.style.display='inline'; Codehighlighter1_205_343_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SUser&nbsp;querys(JdbcTemplate&nbsp;jdbcTemplate)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_205_343_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_205_343_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;jdbcTemplate.queryForObject(</span><span style="color: #000000">"</span><span style="color: #000000">select&nbsp;*&nbsp;&nbsp;from&nbsp;suser&nbsp;where&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">columnName</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">=?</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BeanPropertyRowMapper(SUser.</span><span style="color: #0000ff">class</span><span style="color: #000000">),value);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br />具体的工程可以在<a href="http://www.blogjava.net/freeman1984/archive/2011/10/24/361899.html">http://www.blogjava.net/freeman1984/archive/2011/10/24/361899.html</a>里面下载。<br /><br /> <img src ="http://www.blogjava.net/freeman1984/aggbug/361976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2011-10-25 10:59 <a href="http://www.blogjava.net/freeman1984/archive/2011/10/25/361976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xsocket源码解读</title><link>http://www.blogjava.net/freeman1984/archive/2011/10/19/361593.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Wed, 19 Oct 2011 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2011/10/19/361593.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/361593.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2011/10/19/361593.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/361593.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/361593.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: xsocket源码解读&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2011/10/19/361593.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/361593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2011-10-19 17:34 <a href="http://www.blogjava.net/freeman1984/archive/2011/10/19/361593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android Tabhost部件</title><link>http://www.blogjava.net/freeman1984/archive/2009/11/18/302803.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Wed, 18 Nov 2009 07:44:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2009/11/18/302803.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/302803.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2009/11/18/302803.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/302803.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/302803.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 结合源代码和实例来说明TabHost的用法。 实例代码下载。&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2009/11/18/302803.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/302803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2009-11-18 15:44 <a href="http://www.blogjava.net/freeman1984/archive/2009/11/18/302803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>