??xml version="1.0" encoding="utf-8" standalone="yes"?>中文乱码免费一区二区三区下载,黄色在线网站,日韩精品视频在线http://www.aygfsteel.com/migrant/我们的失落…?/description>zh-cnWed, 07 May 2025 14:01:31 GMTWed, 07 May 2025 14:01:31 GMT60[转]java内部c?/title><link>http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html</link><dc:creator>J2EE学习W记</dc:creator><author>J2EE学习W记</author><pubDate>Wed, 30 Jun 2010 06:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/324878.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/324878.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/324878.html</trackback:ping><description><![CDATA[     摘要: 提vJava内部c(Inner ClassQ可能很多h不太熟悉Q实际上cM的概念在C++里也有,那就是嵌套类QNested ClassQ,关于q两者的区别与联p,在下文中会有Ҏ。内部类从表面上看,是在类中又定义了一个类Q下文会看到Q内部类可以在很多地方定义)Q而实际上q没有那么简单,乍看上去内部cM乎有些多余,它的用处对于初学者来说可能ƈ不是那么显著Q但是随着对它的深入了解,你会发现Java?..  <a href='http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html'>阅读全文</a><img src ="http://www.aygfsteel.com/migrant/aggbug/324878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习W记</a> 2010-06-30 14:26 <a href="http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]在JScript中运符"||"?&&"的特D特?/title><link>http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html</link><dc:creator>J2EE学习W记</dc:creator><author>J2EE学习W记</author><pubDate>Thu, 13 May 2010 07:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/320802.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/320802.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/320802.html</trackback:ping><description><![CDATA[<p>在JScript的众多运符里,提供了三个逻辑q算W?strong>&&</strong>?strong>||</strong>?strong>!</strong>Q噢?! 是高U语a都提供的<img border="0" src="http://www.cnblogs.com/Emoticons/emembarrassed.gif" width="19" height="19" alt="" />。按我们寚w辑q算的正常认识,逻辑q算的结果因该是ture或者false。但是JScript的逻辑q算却不完全是这么定义的Q这里只?q算WLq回<font color="#0000ff">true</font>|<font color="#0000ff">false</font>Q而||?amp;&q算比较的好玩?br /> <br />     JScript对于逻辑q算?font color="#0000ff">true</font>|<font color="#0000ff">false</font>是这么定义的Q?</p> <ul type="disc"> <li>所有对象都被认为是 true? <li>字符串当且仅当ؓI?""?')时才被认为是 false? <li><strong>null</strong> 和未定义的均被认为是 false? <li>数字当且仅当?0 时才?false?</li> </ul> <p>    可是逻辑q算W?strong>||</strong>?strong>&&</strong>虽然遵@上面的定义规则,但是它们q回的值却很有意思?br />     对于&&q算Q按照上面的规则Q表辑ּ if ( 'abc' && '123' && new Date() ) 是执行true分支Q可是这个表辑ּ如果写成Q?/p> <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"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> value </span><span style="color: #000000">=</span><span style="color: #000000"> 'abc' </span><span style="color: #000000">&&</span><span style="color: #000000"> '</span><span style="color: #000000">123</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"> Date();</span></div> <p> </p> <p>    l果value=Fri Jan 21 00:01:17 UTC+0800 2005Q原它从左到x,如果C最后一个表辑ּ也是为true的,p回那个表辑ּ?/p> <p>    对于||q算同理Q对于下面的表达式:</p> <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"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> value1 </span><span style="color: #000000">=</span><span style="color: #000000"> 'abc' </span><span style="color: #000000">||</span><span style="color: #000000"> '</span><span style="color: #000000">123</span><span style="color: #000000">' </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"> </span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000"> value2 </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"> '' </span><span style="color: #000000">||</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000"> </span><span style="color: #000000">||</span><span style="color: #000000"> 'ok';</span></div> <p> </p> <p>    l果value1='abc'Qvalue2='ok'。这是因为||q算会有"短\"Ҏ,他也是从左向x,只不q它是一但发现有为true的|q卌回该表达式?br />     q样的特性可以帮l我们写出精的代码,可是同时也带来代码不便于阅读l护的问题?br />     ׃我手头暂时没有NS和moz什么的览器,不知道标准JavaScript是否也是q样支持的?如果您方便的话,请告如我q行后的l果</p> <img src ="http://www.aygfsteel.com/migrant/aggbug/320802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习W记</a> 2010-05-13 15:11 <a href="http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]JavaScript判断变量cdQtypeof函数与constructor属性异?/title><link>http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html</link><dc:creator>J2EE学习W记</dc:creator><author>J2EE学习W记</author><pubDate>Wed, 14 Apr 2010 06:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/318262.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/318262.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/318262.html</trackback:ping><description><![CDATA[<p><span style="font-family: 新宋?><span style="font-size: 10pt">有时你可能需要对变量q行cd查,或者判断变量是否已定义。有两种Ҏ可以使用Q?strong>typeof</strong>函数?strong>constructor</strong>属性?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">typeof函数的用法可能不用我多说Q大安知道怎么用。而constructor属性大家可能就陌生炏V在《精通JavaScript》这本书中有提到construct的用法,但我用自q几个览器(IE7.0 / Firefox1.9 / Opera9.50Q测试的l果却和书上说的不一栗但是仍然是有办法通过constructor属性来查变量类型的?br /> q里先补充一下,Z么明明有typeof函数可以很方便地用来类型,q要用constructor呢?<br /> 因ؓtypeof会把所有的数组cd以及用户自定义类型判断ؓobjectQ从而无法知道更切的信息。而constructor却可以解册个问题?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">okQ明白了我们Z么要用constructorQ现在让我带大家一步步认识一下typeof和constructor用法之间的差异吧?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">首先我们q行一下下面这D代码:<br /> </p> <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"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> i;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(i));<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(i.constructor);</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">q?行代码告诉你什么情况下可以用constructor?br /> 你可以看到第2行返回了字符?undefined'Q而第三行则发生了错误Q原因是i变量q没有类型定义,自然也没有constructor的存在?<br /> 从这一点上看,typeof可以查到变量是否有定义,?strong>construct只能查已定义变量的类?/strong>?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">再运行一下下面这D代码:<br /> </p> <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"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(i));<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(i.constructor);<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(i.constructor));</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">你会看到W?行返回了字符?number’Q第3行返回了一串类似函数定义的代码字符Ԍq就是跟《精通JavaScript》一书中介绍的不一L地方Q?br /> 我们再用typeof查一下constructor到底是个什么样cd的属性,W?行返回结?function'Q也是_实际上constructor是一个函敎ͼ更确切地说是一个构造函数。这时你可以知道,Z么constructor可以查出各种cd了?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">有经验的E序员看到这里应该知道要怎么利用constructor来检查变量类型了。方法有多种Q这里提供一U比较容易理解的Ҏ?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">其实x很简单,是<strong>把construcor转化为字W串Q通过L匚w字符Ԍfunction名)来确定是否指定类?/strong>。如下例子:<br /> </p> <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"><img id="Codehighlighter1_16_17_Open_Image" onclick="this.style.display='none'; Codehighlighter1_16_17_Open_Text.style.display='none'; Codehighlighter1_16_17_Closed_Image.style.display='inline'; Codehighlighter1_16_17_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_16_17_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_16_17_Closed_Text.style.display='none'; Codehighlighter1_16_17_Open_Image.style.display='inline'; Codehighlighter1_16_17_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><span style="color: #0000ff">function</span><span style="color: #000000"> user() </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_16_17_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_16_17_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> user();<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert((i.constructor</span><span style="color: #000000">+</span><span style="color: #000000">'').match(</span><span style="color: #000000">/</span><span style="color: #000000">user</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">null</span><span style="color: #000000">);</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">q仅仅是个简单的例子。如果返回true则变量i不是usercdQ返回false则变量是usercd?br /> </span></span><span style="font-family: 新宋?><span style="font-size: 10pt">当然Q这h是不够_的,比如其实他是一个myusercd的时候,同样会被认ؓ是usercR所以你需要书写更_的正则表辑ּ去进行匹配?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">可以q样单改q你的正则表辑ּQ?br /> </p> <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"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">/</span><span style="color: #0000ff">function</span><span style="color: #000000"> user\(\)</span><span style="color: #000000">/</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">替换上面代码D中?user/。当Ӟ如果你的构造函数原型是user(a)Q那么应该这样书写你的正则表辑ּQ?br /> </p> <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"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">/</span><span style="color: #0000ff">function</span><span style="color: #000000"> user\(a\)</span><span style="color: #000000">/</span></div> <p><br /> <br /> </span></span><span style="font-family: 新宋?><span style="font-size: 10pt">到这里你应该知道怎样使用constructorcdL查变量类型了吧?</span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">okQ最后再提个醒,如果你要用基于constructor的方法去查一些基本类型,?br /> Object / Array / Function / String / Number / Boolean<br /> 在你的正则表辑ּ中,一定要这些单词的<strong>首字母大?/strong>Q!而如果该cd是自定义cdQ则Ҏ你定义的时候标识符的写法确定?/span></span></p><img src ="http://www.aygfsteel.com/migrant/aggbug/318262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习W记</a> 2010-04-14 14:30 <a href="http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Spring 2.5中JdbcTemplatecqueryҎ的三U回调接?/title><link>http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html</link><dc:creator>J2EE学习W记</dc:creator><author>J2EE学习W记</author><pubDate>Wed, 10 Mar 2010 02:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/315022.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/315022.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/315022.html</trackback:ping><description><![CDATA[<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"><img id="Codehighlighter1_0_279_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_279_Open_Text.style.display='none'; Codehighlighter1_0_279_Closed_Image.style.display='inline'; Codehighlighter1_0_279_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_0_279_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_0_279_Closed_Text.style.display='none'; Codehighlighter1_0_279_Open_Image.style.display='inline'; Codehighlighter1_0_279_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><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_279_Closed_Text">/** */</span><span id="Codehighlighter1_0_279_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="" />使用三种Callback接口作ؓ参数的queryҎ的返回g?   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />以ResultSetExtractor作ؓҎ参数的queryҎq回Object型结果,要用查询结果,我们需要对其进行强制{型;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />以RowMapper接口作ؓҎ参数的queryҎ直接q回List型的l果Q?nbsp;  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />以RowCallbackHandler作ؓҎ参数的queryҎQ返回gؓvoidQ?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />RowCallbackHandler和RowMapper才是我们最常用的选择   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /> * </span><span style="color: #808080">@author</span><span style="color: #008000"> Administrator  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /> *   <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_307_3536_Open_Image" onclick="this.style.display='none'; Codehighlighter1_307_3536_Open_Text.style.display='none'; Codehighlighter1_307_3536_Closed_Image.style.display='inline'; Codehighlighter1_307_3536_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_307_3536_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_307_3536_Closed_Text.style.display='none'; Codehighlighter1_307_3536_Open_Image.style.display='inline'; Codehighlighter1_307_3536_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> SpringTest </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_307_3536_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_307_3536_Open_Text"><span style="color: #000000">{   <br /> <img id="Codehighlighter1_313_467_Open_Image" onclick="this.style.display='none'; Codehighlighter1_313_467_Open_Text.style.display='none'; Codehighlighter1_313_467_Closed_Image.style.display='inline'; Codehighlighter1_313_467_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_313_467_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_313_467_Closed_Text.style.display='none'; Codehighlighter1_313_467_Open_Image.style.display='inline'; Codehighlighter1_313_467_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </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_313_467_Closed_Text">/** */</span><span id="Codehighlighter1_313_467_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="" />  * q回l果是List里装Map,使用参数,使用回调 RowMapperResultSetExtractor用于处理单行记录Q?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  * 它内部持有一个RowMapper实例的引用,当处理结果集的时候, 会将单行数据的处理委z其所持有的RowMapper实例Q而其余工作它负责  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_521_1422_Open_Image" onclick="this.style.display='none'; Codehighlighter1_521_1422_Open_Text.style.display='none'; Codehighlighter1_521_1422_Closed_Image.style.display='inline'; Codehighlighter1_521_1422_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_521_1422_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_521_1422_Closed_Text.style.display='none'; Codehighlighter1_521_1422_Open_Image.style.display='inline'; Codehighlighter1_521_1422_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> getListRowMapperResultSetExtractor() </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_521_1422_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_521_1422_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileSystemXmlApplicationContext(   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">src/database_config.xml</span><span style="color: #000000">"</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"> E:\demoworkspace\spring 为工E主目录   </span><span style="color: #008000"><br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #000000">  JdbcTemplate jt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplate((DataSource) context   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    .getBean(</span><span style="color: #000000">"</span><span style="color: #000000">oracleDataSourceTest</span><span style="color: #000000">"</span><span style="color: #000000">)); </span><span style="color: #008000">//</span><span style="color: #008000"> 试用的Ҏ   </span><span style="color: #008000"><br /> <img id="Codehighlighter1_816_821_Open_Image" onclick="this.style.display='none'; Codehighlighter1_816_821_Open_Text.style.display='none'; Codehighlighter1_816_821_Closed_Image.style.display='inline'; Codehighlighter1_816_821_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_816_821_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_816_821_Closed_Text.style.display='none'; Codehighlighter1_816_821_Open_Image.style.display='inline'; Codehighlighter1_816_821_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /></span><span style="color: #000000">  Object[] arg </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Object[] </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_816_821_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_816_821_Open_Text"><span style="color: #000000">{ </span><span style="color: #000000">10</span><span style="color: #000000"> }</span></span><span style="color: #000000">;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  List list </span><span style="color: #000000">=</span><span style="color: #000000"> (ArrayList) jt.query(</span><span style="color: #000000">"</span><span style="color: #000000">select * from region where rownum<?</span><span style="color: #000000">"</span><span style="color: #000000">,   <br /> <img id="Codehighlighter1_961_1267_Open_Image" onclick="this.style.display='none'; Codehighlighter1_961_1267_Open_Text.style.display='none'; Codehighlighter1_961_1267_Closed_Image.style.display='inline'; Codehighlighter1_961_1267_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_961_1267_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_961_1267_Closed_Text.style.display='none'; Codehighlighter1_961_1267_Open_Image.style.display='inline'; Codehighlighter1_961_1267_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    arg, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapperResultSetExtractor(</span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapper() </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_961_1267_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_961_1267_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"> Object mapRow(ResultSet rs, </span><span style="color: #0000ff">int</span><span style="color: #000000"> index)   <br /> <img id="Codehighlighter1_1047_1258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1047_1258_Open_Text.style.display='none'; Codehighlighter1_1047_1258_Closed_Image.style.display='inline'; Codehighlighter1_1047_1258_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1047_1258_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1047_1258_Closed_Text.style.display='none'; Codehighlighter1_1047_1258_Open_Image.style.display='inline'; Codehighlighter1_1047_1258_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />       </span><span style="color: #0000ff">throws</span><span style="color: #000000"> SQLException </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_1047_1258_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1047_1258_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      Map u </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap(); </span><span style="color: #008000">//</span><span style="color: #008000">可以是自qJavaBean值对?单Java对象POJO)   </span><span style="color: #008000"><br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #000000">      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</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"> u;   <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/InBlock.gif" alt="" />  Iterator it </span><span style="color: #000000">=</span><span style="color: #000000"> list.iterator();   <br /> <img id="Codehighlighter1_1334_1416_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1334_1416_Open_Text.style.display='none'; Codehighlighter1_1334_1416_Closed_Image.style.display='inline'; Codehighlighter1_1334_1416_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1334_1416_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1334_1416_Closed_Text.style.display='none'; Codehighlighter1_1334_1416_Open_Image.style.display='inline'; Codehighlighter1_1334_1416_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  </span><span style="color: #0000ff">while</span><span style="color: #000000"> (it.hasNext()) </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_1334_1416_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1334_1416_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   Map map </span><span style="color: #000000">=</span><span style="color: #000000"> (Map) it.next();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   System.out.println(map.toString());   <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/InBlock.gif" alt="" />  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  <br /> <img id="Codehighlighter1_1434_1657_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1434_1657_Open_Text.style.display='none'; Codehighlighter1_1434_1657_Closed_Image.style.display='inline'; Codehighlighter1_1434_1657_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1434_1657_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1434_1657_Closed_Text.style.display='none'; Codehighlighter1_1434_1657_Open_Image.style.display='inline'; Codehighlighter1_1434_1657_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </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_1434_1657_Closed_Text">/** */</span><span id="Codehighlighter1_1434_1657_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">q回l果是List里装Map,不用参?使用回调  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  使用RowMapper比直接用ResultSetExtractor要方便的多,只负责处理单行结果就行,现在Q我们只需要将单行的结果组装后q回pQ?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  剩下的工作,全部都是JdbcTemplate内部的事情了?nbsp;实际上,JdbcTemplae内部会用一个ResultSetExtractor实现cL做其余的工作Q?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  毕竟Q该做的工作q得有h做不是?Q?nbsp;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_1693_2420_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1693_2420_Open_Text.style.display='none'; Codehighlighter1_1693_2420_Closed_Image.style.display='inline'; Codehighlighter1_1693_2420_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1693_2420_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1693_2420_Closed_Text.style.display='none'; Codehighlighter1_1693_2420_Open_Image.style.display='inline'; Codehighlighter1_1693_2420_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> getListRowMapper() </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_1693_2420_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1693_2420_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileSystemXmlApplicationContext(   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">src/database_config.xml</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  JdbcTemplate jt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplate((DataSource) context   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    .getBean(</span><span style="color: #000000">"</span><span style="color: #000000">oracleDataSourceTest</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  List list </span><span style="color: #000000">=</span><span style="color: #000000"> jt.query(   <br /> <img id="Codehighlighter1_1994_2266_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1994_2266_Open_Text.style.display='none'; Codehighlighter1_1994_2266_Closed_Image.style.display='inline'; Codehighlighter1_1994_2266_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1994_2266_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1994_2266_Closed_Text.style.display='none'; Codehighlighter1_1994_2266_Open_Image.style.display='inline'; Codehighlighter1_1994_2266_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">select * from region where rownum<10</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapper() </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_1994_2266_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1994_2266_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"> Object mapRow(ResultSet rs, </span><span style="color: #0000ff">int</span><span style="color: #000000"> index)   <br /> <img id="Codehighlighter1_2080_2257_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2080_2257_Open_Text.style.display='none'; Codehighlighter1_2080_2257_Closed_Image.style.display='inline'; Codehighlighter1_2080_2257_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2080_2257_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2080_2257_Closed_Text.style.display='none'; Codehighlighter1_2080_2257_Open_Image.style.display='inline'; Codehighlighter1_2080_2257_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />       </span><span style="color: #0000ff">throws</span><span style="color: #000000"> SQLException </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_2080_2257_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_2080_2257_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      Map u </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</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"> u;   <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/InBlock.gif" alt="" />  Iterator it </span><span style="color: #000000">=</span><span style="color: #000000"> list.iterator();   <br /> <img id="Codehighlighter1_2332_2414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2332_2414_Open_Text.style.display='none'; Codehighlighter1_2332_2414_Closed_Image.style.display='inline'; Codehighlighter1_2332_2414_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2332_2414_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2332_2414_Closed_Text.style.display='none'; Codehighlighter1_2332_2414_Open_Image.style.display='inline'; Codehighlighter1_2332_2414_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  </span><span style="color: #0000ff">while</span><span style="color: #000000"> (it.hasNext()) </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_2332_2414_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_2332_2414_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   Map map </span><span style="color: #000000">=</span><span style="color: #000000"> (Map) it.next();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   System.out.println(map.toString());   <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/InBlock.gif" alt="" />  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /> </span><span style="color: #008000">//</span><span style="color: #008000"> q回记录?nbsp;  </span><span style="color: #008000"><br /> <img id="Codehighlighter1_2442_2654_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2442_2654_Open_Text.style.display='none'; Codehighlighter1_2442_2654_Closed_Image.style.display='inline'; Codehighlighter1_2442_2654_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2442_2654_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2442_2654_Closed_Text.style.display='none'; Codehighlighter1_2442_2654_Open_Image.style.display='inline'; Codehighlighter1_2442_2654_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /></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_2442_2654_Closed_Text">/** */</span><span id="Codehighlighter1_2442_2654_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="" />  RowCallbackHandler虽然与RowMapper同是处理单行数据Q不q,除了要处理单行结果,它还得负责最l结果的l装和获取工作,  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  在这里我们是使用当前上下文声明的List取得最l查询结果, 不过Q我们也可以单独声明一个RowCallbackHandler实现c,  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  在其中声明相应的集合c,q样Q我们可以通过该RowCallbackHandler实现cd得最l查询结?nbsp;  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_2699_3535_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2699_3535_Open_Text.style.display='none'; Codehighlighter1_2699_3535_Closed_Image.style.display='inline'; Codehighlighter1_2699_3535_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2699_3535_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2699_3535_Closed_Text.style.display='none'; Codehighlighter1_2699_3535_Open_Image.style.display='inline'; Codehighlighter1_2699_3535_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> getListRowCallbackHandler() </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_2699_3535_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_2699_3535_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileSystemXmlApplicationContext(   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">src/database_config.xml</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  JdbcTemplate jt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplate((DataSource) context   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    .getBean(</span><span style="color: #000000">"</span><span style="color: #000000">oracleDataSourceTest</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  String sql </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">select * from region  where region_id>?</span><span style="color: #000000">"</span><span style="color: #000000">;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  </span><span style="color: #0000ff">final</span><span style="color: #000000"> List</span><span style="color: #000000"><</span><span style="color: #000000">Map</span><span style="color: #000000">></span><span style="color: #000000"> list</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> ArrayList</span><span style="color: #000000"><</span><span style="color: #000000">Map</span><span style="color: #000000">></span><span style="color: #000000">(); </span><span style="color: #008000">//</span><span style="color: #008000">一定要用final定义   </span><span style="color: #008000"><br /> <img id="Codehighlighter1_3072_3076_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3072_3076_Open_Text.style.display='none'; Codehighlighter1_3072_3076_Closed_Image.style.display='inline'; Codehighlighter1_3072_3076_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3072_3076_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3072_3076_Closed_Text.style.display='none'; Codehighlighter1_3072_3076_Open_Image.style.display='inline'; Codehighlighter1_3072_3076_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /></span><span style="color: #000000">  Object[] params </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Object[] </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_3072_3076_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3072_3076_Open_Text"><span style="color: #000000">{ </span><span style="color: #000000">0</span><span style="color: #000000"> }</span></span><span style="color: #000000">;   <br /> <img id="Codehighlighter1_3131_3375_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3131_3375_Open_Text.style.display='none'; Codehighlighter1_3131_3375_Closed_Image.style.display='inline'; Codehighlighter1_3131_3375_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3131_3375_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3131_3375_Closed_Text.style.display='none'; Codehighlighter1_3131_3375_Open_Image.style.display='inline'; Codehighlighter1_3131_3375_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  jt.query(sql, params, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowCallbackHandler() </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_3131_3375_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3131_3375_Open_Text"><span style="color: #000000">{   <br /> <img id="Codehighlighter1_3196_3368_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3196_3368_Open_Text.style.display='none'; Codehighlighter1_3196_3368_Closed_Image.style.display='inline'; Codehighlighter1_3196_3368_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3196_3368_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3196_3368_Closed_Text.style.display='none'; Codehighlighter1_3196_3368_Open_Image.style.display='inline'; Codehighlighter1_3196_3368_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />   </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> processRow(ResultSet rs) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> SQLException </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_3196_3368_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3196_3368_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    Map u </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();     <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    list.add(u);   <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/InBlock.gif" alt="" />     <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  Iterator it </span><span style="color: #000000">=</span><span style="color: #000000"> list.iterator();   <br /> <img id="Codehighlighter1_3447_3529_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3447_3529_Open_Text.style.display='none'; Codehighlighter1_3447_3529_Closed_Image.style.display='inline'; Codehighlighter1_3447_3529_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3447_3529_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3447_3529_Closed_Text.style.display='none'; Codehighlighter1_3447_3529_Open_Image.style.display='inline'; Codehighlighter1_3447_3529_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  </span><span style="color: #0000ff">while</span><span style="color: #000000"> (it.hasNext()) </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_3447_3529_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3447_3529_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   Map map </span><span style="color: #000000">=</span><span style="color: #000000"> (Map) it.next();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   System.out.println(map.toString());   <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></div> </span> <img src ="http://www.aygfsteel.com/migrant/aggbug/315022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习W记</a> 2010-03-10 10:27 <a href="http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]spring jdbcTemplate使用http://www.aygfsteel.com/migrant/archive/2010/03/09/314985.htmlJ2EE学习W记J2EE学习W记Tue, 09 Mar 2010 11:10:00 GMThttp://www.aygfsteel.com/migrant/archive/2010/03/09/314985.htmlhttp://www.aygfsteel.com/migrant/comments/314985.htmlhttp://www.aygfsteel.com/migrant/archive/2010/03/09/314985.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/314985.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/314985.html阅读全文

J2EE学习W记 2010-03-09 19:10 发表评论
]]>
[转]JAVA语言的反?Reflection)和内?Introspector)http://www.aygfsteel.com/migrant/archive/2010/02/04/311942.htmlJ2EE学习W记J2EE学习W记Thu, 04 Feb 2010 05:42:00 GMThttp://www.aygfsteel.com/migrant/archive/2010/02/04/311942.htmlhttp://www.aygfsteel.com/migrant/comments/311942.htmlhttp://www.aygfsteel.com/migrant/archive/2010/02/04/311942.html#Feedback1http://www.aygfsteel.com/migrant/comments/commentRss/311942.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/311942.html很多朋友在深入的接触JAVA语言后就会发现这样两个词Q反?Reflection)和内?Introspector)Q经常搞不清楚这到底是怎么回事Q在什么场合下应用以及如何使用Q今天把q二者放在一起介l,因ؓ它们二者是相辅相成的?/span>

反射

相对而言Q反比内省更容易理解一炏V用一句比较白的话来概括,反射是让你可以通过名称来得到对?c,属性,Ҏ)的技术。例如我们可以通过cd来生成一个类的实例;知道了方法名Q就可以调用q个ҎQ知道了属性名可以访问这个属性的倹{?/span>

q是写两个例子让大家更直观的了解反射的用方法:

// 通过cd来构造一个类的实?/span>
Class cls_str = Class.forName( "java.lang.String" );
// 上面q句很眼熟,因ؓ使用q?nbsp;JDBC 讉K数据库的人都用过 J
Object str = cls_str.newInstance();
// 相当?nbsp;String str = new String(); 


// 通过Ҏ名来调用一个方?/span>
String methodName = "length" ;
Method m 
= cls_str.getMethod(methodName, null );
System.out.println( 
"length is " + m.invoke(str, null ));
// 相当?nbsp;System.out.println(str.length()); 


上面的两个例子是比较常用Ҏ。看C面的例子有发问了:Z么要q么ȝ呢?本来一条语句就完成的事情干吗要整这么复杂?没错Q在上面的例子中实没有必要q么ȝ。不q你惛_q样一个应用程序,它支持动态的功能扩展Q也是说程序不重新启动但是可以自动加蝲新的功能Q这个功能用一个具体类来表C。首先我们必Mؓq些功能定义一个接口类Q然后我们要求所有扩展的功能cdd现我指定的接口,q个规定了应用程序和可扩展功能之间的接口规则Q但是怎么动态加载呢Q我们必让应用E序知道要扩展的功能cȝcdQ比如是test.Func1Q当我们把这个类?字符?告诉应用E序后,它就可以使用我们W一个例子的Ҏ来加载ƈ启用新的功能。这是cȝ反射Q请问你有别的选择吗?

内省

内省是Java语言对Beancd性、事件的一U缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设|新的倹{通过getName/setName来访问name属性,q就是默认的规则。Java中提供了一套API用来讉K某个属性的getter/setterҎQ通过q些API可以使你不需要了解这个规则(但你最好还是要搞清楚)Q这些API存放于包java.beans中?/span>

一般的做法是通过cIntrospector来获取某个对象的BeanInfo信息Q然后通过BeanInfo来获取属性的描述器(PropertyDescriptorQ,通过q个属性描q器可以获取某个属性对应的getter/setterҎQ然后我们就可以通过反射机制来调用这些方法。下面我们来看一个例子,q个例子把某个对象的所有属性名U和值都打印出来Q?br />

/* 
 * Created on 2004-6-29
 
*/
 

package demo; 


import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; 


/**
  * 内省演示例子
  * 
@author liudong
  
*/
 

public class IntrospectorDemo {
    String name;
    
public static void main(String[] args) throws Exception{
        IntrospectorDemo demo 
= new IntrospectorDemo();
        demo.setName( 
"Winter Lau" );         

        
// 如果不想把父cȝ属性也列出来的话,
        
// ?nbsp;getBeanInfo 的第二个参数填写父类的信?/span>
        BeanInfo bi = Introspector.getBeanInfo(demo.getClass(), Object. class );
        PropertyDescriptor[] props 
= bi.getPropertyDescriptors();
        
for ( int i=0;i<props.length;i++){
            System.out.println(props[i].getName()
+ "=" +
                    props[i].getReadMethod().invoke(demo, 
null ));
        }
 

    }
     

    
public String getName() {
        
return name;
    }
 

    
public void setName(String name) {
        
this .name = name;
    }

}


Web开发框架Struts中的FormBean是通过内省机制来将表单中的数据映射到类的属性上Q因此要求FormBean的每个属性要有getter/setterҎ。但也ƈ不Lq样Q什么意思呢Q就是说对一个BeancLԌ我可以没有属性,但是只要有getter/setterҎ中的其中一个,那么Java的内省机制就会认为存在一个属性,比如cM有方法setMobileQ那么就认ؓ存在一个mobile的属性,q样可以方便我们把Beanc通过一个接口来定义而不用去关系具体实现Q不用去关系Bean中数据的存储。比如我们可以把所有的getter/setterҎ攑ֈ接口里定义,但是真正数据的存取则是在具体cMd玎ͼq样可提高系l的扩展性?/span>

ȝ

Java的反以及内省应用到E序设计中去可以大大的提供程序的化和可扩展性。有很多目都是采取q两U技术来实现其核心功能,例如我们前面提到的StrutsQ还有用于处理XML文g的Digester目Q其实应该说几乎所有的目都或多或的采用q两U技术。在实际应用q程中二者要怺l合方能发挥真正的智能化以及高度可扩展性?/span>



J2EE学习W记 2010-02-04 13:42 发表评论
]]>
[转]?join ?CountDownLatch 让主U程{待所有子U程完成http://www.aygfsteel.com/migrant/archive/2010/01/26/310889.htmlJ2EE学习W记J2EE学习W记Tue, 26 Jan 2010 10:00:00 GMThttp://www.aygfsteel.com/migrant/archive/2010/01/26/310889.htmlhttp://www.aygfsteel.com/migrant/comments/310889.htmlhttp://www.aygfsteel.com/migrant/archive/2010/01/26/310889.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/310889.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/310889.html阅读全文

J2EE学习W记 2010-01-26 18:00 发表评论
]]>
[转]jQuery基础---filter()和find()http://www.aygfsteel.com/migrant/archive/2009/11/09/301714.htmlJ2EE学习W记J2EE学习W记Mon, 09 Nov 2009 08:00:00 GMThttp://www.aygfsteel.com/migrant/archive/2009/11/09/301714.htmlhttp://www.aygfsteel.com/migrant/comments/301714.htmlhttp://www.aygfsteel.com/migrant/archive/2009/11/09/301714.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/301714.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/301714.htmlq是jQuery里常用的2个方法?br /> 他们2者功能是完全不同的,而初学者往往会被误导?/span>


首先 我们?find()ҎQ?br /> 现在有一个页面,里面HTML代码为:

<div class="css">
    
<class="rain">试1</p>
</div>
<div class="rain">
    
<p>试2</p>
</div>


如果我们使用find()ҎQ?br />

var $find = $("div").find(".rain");
alert( $find.html() );


会输出Q?br />
如果使用filter()ҎQ?br />

var $filter = $("div").filter(".rain");
alert( $filter.html() );


会输出Q?br />

也许你已l看出它们的区别了?br /> find()会在div元素?L class为rain 的元素?br /> 而filter()则是{选div的class为rain的元素?br /> 一个是对它的子集操作,一个是对自w集合元素筛选?/strong>

另外find()其实q可以用选择器表C?

var $select = $("div .rain");


J2EE学习W记 2009-11-09 16:00 发表评论
]]>
[转]SecureCRT中文字体解决Ҏhttp://www.aygfsteel.com/migrant/archive/2009/09/14/295013.htmlJ2EE学习W记J2EE学习W记Mon, 14 Sep 2009 06:14:00 GMThttp://www.aygfsteel.com/migrant/archive/2009/09/14/295013.htmlhttp://www.aygfsteel.com/migrant/comments/295013.htmlhttp://www.aygfsteel.com/migrant/archive/2009/09/14/295013.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/295013.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/295013.html以前在Windows上sshd一直都是用puttyQ虽然它单小巧,但毕竟缺很多特性。今天试了一下SecureCRTQ感觉用h比Putty好多了,但SecureCRT默认的字体超隄Q而且中文字体讄也比较麻烦一点,在这里记录一下以后可能还用得到?/span>

  1. ?#8220;会话选项”?#8220;l端->仿真”里面?#8220;Linux”Q如果需要显C颜色的话需要把“ANSI颜色”选上
  2. ?#8220;外观->字体”中选择喜欢的字体,但这里对字体是有要求的,只有{宽字体才行。如果要正常昄中文的话Q所选择的字体还必须包含中文字符?
  3. 另外是Ҏ你要d的主机的字符~码选择字符~码Q一般是 “UTF-8″

单的几步下来p|好了,如果q有q的话退出然后重新登陆一下。如果你x有的q接都用这个默认配|,可以?#8220;全局选项”中设|?#8220;默认的会话选项”Q这样以后新建的q接会自动应用上面的讄了?/span>

PS:

以前用putty的时候,字体q接用我在Linux最qMonacoQ但在SecureCRT中用Monaco字体的话Q中文会昄Zؕ码,q是因ؓMonaco字体中不包含中文字符Q而SecureCRT也不会自动的选择pȝ默认的中文字体?/span>

Z解决q个问题Q我们只要去找一个包含中文的{宽字体来用Q我从网上找了一个Consolas和雅黑的混合字体Q虽然没有Monaco好看Q但效果也还不错。这里有个地斚w要注意一下,在选择q个字体的字体选择对话框中Q字体的默认字符集是“西方”Q需要改成CHINESE_GB2312?/span>

如果你也想用q个字体的话Q可以从q里下蝲?/span>



J2EE学习W记 2009-09-14 14:14 发表评论
]]>
[转]Hibernate saveorUpdate与unsaved-valueQsaveQupdateQdeleteȝhttp://www.aygfsteel.com/migrant/archive/2009/08/27/292815.htmlJ2EE学习W记J2EE学习W记Thu, 27 Aug 2009 06:44:00 GMThttp://www.aygfsteel.com/migrant/archive/2009/08/27/292815.htmlhttp://www.aygfsteel.com/migrant/comments/292815.htmlhttp://www.aygfsteel.com/migrant/archive/2009/08/27/292815.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/292815.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/292815.htmlq些操作对经怋用hibernate的同学已l很熟悉了,我也l常用但一些细节ƈ不了解,
最q遇到问题才开始有看了一下?/span>

在读完robbin的这两个_֍贴的时候,感觉清晰了很多,实好文章?
http://www.javaeye.com/topic/2712
http://www.javaeye.com/topic/1604?page=1
q有q个_֍?
http://www.javaeye.com/topic/7484
也很不错?/span>

里面ȝ的很好了Q我l合以上三个帖子、自q试验Q版本hibernate-3.0.5Q和Hibernate文档也ȝ了一点,加深理解?strong>希望对刚开始学Hibernate的同学有所帮助?/strong>

一、saveorUpdate与unsaved-value
到底是savaq是update
Hibernate需要判断被操作的对象究竟是一个已l持久化q的持久对象q是临时对象?
1Q.主键Hibernate的id generator产生
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
</id>

Project project = new Project();
project.setId(XXX);
this.projectDao.saveOrUpdate(project);

1、默认unsaved-value="null"
主键是对象类型,hebernate判断project的主键是否位nullQ来判断project是否已被持久?/strong>
是的话,对project对象发送save(project)Q?
若自p|了主键则直接生成update的sqlQ发送update(project)Q即便数据库里没有那条记录?
主键是基本类型如int/long/double/
自己讄unsaved-null="0"?
所以这L话save和update操作肯定不会报错?/span>

2、unsaved-value="none"Q?
׃不论主键属性ؓM|都不可能为noneQ因此HibernateL对project对象发送update(project)

3、unsaved-value="any"
׃不论主键属性ؓM|都肯定ؓanyQ因此HibernateL对project对象发送save(project)Qhibernate生成主键?/span>

Hibernate文档中写?
saveOrUpdate()完成了如下工作:
如果对象已经在这个session中持久化q了Q什么都不用?
如果对象没有标识|调用save()来保存它
如果对象的标识gunsaved-value中的条g匚wQ调用save()来保存它
如果对象使用了版?version或timestamp),那么除非讄unsaved-value="undefined",版本查会发生在标识符查之?
如果q个session中有另外一个对象具有同L标识W,抛出一个异?

2Q.主键p己来赋?/strong>
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="assigned" />
</id>

Project project = new Project();
project.setId(XXX);
this.projectDao.saveOrUpdate(project);

1、默认unsaved-value="null"
q时有所不同Qhibernate会根据主键生一个selectQ来判断此对象是否已被持久化
已被持久化则updateQ未被持久化则save?
2、unsaved-value="none"Qupdate对象Q同?/span>

3、unsaved-value="any" Qsave对象Q?
如果自己自己讄的ID在数据库中已存在Q则报错?/span>

二、save与update操作
昑ּ的用session.save()或者session.update()操作一个对象的时候,实际上是用不到unsaved-value?
在同一SessionQsave没什么可说得
update对象? 最直接的更改一个对象的Ҏ是load()它,保持Session打开Q然后直接修改即?
Session s =…
Project p = (Project) sess.load(Project.class, id) );
p.setName(“test”);
s.flush();
不用调用s.update(p);hibernate能察觉到它的变化Q会自动更新。当然显C用的话也不会?/span>

Hibernate文档中写?
update()Ҏ在下列情形下使用Q?
E序在前面的session中装载了对象
对象被传递到UIQ界面)?
对该对象q行了一些修?
对象被传递回业务?
应用E序在第二个session中调用update()保存修改

三、delete操作
删除时直接自己构造一个project卛_删除
this.projectDao.delete(preojct);

以前删除我是q样写的
public void deleteProject(String id) {
Project project = (Project) this.projectDao.get(Project.class, id);
if (project != null) {
this.projectDao.delete(project);
}
卌样也是可以的
Project project = new Project();
project.setId(id);
this.projectDao.delete(project).

如果有联关p,需要把U联的子cM构造出来addq去Q同样可以删除?/span>

好了Q罗嗦的够多了?/span>



J2EE学习W记 2009-08-27 14:44 发表评论
]]>
վ֩ģ壺 | ̨| Ӣɳ| ͭ| ұ| | ɳ| °Ͷ| µ| | | Ӧ| | Ӣɳ| Ԫ| ؼ| | | | | | | | ƽ| | ֳ| ҵ| | | | Ϫ| | ƽ| ׺| Ȫ| | | | ų| | |