ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产在线一二,欧美高清视频一区,精品中文字幕在线2019http://www.aygfsteel.com/freeman1984/archive/2013/01/06/393854.html疯狂疯狂Sun, 06 Jan 2013 03:09:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2013/01/06/393854.htmlhttp://www.aygfsteel.com/freeman1984/comments/393854.htmlhttp://www.aygfsteel.com/freeman1984/archive/2013/01/06/393854.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/393854.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/393854.htmlpublic int update(String sql, ...  é˜…读全文

疯狂 2013-01-06 11:09 发表评论
]]>
关于tomcatå’ŒsessionCookieNameå’ŒSESSION_PARAMETER_NAME以及disableURLRewriting参数原理和ä‹Éç”?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/freeman1984/archive/2012/12/24/393402.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/393402.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2012/12/24/393402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/393402.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/393402.html</trackback:ping><description><![CDATA[     摘要: 关于tomcatå’ŒsessionCookieNameå’ŒSESSION_PARAMETER_NAME以及disableURLRewriting参数原理和ä‹Éç”?nbsp; <a href='http://www.aygfsteel.com/freeman1984/archive/2012/12/24/393402.html'>阅读全文</a><img src ="http://www.aygfsteel.com/freeman1984/aggbug/393402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">疯狂</a> 2012-12-24 15:16 <a href="http://www.aygfsteel.com/freeman1984/archive/2012/12/24/393402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernateåQŒspring½Ž¡ç†äº‹åŠ¡ä¸?transactionåQŒJDBC connectionåQŒHibernate Sessionçš„ä‹É用研½I?åQˆä¸€åQ?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/freeman1984/archive/2011/11/18/363984.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/363984.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2011/11/18/363984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/363984.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/363984.html</trackback:ping><description><![CDATA[如果单独使用hibernate可参考上一½‹‡æ–‡ç«?a href="http://www.aygfsteel.com/freeman1984/archive/2011/08/04/355808.html">http://www.aygfsteel.com/freeman1984/archive/2011/08/04/355808.html</a><br /><br /><strong>首先hibernateçš„Connection release mode有以下几¿Uï¼š<br /></strong>1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jtaä¸?åQ?span style="color: red"><strong>on_close æ˜?.1ä¹‹å‰é—ç•™çš„ï¼ˆä¹Ÿè®¸æ˜¯äØ“spring留的-_-åQ‰ï¼Œä¹Ÿå°±æ˜?.1之前默认是on_close åQŒä½†3.1之后默认如果单独使用hibernate是after_transactionåQ?/strong></span>如果有第三方事务½Ž¡ç†åQŒå°±ç”¨ç¬¬ä¸‰æ–¹æä¾›çš„默认å€û|¼Œspringž®±æ˜¯é»˜è®¤ä½¿ç”¨äº†on_closeã€?br /><strong>在spring½Ž¡ç†äº‹åŠ¡ä¸­æˆ‘ä»¬çœ‹çœ‹ç³»¾lŸå¯åŠ¨åŽé»˜è®¤ä½¿ç”¨çš„é…¾|®ï¼š<br /></strong>1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事务½{–ç•¥<br />2åQŒhibernate内部 Automatic session close at end of transaction: disabled å› äØ“å·²ç»äº¤ç»™springäº?br />3   Connection release mode: auto 默认åQŒä¹Ÿž®±æ˜¯æ²¡æœ‰é…ç½®hibernate.connection.release_mode的时候,但是˜q™é‡Œæœ‰åœ°æ–šwœ€è¦æ³¨æ„ï¼šä¹Ÿå°±æ˜¯å‰é¢æåˆ°çš„使用½W¬ä¸‰æ–¹ç­–略时的问题:看一下代码: <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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">String releaseModeName </span><span style="color: #000000">=</span><span style="color: #000000"> PropertiesHelper.getString( Environment.RELEASE_CONNECTIONS, properties, </span><span style="color: #000000">"</span><span style="color: #000000">auto</span><span style="color: #000000">"</span><span style="color: #000000"> );<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />        log.info( </span><span style="color: #000000">"</span><span style="color: #000000">Connection release mode: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> releaseModeName );<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />        ConnectionReleaseMode 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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif">        </span><span style="color: #0000ff">if</span><span style="color: #000000"> ( </span><span style="color: #000000">"</span><span style="color: #000000">auto</span><span style="color: #000000">"</span><span style="color: #000000">.equals(releaseModeName) ) </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_246_311_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            </span><span style="color: red">releaseMode </span><span style="color: red">=</span><span style="color: red"> transactionFactory.getDefaultReleaseMode();        }</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif">        </span><span style="color: #0000ff">else</span><span style="color: #000000"> </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_320_663_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            releaseMode </span><span style="color: #000000">=</span><span style="color: #000000"> ConnectionReleaseMode.parse( releaseModeName );<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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">            </span><span style="color: #0000ff">if</span><span style="color: #000000"> ( releaseMode </span><span style="color: #000000">==</span><span style="color: #000000"> ConnectionReleaseMode.AFTER_STATEMENT </span><span style="color: #000000">&&</span><span style="color: #000000"> </span><span style="color: #000000">!</span><span style="color: #000000">connections.supportsAggressiveRelease() ) </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_494_659_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                log.warn( </span><span style="color: #000000">"</span><span style="color: #000000">Overriding release mode as connection provider does not support 'after_statement'</span><span style="color: #000000">"</span><span style="color: #000000"> );<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                releaseMode </span><span style="color: #000000">=</span><span style="color: #000000"> ConnectionReleaseMode.AFTER_TRANSACTION;<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />            }</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />        }</span></span></div>其中¾U¢è‰²éƒ¨åˆ†ž®±æ˜¯è°ƒç”¨äº†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.aygfsteel.com/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.aygfsteel.com/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">/** */</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.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />     * Sets connection release mode "on_close" as default.<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />     * <p>This was the case for Hibernate 3.0; Hibernate 3.1 changed<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />     * it to "auto" (i.e. "after_statement" or "after_transaction").<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />     * However, for Spring's resource management (in particular for<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />     * HibernateTransactionManager), "on_close" is the better default.<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />     </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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> ConnectionReleaseMode getDefaultReleaseMode() </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_384_428_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> ConnectionReleaseMode.ON_CLOSE;<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />    }</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span></div><br />而springä¸ÞZ»€ä¹ˆè¦ä½¿ç”¨on_close åQŒè€Œä¸æ˜¯ç”¨after_transaction ,我们æƒÏxƒ³opensessioninview的原理也许能明白åQŒsession在view成还要ä‹É用,所以不能再transactio<span>n使用完后关闭JDBC connectionåQŒå¿…™å»è¦åœ¨session之后åQŒæ‰€ä»¥è¦ä½¿ç”¨on<strong>_close</strong></span><strong><span>åQ?/span><span>也就是在on session(flush.autoåQŒæˆ–者f(xi¨¦)lush.Eagerly) 关闭åQ‰ã€‚è¿™¿Uæƒ…况hibernate内部˜q˜ä¼šåœ¨spring关闭JDBC connection后提½C?费解åQŒå› ä¸ºafter transaction之后session没有关闭åQŒä½†æ˜?nbsp;Connection release mode配置的是on_close,session的关闭和 Connection 的关闭都由spring来管理,hibernatež®×ƒ¸çŸ¥é“äº?åQŒæ‰€ä»¥hibernate有好的提½Cºå¦‚ä¸?其实sessionåQŒå·²¾lå…³é—­ã€‚当焉™šç€session的关闭jdbc链接释放回连接池)åQ?/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!åQ?br /><br />。当然我们也可以使用after_transaction åQŒè¿™¿Uæƒ…况对使用¾~–程式事务非帔R€‚用ã€?br />     <img src ="http://www.aygfsteel.com/freeman1984/aggbug/363984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">疯狂</a> 2011-11-18 11:25 <a href="http://www.aygfsteel.com/freeman1984/archive/2011/11/18/363984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring JdbcTemplateçš„queryForObject为空˜q”回异常情况的一个处ç?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/freeman1984/archive/2011/10/25/361976.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/361976.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2011/10/25/361976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/361976.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/361976.html</trackback:ping><description><![CDATA[看springçš„queryForObject(如果查询¾l“果条数ä¸?或者大äº?)都会˜q”回异常åQŒæˆ‘们希望没查到˜q”回nullåQŒè¿™æ ähˆ‘们就可以¾l™ç”¨æˆäh½Cºæ²¡æœ‰æ‰¾åˆŽÍ¼Œè¦ä¸æˆ‘们的每个queryforObjectåQŒqueryForInt...½{‰ç­‰æ–ÒŽ(gu¨©)³•都需要手动拦截这个异常来判断为空åQŒæ‰èƒ½åšå‡ºåˆ¤æ–­ã€?br />先看下spring的这ŒD‰|ºç ï¼š <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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> T queryForObject(String sql, Object[] args, RowMapper</span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> rowMapper) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> DataAccessException </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_106_252_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  List</span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> results </span><span style="color: #000000">=</span><span style="color: #000000"> query(sql, args, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapperResultSetExtractor</span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000">(rowMapper, </span><span style="color: #000000">1</span><span style="color: #000000">));<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  </span><span style="color: #0000ff">return</span><span style="color: #000000"> DataAccessUtils.requiredSingleResult(results);<br /><img align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> T requiredSingleResult(Collection</span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> results) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> IncorrectResultSizeDataAccessException </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_364_686_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  </span><span style="color: #0000ff">int</span><span style="color: #000000"> size </span><span style="color: #000000">=</span><span style="color: #000000"> (results </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">?</span><span style="color: #000000"> results.size() : </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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">  </span><span style="color: #0000ff">if</span><span style="color: #000000"> (size </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">) </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.aygfsteel.com/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˜q”回异常</span><span style="color: #008000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #000000">   </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> 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.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" /></span><span style="color: #000000">  }</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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">  </span><span style="color: #0000ff">if</span><span style="color: #000000"> (results.size() </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">) </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_572_647_Open_Text"><span style="color: #000000">{有多条记录返回异å¸?br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> IncorrectResultSizeDataAccessException(</span><span style="color: #000000">1</span><span style="color: #000000">, size);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  </span><span style="color: #0000ff">return</span><span style="color: #000000"> results.iterator().next();<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" /> }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div><br /><br />下面是我的一个方法,其他的方法请大家补充åQ?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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">interface</span><span style="color: #000000"> JdbcTemplateCallBack</span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_41_89_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000">  T querys(JdbcTemplate jdbcTemplate);<br /><img align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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">/** */</span><span id="Codehighlighter1_0_174_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * å¯ä»¥ç”¨äºŽå¤„理查询queryfor ä¸ºç©ºæˆ–者多条的时候返回异常的情况åQŒçŽ°åœ¨è¿”å›žnull,主要是拦截IncorrectResultSizeDataAccessException异常,以及子类<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * </span><span style="color: #808080">@param</span><span style="color: #008000"> jdbcTemplateCallBack<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * </span><span style="color: #808080">@return</span><span style="color: #008000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * </span><span style="color: #808080">@throws</span><span style="color: #008000"> DaoException<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />     </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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> T queryNullAble(JdbcTemplateCallBack</span><span style="color: #000000"><</span><span style="color: #000000">T</span><span style="color: #000000">></span><span style="color: #000000"> jdbcTemplateCallBack) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> DaoException </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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">        </span><span style="color: #0000ff">try</span><span style="color: #000000"> </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_278_340_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> 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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (Exception e) </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_362_562_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                </span><span style="color: #0000ff">if</span><span style="color: #000000">((e </span><span style="color: #0000ff">instanceof</span><span style="color: #000000"> IncorrectResultSizeDataAccessException)<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                        </span><span style="color: #000000">&&</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.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />            </span><span style="color: #008000">//</span><span style="color: #008000">其他的异常正常抛å‡?/span><span style="color: #008000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #000000">            </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> DaoException(e);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />        }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />    }</span></span></div><br />最后是调用实例åQˆæ ¹æ®idæŸ¥ç”¨æˆøP¼‰åQ?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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000"> SUser getUserByColunm(</span><span style="color: #0000ff">final</span><span style="color: #000000"> String columnName, </span><span style="color: #0000ff">final</span><span style="color: #000000"> Object value) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> DaoException </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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">        </span><span style="color: #0000ff">return</span><span style="color: #000000"> queryNullAble(</span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplateCallBack</span><span style="color: #000000"><</span><span style="color: #000000">SUser</span><span style="color: #000000">></span><span style="color: #000000">() </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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">            </span><span style="color: #0000ff">public</span><span style="color: #000000"> SUser querys(JdbcTemplate jdbcTemplate) </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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_205_343_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                </span><span style="color: #0000ff">return</span><span style="color: #000000"> jdbcTemplate.queryForObject(</span><span style="color: #000000">"</span><span style="color: #000000">select *  from suser where </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">, </span><span style="color: #0000ff">new</span><span style="color: #000000"> BeanPropertyRowMapper(SUser.</span><span style="color: #0000ff">class</span><span style="color: #000000">),value);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />            }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />        }</span></span><span style="color: #000000">);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />    }</span></span></div><br />具体的工½E‹å¯ä»¥åœ¨<a href="http://www.aygfsteel.com/freeman1984/archive/2011/10/24/361899.html">http://www.aygfsteel.com/freeman1984/archive/2011/10/24/361899.html</a>里面下蝲ã€?br /><br /> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/361976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">疯狂</a> 2011-10-25 10:59 <a href="http://www.aygfsteel.com/freeman1984/archive/2011/10/25/361976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xsocket源码解读http://www.aygfsteel.com/freeman1984/archive/2011/10/19/361593.html疯狂疯狂Wed, 19 Oct 2011 09:34:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/19/361593.htmlhttp://www.aygfsteel.com/freeman1984/comments/361593.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/19/361593.html#Feedback2http://www.aygfsteel.com/freeman1984/comments/commentRss/361593.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/361593.html阅读全文

疯狂 2011-10-19 17:34 发表评论
]]>
android Tabhost部äšghttp://www.aygfsteel.com/freeman1984/archive/2009/11/18/302803.html疯狂疯狂Wed, 18 Nov 2009 07:44:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2009/11/18/302803.htmlhttp://www.aygfsteel.com/freeman1984/comments/302803.htmlhttp://www.aygfsteel.com/freeman1984/archive/2009/11/18/302803.html#Feedback9http://www.aygfsteel.com/freeman1984/comments/commentRss/302803.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/302803.html阅读全文

疯狂 2009-11-18 15:44 发表评论
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÁÖÎ÷ÏØ| µ±ÑôÊÐ| »¨Á«ÊÐ| ÕòÆ½ÏØ| μÄÏÊÐ| ÓôÄÏÏØ| µÂÇìÏØ| ¼¦Î÷ÊÐ| ¿¦Ê²ÊÐ| ÁúÃÅÏØ| ÒÁͨ| ͨºÓÏØ| ÖÙ°ÍÏØ| ʯÃÅÏØ| Ï°Ë®ÏØ| ¾Ą̊ÊÐ| ÁÖµéÏØ| ·¨¿âÏØ| Ê¯Ì¨ÏØ| вýÏØ| ²×ÖÝÊÐ| ÄϺÍÏØ| ɽµ¤ÏØ| °²ÔóÏØ| ¶«ÀöÇø| ÓÏÑô| ÌåÓý| ±¦·áÏØ| ÑôÔ­ÏØ| ¾ÃÖÎÏØ| Îå»ªÏØ| ¾Å½­ÏØ| Ôý´ïÏØ| ÁÙÒØÏØ| SHOW| °²¸£ÏØ| ÀèÆ½ÏØ| ÉÐÒåÏØ| ¶¨ÄÏÏØ| ÄÏÕÄÏØ| Èô¶û¸ÇÏØ|