??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产乱码久久久久久蜜臀,亚洲精品aⅴ中文字幕乱码,懂色av一区二区http://www.aygfsteel.com/fangts/JAVAzh-cnTue, 17 Jun 2025 15:05:35 GMTTue, 17 Jun 2025 15:05:35 GMT60JS中数lArray的用?/title><link>http://www.aygfsteel.com/fangts/archive/2014/12/18/421524.html</link><dc:creator>Ҏ(gu)?/dc:creator><author>Ҏ(gu)?/author><pubDate>Thu, 18 Dec 2014 04:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/fangts/archive/2014/12/18/421524.html</guid><wfw:comment>http://www.aygfsteel.com/fangts/comments/421524.html</wfw:comment><comments>http://www.aygfsteel.com/fangts/archive/2014/12/18/421524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fangts/comments/commentRss/421524.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fangts/services/trackbacks/421524.html</trackback:ping><description><![CDATA[<h2></h2><div></div><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 楷体, 楷体_GB2312;">js数组元素的添加和删除一直比较迷惑,今天l于扑ֈ详细说明的资料了(jin)Q先l个我测试的代码^-^</span><br /><span style="font-family: 'Times New Roman';">var arr = new Array();</span><br /><span style="font-family: 'Times New Roman';">arr[0] = "aaa";</span><br /><span style="font-family: 'Times New Roman';">arr[1] = "bbb";</span><br /><span style="font-family: 'Times New Roman';">arr[2] = "ccc";</span><br /><span style="font-family: 'Times New Roman';">//alert(arr.length);//3</span><br /><span style="font-family: 'Times New Roman';">arr.pop();</span><br /><span style="font-family: 'Times New Roman';">//alert(arr.length);//2</span><br /><span style="font-family: 'Times New Roman';">//alert(arr[arr.length-1]);//bbb</span><br /><span style="font-family: 'Times New Roman';">arr.pop();</span><br /><span style="font-family: 'Times New Roman';">//alert(arr[arr.length-1]);//aaa</span><br /><span style="font-family: 'Times New Roman';">//alert(arr.length);//1</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 'Times New Roman';">var arr2 = new Array();</span><br /><span style="font-family: 'Times New Roman';">//alert(arr2.length);//0</span><br /><span style="font-family: 'Times New Roman';">arr2[0] = "aaa";</span><br /><span style="font-family: 'Times New Roman';">arr2[1] = "bbb";</span><br /><span style="font-family: 'Times New Roman';">//alert(arr2.length);//2</span><br /><span style="font-family: 'Times New Roman';">arr2.pop();</span><br /><span style="font-family: 'Times New Roman';">//alert(arr2.length);//1</span><br /><span style="font-family: 'Times New Roman';">arr2 = arr2.slice(0,arr2.length-1);</span><br /><span style="font-family: 'Times New Roman';">//alert(arr2.length);//0</span><br /><span style="font-family: 'Times New Roman';">arr2[0] = "aaa";</span><br /><span style="font-family: 'Times New Roman';">arr2[1] = "bbb";</span><br /><span style="font-family: 'Times New Roman';">arr2[2] = "ccc";</span><br /><span style="font-family: 'Times New Roman';">arr2 = arr2.slice(0,1);</span><br /><span style="font-family: 'Times New Roman';">alert(arr2.length);//1</span><br /><span style="font-family: 'Times New Roman';">alert(arr2[0]);//aaa</span><br /><span style="font-family: 'Times New Roman';">alert(arr2[1]);//undefined</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="font-family: 楷体, 楷体_GB2312;"><span style="color: #0055ff;"><span style="font-family: 'Times New Roman';">shift</span>Q删除原数组W一,q返回删除元素的|如果数组为空则返?/span><span style="color: #0055ff; font-family: 'Times New Roman';">undefined</span></span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.shift(); //aQ[2,3,4,5]   bQ?</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">unshift</span>Q将参数d到原数组开_(d)q返回数l的长度</span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.unshift(-2,-1); //aQ[-2,-1,1,2,3,4,5]   bQ?</span><br /><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;">注:(x)?span style="font-family: 'Times New Roman';">IE6.0</span>下测试返回值Mؓ(f)<span style="font-family: 'Times New Roman';">undefinedQFF2.0</span>下测试返回gؓ(f)7Q所以这个方法的q回g可靠Q需要用q回值时可用<span style="font-family: 'Times New Roman';">splice</span>代替本方法来使用?/span></strong></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">pop</span>Q删除原数组最后一,q返回删除元素的|如果数组为空则返?span style="font-family: 'Times New Roman';">undefined</span></span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">var b = a.pop(); //aQ[1,2,3,4]   bQ?</span>//不用q回的话直接调用可以了(jin)</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">push</span>Q将参数d到原数组末尾Qƈq回数组的长?/span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.push(6,7); //aQ[1,2,3,4,5,6,7]   bQ?</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">concat</span>Q返回一个新数组Q是参数添加到原数l中构成?/span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.concat(6,7); //aQ[1,2,3,4,5]   bQ[1,2,3,4,5,6,7]</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">splice(start,deleteCount,val1,val2,...)Q?/span>?span style="font-family: 'Times New Roman';">start</span>位置开始删?span style="font-family: 'Times New Roman';">deleteCount</span>,q从该位|v插入<span style="font-family: 'Times New Roman';">val1,val2</span>,...</span></strong></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;">在清I数l时Q只需传?span style="font-family: 'Times New Roman';">startIndex</span>?/span></strong></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;">如果不删除所有元素,再传?span style="font-family: 'Times New Roman';">deleteCount</span>参数?/span></strong></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">splice</span>q具有先删除后添加的功能Q即先删除几个元素,然后在删除的位置再添加若q元素,删除与添加的元素的个数没有必ȝ{,q时?span style="font-family: 'Times New Roman';">deleteCount</span>也是要用到的?/span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.splice(2,2,7,8,9); //aQ[1,2,7,8,9,5]   bQ[3,4]</span><br /><span style="font-family: 'Times New Roman';">var b = a.splice(0,1); //同shift</span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">a.splice(0,0,-2,-1); var b = a.length;</span>//?span style="font-family: 'Times New Roman';">unshift</span></span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">var b = a.splice(a.length-1,1);</span>//?span style="font-family: 'Times New Roman';">pop</span></span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">a.splice(a.length,0,6,7); var b = a.length</span>; //?span style="font-family: 'Times New Roman';">push</span></span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="font-family: 楷体, 楷体_GB2312;"><span style="color: #0055ff; font-family: 'Times New Roman';">reverse</span><span style="color: #0055ff;">Q将数组反序</span></span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.reverse(); //aQ[5,4,3,2,1]   bQ[5,4,3,2,1]</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">sort(orderfunction)Q?/span>按指定的参数Ҏ(gu)l进行排?/span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.sort(); //aQ[1,2,3,4,5]   bQ[1,2,3,4,5]</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">slice(start,end)Q?/span>q回从原数组中指定开始下标到l束下标之间的项l成的新数组</span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.slice(2,5); //aQ[1,2,3,4,5]   bQ[3,4,5]</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">join(separator)Q?/span>数l的元素lv一个字W串Q以<span style="font-family: 'Times New Roman';">separator</span>为分隔符Q省略的话则用默认用逗号为分隔符</span><br /></strong><span style="font-family: 'Times New Roman';">var a = [1,2,3,4,5];</span><br /><span style="font-family: 'Times New Roman';">var b = a.join("|"); //aQ[1,2,3,4,5]   bQ?1|2|3|4|5"</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><strong><span style="color: #0055ff; font-family: 楷体, 楷体_GB2312;">再给个利用数l模?span style="font-family: 'Times New Roman';">javaStringBuffer</span>处理字符串的Ҏ(gu)Q?/span></strong></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 'Times New Roman';">/**</span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">*</span> 字符串处理函?/span><br /><span style="font-family: 'Times New Roman';">*/</span><br /><span style="font-family: 'Times New Roman';">function StringBuffer() {</span><br /><span style="font-family: 'Times New Roman';">var arr = new Array;</span><br /><span style="font-family: 'Times New Roman';">this.append = function(str) {</span><br /><span style="font-family: 'Times New Roman';">    arr[arr.length] = str;</span><br /><span style="font-family: 'Times New Roman';">};</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 'Times New Roman';">this.toString = function() {</span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">    return arr.join("");</span>//?span style="font-family: 'Times New Roman';">append</span>q来的数l?span style="font-family: 'Times New Roman';">ping</span>成一个字W串</span><br /><span style="font-family: 'Times New Roman';">};</span><br /><span style="font-family: 'Times New Roman';">}</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 楷体, 楷体_GB2312;">今天在应用中H然发现<span style="font-family: 'Times New Roman';">join</span>是一U把数组转换成字W串的好Ҏ(gu)Q故装成对象用了(jin)Q?/span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 'Times New Roman';">/**</span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">*</span>把数l{换成特定W号分割的字W串</span><br /><span style="font-family: 'Times New Roman';">*/</span><br /><span style="font-family: 'Times New Roman';">function arrayToString(arr,separator) {</span><br /><span style="font-family: 'Times New Roman';">if(!separator) separator = "";//separator为null则默认ؓ(f)I?/span><br /><span style="font-family: 'Times New Roman';">    return arr.join(separator);</span><br /><span style="font-family: 'Times New Roman';">}</span></p><p style="margin: 10px 0px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><span style="font-family: 'Times New Roman';">/**</span><br /><span style="font-family: 楷体, 楷体_GB2312;"><span style="font-family: 'Times New Roman';">*</span> 查找数组包含的字W串</span><br /><span style="font-family: 'Times New Roman';">*/</span><br /><span style="font-family: 'Times New Roman';">function arrayFindString(arr,string) {</span><br /><span style="font-family: 'Times New Roman';">var str = arr.join("");</span><br /><span style="font-family: 'Times New Roman';">    return str.indexOf(string);</span><br /><span style="font-family: 'Times New Roman';">}</span></p><div></div><div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; background-color: #eeeeee;"><div class="wmqeeuq" id="blog_text"><p style="margin: 10px 0px;"><span style="font-family: 'Times New Roman';"></span></p></div></div><img src ="http://www.aygfsteel.com/fangts/aggbug/421524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fangts/" target="_blank">Ҏ(gu)?/a> 2014-12-18 12:02 <a href="http://www.aygfsteel.com/fangts/archive/2014/12/18/421524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库中树(wi)cd的表递归转换为json字符?/title><link>http://www.aygfsteel.com/fangts/archive/2014/04/04/411942.html</link><dc:creator>Ҏ(gu)?/dc:creator><author>Ҏ(gu)?/author><pubDate>Fri, 04 Apr 2014 03:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/fangts/archive/2014/04/04/411942.html</guid><wfw:comment>http://www.aygfsteel.com/fangts/comments/411942.html</wfw:comment><comments>http://www.aygfsteel.com/fangts/archive/2014/04/04/411942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fangts/comments/commentRss/411942.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fangts/services/trackbacks/411942.html</trackback:ping><description><![CDATA[     摘要: 需求:(x)现在有很好的ext?wi),可以数据库中的数据昄成很漂亮的?wi)形,而一个瓶颈问题是怎么把数据库中查询得到的数据转换为json的字W串格式。这里的cd是把q样的一个数据类转换为json丌Ӏ用到?jin)JsonUtilq个开源的json字符串{换类?使用C(jin)堆栈的数据结构?下面是测试类QCode highlighting produced by Actipro CodeHighlighter (...  <a href='http://www.aygfsteel.com/fangts/archive/2014/04/04/411942.html'>阅读全文</a><img src ="http://www.aygfsteel.com/fangts/aggbug/411942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fangts/" target="_blank">Ҏ(gu)?/a> 2014-04-04 11:30 <a href="http://www.aygfsteel.com/fangts/archive/2014/04/04/411942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL大表重复字段的查询方?/title><link>http://www.aygfsteel.com/fangts/archive/2012/05/25/379223.html</link><dc:creator>Ҏ(gu)?/dc:creator><author>Ҏ(gu)?/author><pubDate>Fri, 25 May 2012 06:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/fangts/archive/2012/05/25/379223.html</guid><wfw:comment>http://www.aygfsteel.com/fangts/comments/379223.html</wfw:comment><comments>http://www.aygfsteel.com/fangts/archive/2012/05/25/379223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fangts/comments/commentRss/379223.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fangts/services/trackbacks/379223.html</trackback:ping><description><![CDATA[<p>数据库中有个大表Q需要查扑օ中的名字有重复的记录idQ以便比较?/p> <p>如果仅仅是查找数据库中name不重复的字段Q很Ҏ(gu)</p><pre><ol class="dp-xml"><li id="wmqeeuq" class="alt"><span>SELECT min(`id`),`name`   </span></li><li><span>FROM `table`   </span></li><li id="wmqeeuq" class="alt"><span>GROUP BY `name`;  </span></li></ol></pre> <p>但是q样q不能得到说有重复字D늚id倹{(只得C(jin)最的一个id|(j)</p> <p>查询哪些字段是重复的也容?/p><pre><ol class="dp-xml"><li id="wmqeeuq" class="alt"><span>SELECT `name`,count(`name`) as count   </span></li><li><span>FROM `table`   </span></li><li id="wmqeeuq" class="alt"><span>GROUP BY `name` HAVING count(`name`) </span><span id="wmqeeuq" class="tag">></span><span>1   </span></li><li><span>ORDER BY count DESC;  </span></li></ol></pre> <p>但是要一ơ查询到重复字段的id|必M用子查询?jin),于是使用下面的语句来实现MySQL大表重复字段查询?/p><pre><ol class="dp-xml"><li id="wmqeeuq" class="alt"><span>SELECT `id`,`name`   </span></li><li><span>FROM `table`   </span></li><li id="wmqeeuq" class="alt"><span>WHERE `name` in (   </span></li><li><span>   SELECT `name`   </span></li><li id="wmqeeuq" class="alt"><span>   FROM `table`   </span></li><li><span>   GROUP BY `name` HAVING count(`name`) </span><span id="wmqeeuq" class="tag">></span><span>1  </span></li><li id="wmqeeuq" class="alt"><span>);  </span></li></ol></pre> <p>但是q条语句在mysql中效率太差,感觉mysqlq没有ؓ(f)子查询生成零时表?/p> <p>于是使用先徏立零时表</p><pre><ol class="dp-xml"><li id="wmqeeuq" class="alt"><span>create table `tmptable` as (  </span></li><li><span>   SELECT `name`   </span></li><li id="wmqeeuq" class="alt"><span>   FROM `table`   </span></li><li><span>   GROUP BY `name` HAVING count(`name`) </span><span id="wmqeeuq" class="tag">></span><span>1  </span></li><li id="wmqeeuq" class="alt"><span>);  </span></li></ol></pre> <p>然后使用多表q接查询</p><pre><ol class="dp-xml"><li id="wmqeeuq" class="alt"><span>SELECT a.`id`, a.`name`   </span></li><li><span>FROM `table` a, `tmptable` t   </span></li><li id="wmqeeuq" class="alt"><span>WHERE a.`name` = t.`name`;  </span></li></ol></pre> <p>l果q次l果很快出来了(jin)?/p> <p>?distinct去重?/p><pre><ol class="dp-xml"><li id="wmqeeuq" class="alt"><span>SELECT distinct a.`id`, a.`name`   </span></li><li><span>FROM `table` a, `tmptable` t   </span></li><li id="wmqeeuq" class="alt"><span>WHERE a.`name` = t.`name`;  </span></li></ol></pre><img src ="http://www.aygfsteel.com/fangts/aggbug/379223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fangts/" target="_blank">Ҏ(gu)?/a> 2012-05-25 14:15 <a href="http://www.aygfsteel.com/fangts/archive/2012/05/25/379223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Layout 布局http://www.aygfsteel.com/fangts/archive/2011/12/14/366339.htmlҎ(gu)?/dc:creator>Ҏ(gu)?/author>Wed, 14 Dec 2011 07:30:00 GMThttp://www.aygfsteel.com/fangts/archive/2011/12/14/366339.htmlhttp://www.aygfsteel.com/fangts/comments/366339.htmlhttp://www.aygfsteel.com/fangts/archive/2011/12/14/366339.html#Feedback1http://www.aygfsteel.com/fangts/comments/commentRss/366339.htmlhttp://www.aygfsteel.com/fangts/services/trackbacks/366339.html阅读全文

]]>
输入和输出?/title><link>http://www.aygfsteel.com/fangts/archive/2011/05/07/349744.html</link><dc:creator>Ҏ(gu)?/dc:creator><author>Ҏ(gu)?/author><pubDate>Sat, 07 May 2011 09:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/fangts/archive/2011/05/07/349744.html</guid><wfw:comment>http://www.aygfsteel.com/fangts/comments/349744.html</wfw:comment><comments>http://www.aygfsteel.com/fangts/archive/2011/05/07/349744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fangts/comments/commentRss/349744.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fangts/services/trackbacks/349744.html</trackback:ping><description><![CDATA[InputStream:输入?nbsp;   InputStream in = new FileInputStream(file1);   file1指读取文件的路径<br /> OutputStream:输出?OutputStream ou = new FileOutputStream(file2);  file2指写入文件的路径<br /> BufferInputStream高输入?BufferedInputStream bi=new BufferedInputStream(in);<br /> BufferOutputStream高输出?BufferedOutputStream out = new BufferedOutputStream(ou);<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">        File file </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> File(</span><span style="color: #000000">"</span><span style="color: #000000">d:\\通知.doc</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img id="Codehighlighter1_46_646_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_646_Open_Text.style.display='none'; Codehighlighter1_46_646_Closed_Image.style.display='inline'; Codehighlighter1_46_646_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_46_646_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_46_646_Closed_Text.style.display='none'; Codehighlighter1_46_646_Open_Image.style.display='inline'; Codehighlighter1_46_646_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">try</span><span style="color: #000000"> </span><span id="Codehighlighter1_46_646_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_46_646_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">long</span><span style="color: #000000"> st </span><span style="color: #000000">=</span><span style="color: #000000"> System.currentTimeMillis();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            InputStream in </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileInputStream(file);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            BufferedInputStream bi</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> BufferedInputStream(in);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            OutputStream ou</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">  FileOutputStream(</span><span style="color: #000000">"</span><span style="color: #000000">d:\\通知11.doc </span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            BufferedOutputStream out </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BufferedOutputStream(ou<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    );<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">int</span><span style="color: #000000"> b </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /> <img id="Codehighlighter1_366_413_Open_Image" onclick="this.style.display='none'; Codehighlighter1_366_413_Open_Text.style.display='none'; Codehighlighter1_366_413_Closed_Image.style.display='inline'; Codehighlighter1_366_413_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_366_413_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_366_413_Closed_Text.style.display='none'; Codehighlighter1_366_413_Open_Image.style.display='inline'; Codehighlighter1_366_413_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">while</span><span style="color: #000000"> ((b </span><span style="color: #000000">=</span><span style="color: #000000"> bi.read()) </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">) </span><span id="Codehighlighter1_366_413_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_366_413_Open_Text"><span style="color: #000000">{ </span><span style="color: #008000">//</span><span style="color: #008000"> 循环din对象的字?/span><span style="color: #008000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">                out.write(b); </span><span style="color: #008000">//</span><span style="color: #008000"> 写入到文?/span><span style="color: #008000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /></span><span style="color: #000000">            }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_422_485_Open_Image" onclick="this.style.display='none'; Codehighlighter1_422_485_Open_Text.style.display='none'; Codehighlighter1_422_485_Closed_Image.style.display='inline'; Codehighlighter1_422_485_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_422_485_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_422_485_Closed_Text.style.display='none'; Codehighlighter1_422_485_Open_Image.style.display='inline'; Codehighlighter1_422_485_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">try</span><span style="color: #000000"> </span><span id="Codehighlighter1_422_485_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_422_485_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                in.close();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                out.flush(); <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                out.close(); </span><span style="color: #008000">//</span><span style="color: #008000"> 好习(fn)?/span><span style="color: #008000"><br /> <img id="Codehighlighter1_507_537_Open_Image" onclick="this.style.display='none'; Codehighlighter1_507_537_Open_Text.style.display='none'; Codehighlighter1_507_537_Closed_Image.style.display='inline'; Codehighlighter1_507_537_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_507_537_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_507_537_Closed_Text.style.display='none'; Codehighlighter1_507_537_Open_Image.style.display='inline'; Codehighlighter1_507_537_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /></span><span style="color: #000000">            }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (Exception e) </span><span id="Codehighlighter1_507_537_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_507_537_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                e.printStackTrace();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />            }</span></span><span style="color: #000000">            <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">long</span><span style="color: #000000"> et </span><span style="color: #000000">=</span><span style="color: #000000"> System.currentTimeMillis();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            System.out.print (et </span><span style="color: #000000">-</span><span style="color: #000000"> st);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #008000">//</span><span style="color: #008000"> System.out.println(s);</span><span style="color: #008000"><br /> <img id="Codehighlighter1_670_698_Open_Image" onclick="this.style.display='none'; Codehighlighter1_670_698_Open_Text.style.display='none'; Codehighlighter1_670_698_Closed_Image.style.display='inline'; Codehighlighter1_670_698_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_670_698_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_670_698_Closed_Text.style.display='none'; Codehighlighter1_670_698_Open_Image.style.display='inline'; Codehighlighter1_670_698_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #000000">        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (IOException e) </span><span id="Codehighlighter1_670_698_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_670_698_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            e.printStackTrace();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />    }</span></div> <img src ="http://www.aygfsteel.com/fangts/aggbug/349744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fangts/" target="_blank">Ҏ(gu)?/a> 2011-05-07 17:19 <a href="http://www.aygfsteel.com/fangts/archive/2011/05/07/349744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse5.5注册?/title><link>http://www.aygfsteel.com/fangts/archive/2011/04/26/349019.html</link><dc:creator>Ҏ(gu)?/dc:creator><author>Ҏ(gu)?/author><pubDate>Tue, 26 Apr 2011 02:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/fangts/archive/2011/04/26/349019.html</guid><wfw:comment>http://www.aygfsteel.com/fangts/comments/349019.html</wfw:comment><comments>http://www.aygfsteel.com/fangts/archive/2011/04/26/349019.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fangts/comments/commentRss/349019.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fangts/services/trackbacks/349019.html</trackback:ping><description><![CDATA[     摘要:  1import java.io.BufferedReader;  2import java.io.IOException;  3import java.io.InputStreamReader;  4import java.io.PrintStream;  5import java.tex...  <a href='http://www.aygfsteel.com/fangts/archive/2011/04/26/349019.html'>阅读全文</a><img src ="http://www.aygfsteel.com/fangts/aggbug/349019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fangts/" target="_blank">Ҏ(gu)?/a> 2011-04-26 10:28 <a href="http://www.aygfsteel.com/fangts/archive/2011/04/26/349019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javaWord/Excel/PDF文g转换成HTML整理http://www.aygfsteel.com/fangts/archive/2011/04/20/348625.htmlҎ(gu)?/dc:creator>Ҏ(gu)?/author>Wed, 20 Apr 2011 06:26:00 GMThttp://www.aygfsteel.com/fangts/archive/2011/04/20/348625.htmlhttp://www.aygfsteel.com/fangts/comments/348625.htmlhttp://www.aygfsteel.com/fangts/archive/2011/04/20/348625.html#Feedback3http://www.aygfsteel.com/fangts/comments/commentRss/348625.htmlhttp://www.aygfsteel.com/fangts/services/trackbacks/348625.html阅读全文

]]>
QBC查询实例http://www.aygfsteel.com/fangts/archive/2009/07/21/287599.htmlҎ(gu)?/dc:creator>Ҏ(gu)?/author>Tue, 21 Jul 2009 03:23:00 GMThttp://www.aygfsteel.com/fangts/archive/2009/07/21/287599.htmlhttp://www.aygfsteel.com/fangts/comments/287599.htmlhttp://www.aygfsteel.com/fangts/archive/2009/07/21/287599.html#Feedback0http://www.aygfsteel.com/fangts/comments/commentRss/287599.htmlhttp://www.aygfsteel.com/fangts/services/trackbacks/287599.html
//查询Feedback_Columns表中site字段=1Q以id为倒序的最后一条记?br />   *Expression.sql  
    @SuppressWarnings("unchecked")
    
public List findLatest(){
        
        DetachedCriteria criteria
=DetachedCriteria.forClass(FeedbackColumns.class);
        criteria.addOrder(Order.desc(
"id"));
        criteria.add(
        Expression.sql(
"site = (?) and rownum=1""1", Hibernate.STRING) );

        List
<FeedbackColumns> result = getHibernateTemplate().findByCriteria(criteria);        
        
        
return result;
    }

//QBC中Expression.eq和Expression.allEq的应?br />   前者可以应用多个单条gq行整合Q后者ؓ(f)单一多条?br />
    @SuppressWarnings("unchecked")
    
public  List  show(){
        
    
//     HashMap  map = new HashMap();
        
// map.put("state","3");
        
// map.put("id",new Integer(15));


        DetachedCriteria criteria
=DetachedCriteria.forClass(FeedbackColumns.class);
        System.out.println(
"________________");
        
//criteria.addOrder(Order.desc("id"));
        System.out.println("________________");
        
//criteria.add(Expression.allEq(map));
        criteria.add(Expression.eq("site",new Long(1)));
        
        List result 
= getHibernateTemplate().findByCriteria(criteria);        
        
        System.out.println(result.size());
                
        
return result;
    }



JSP中应用:(x)
       1、静(rn)态声明ctx与icsQ再加个判断QvC化的作用。(因ؓ(f)全局变量存放与内存当中,此处加一个判断的作用是服务器启动后,只需要加载一ơSPRINGQ?br />        2、加载spring支持
       3、通过接口去访问hibernate的底层类Q得到LIST的?br />
    <%!static ApplicationContext ctx = null;

      
static IFeedbackColumnsService ics = null;%>
    
<%
      
if (ctx == null || ics == null{
    ctx 
= new FileSystemXmlApplicationContext("F:/Tomcat 5.0/webapps/zmhd/WEB-INF/classes/applicationContext.xml");
     ics 
= (IFeedbackColumnsService) ctx.getBean("FeedbackColumnsServiceImpl");
      }

    List list
=ics.findLatest();        System.out.println(list.size());    request.setAttribute("list",list);
     
%>


]]>
Hibernate QBC查询 http://www.aygfsteel.com/fangts/archive/2009/07/19/287342.htmlҎ(gu)?/dc:creator>Ҏ(gu)?/author>Sun, 19 Jul 2009 08:12:00 GMThttp://www.aygfsteel.com/fangts/archive/2009/07/19/287342.htmlhttp://www.aygfsteel.com/fangts/comments/287342.htmlhttp://www.aygfsteel.com/fangts/archive/2009/07/19/287342.html#Feedback0http://www.aygfsteel.com/fangts/comments/commentRss/287342.htmlhttp://www.aygfsteel.com/fangts/services/trackbacks/287342.htmlHibernate QBC查询
            QBC查询Q?
               QBC查询是通过使用Hibernate提供的Query By Criteria
            API来查询对象,q种API装?jin)SQL语句的动态拼装,Ҏ(gu)询提供了(jin)更加面向对象的功能接口。我们看下面的示例程序:(x)
            Criteria criteria=session.createCriteria(User.class);
            criteria.add(Expression.eq(“name”,”zx”));
            criteria.add(Expression.eq(“age”,new Integer(27));
            List list=criteria.list();
            当执行criteria.list()时会(x)生成cMq样的SQL语句QSelect * from user where name=’zx’
            and
            age=27;所以在q里我们可以看出QCriteria实际上是一个查询容器,它对查询条g表达式的dq行?jin)封装,具体的查询条件是通过add()Ҏ(gu)d的,而且具体的查询条件的表达式运是通过Expression指定的。Hibernate在运行期?x)根据Criteria指定的表辑ּ条g来添加查询条Ӟq且生成查询语句。这U方式非常符合Java以及(qing)所有面向对象编E语a的编E方式,所以大多数的持久层框架都提供了(jin)对这U方式查询的支持。下面我们讲解这U查询方式的各个技术细节?
            1、Criteria查询表达式:(x)
            正如我们所见,ExpressionҎ(gu)询语句的表达式进行了(jin)装和限Ӟ下表列出?jin)Expression所有的Ҏ(gu)Q以?qing)每个方法所对应的查询表辑ּ?qing)其限制?
                  Ҏ(gu)描述
                  Expression.eq对应SQL?#8220;field=value”表达?
                  如:(x)Expression.eq(“name”,”zx”);
                  Expression.allEqҎ(gu)的参Cؓ(f)一个Mapcd对象Q包含多个名/值对对应关系Q相当于多个Expression.eq的叠?
                  Expression.gt对应SQL?#8220;field>value”表达?
                  Expression.ge对应SQL?#8220;field>=value”表达?
                  Expression.lt对应SQL?#8220;field”表达?
                  Expression.le对应SQL?#8220;field<=value”表达?
                  Expression.between对应SQL语句的between表达式,如:(x)查询q龄?1?7岁之间的用户Q可以写成Expression.between(“age”,new
                  Integer(21),new Integer(27));
                  Expression.like对应SQL语句?#8221;field like value”表达?
                  Expression.in对应SQL语句?#8220;field in(……)”表达?
                  Expression.eqProperty用于比较两个属性|对应”field=field”SQL表达?
                  Expression.gtProperty用于比较两个属性|对应”field>field”SQL表达?
                  Expression.geProperty用于比较两个属性|对应”field>=field”SQL表达?
                  Expression.ltProperty用于比较两个属性|对应”field表达?
                  Expression.leProperty用于比较两个属性|对应”field<=field”SQL表达?
                  Expression.and对应SQL语句的And关系l合Q如QExpression.and(Expression.eq(“name”,”zx”),Expression.eq(“sex”,”1”));
                  Expression.or对应SQL语句的Or关系l合Q如QExpression.or(Expression.eq(“name”,”zx”),Expression.eq(“name”,”zhaoxin”));
                  Expression.sql作ؓ(f)补充q个Ҏ(gu)提供?jin)原生SQL语句查询的支持,在执行时直接通过原生SQL语句q行限定Q如QExpression.sql(“lower({alias}.name)
                  like (?)”,“zhao%”,Hibernate.STRING) ;在运行时{ alias
                  }会(x)由当前查询所兌的实体类名替换,()中的?会(x)?#8221;zhao%”替换Qƈ且类型由Hibernate.STRING指定?

            注意QExpression各方法中的属性参敎ͼ各方法中的第一个参敎ͼ(j)所指定的属性名Uͼ如:(x)name,sexQ,q不是数据库表中的实际字D名Uͼ而是实体对象中映实际数据表字段的类属性名U?
            
            2、示例查询:(x)
              
            CZ查询是通过ExamplecL完成的,ExamplecdC(jin)Criterion接口Q可以用作Criteria查询条gQExamplecȝ作用是:(x)Ҏ(gu)已有对象Q查询属性g之相同的其他对象。如下代码所C:(x)
            Criteria criteria=session.createCriteria(User.class);
            User exampleuser=new User(“zx”);
            criteria.add(Example.create(exampleuser));
            List list=criteria.list();
            for(int i=0;i
               User user=(User)list.get(i);
               System.out.println(user.getName()+”\n”);
            }
            上述代码中User exampleuser=new
            User(“zx”);criteria.add(Example.create(exampleuser));两句相当?
            criteria.add(Expression.eq(“name”,”zx”));因此?x)生成类似如下的SQL语句Q?
            select * from user where name=’zx’;在上面的代码中exampleuserUCؓ(f)CZ对象?
             
            在Hibernate中队CZ查询Q默认情况下?x)排除掉CZ对象中属性gؓ(f)I的属性,q可以调用Example.excludeNoneQ排除空串|(j)/excludeZerosQ排除零|(j)Q或者调用Example.excludePropertyҎ(gu)来指定排除特定属性?
              
            CZ查询主要应用于组合查询中Q比如根据用戯入的查询条g动态生成最l的查询语句Q通过使用CZ查询Q可以避免由于查询条件过多而写的大量if判断语句?
            3、复合查询:(x)
            复合查询主要是处理,h兌关系的两个实体怎样q行兌查询Q比如User实体对象与Addres实体对象h一对多的关联关p,我们可以如下构造符合查询:(x)
            Criteria criteria=session.createCriteria(User.class);
               Criteria addcriteria=criteria.createCriteria(“addresses”);(1)
               addcriteria.add(Express.like(“address”,”%tianjin%”));
              List list=criteria.list();
               for(int i=0;i
                 User user=(User)list.get(i);
                 System.out.println(user.getName()+”\n”);
                 Set addresses=user.getAddresses();
                 Iterator it=addresses.iterator();
                 while(it.hasNext(){
                  Address address=(Address)it.next();
                  System.out.println(address.getAddress()+”\n”);
                 }
               }
            当执行到?jin)?Q处Ӟ表明要针对User对象的addresses属性添加新的查询条Ӟ因此当执行criteria.list()ӞHibernate?x)生成类似如下的SQL语句Q?
            Select * from user inner join address on user.id=address.id where
            address.address like ‘%shanghai%’;
            正如我们所见,我们可以通过向Criteria中添加保存关联对象的集合属性(addresses属性保存(sh)User对象相关联的Address对象Q,来构造复合查询,在数据库一端是通过内连接查询来实现?
            
            
            
            4、Criteria的高U特性:(x)
            A、限定返回记录条敎ͼ(x)
             我们可以通过利用Criteria.setFirstResult/setMaxResultҎ(gu)来限定返回某一ơ查询的记录敎ͼ如下代码Q?
            Criteria criteria=session.createCriteria(User.class);
            criteria.setFirstResult(100);
            criteria.setMaxResult(200);
            通过以上代码可以讑֮该次查询q回user表中的从W?00条记录开始直到第200条记录结束的100条记录?
            B、对查询l果q行排序Q?
             可通过使用net.sf.hibernate.expression.Ordercd以对查询l果集进行排序,如下面代码:(x)
            Criteria criteria=session.createCriteria(User.class);
            criteria.add(Expression.eq(“groupid”,”2”);
            criteria.addOrder(Order.asc(“name”));
            criteria.addOrder(Order.desc(“groupid”));
            List list=criteria.list();

            通过使用Ordercȝasc()/desc()Ҏ(gu)Q可以指定针Ҏ(gu)个字D늚排序逻辑Q如果执行上qC码,?x)生成类似如下的SQL语句Q?
            Select * from user where groupid=’2’ order by name asc,groupid desc
            C、分l与l计Q?
              
            在Hibernate3中,对Criteria又增M(jin)新功能,可以支持分组与统计功能,在Hibernate3中增加了(jin)Projections以及(qing)ProjectionListc,q两个类对分l与l计功能q行?jin)封装,如下代码Q?
            Criteria criteria=session.createCriteria(User.class);
            criteria.setProjection(Projections.groupProperty(“age”));(1)
            List list=criteria.list();
            Iterator it=list.iterator();
            while(it.hasNext()){
             System.out.println(it.next());
            }
            通过Q?Q处的代码,我们通过ProjectionscL定了(jin)用于分组的目标属性,当进行检索时Hibernate?x)生成类似如下的SQL语句Q?
            Select age from user group by age;
            q可以通过使用Projections的avg()/rowCount()/count()/max()/min()/countDistinct(){方法来实现l计功能Q如下面的代码示例:(x)
            Criteria criteria=session.createCriteria(User.class);
            criteria.setProjection(Projections.avg(“age”));(1)
            List list=criteria.list();
            Iterator it=list.iterator();
            while(it.hasNext()){
             System.out.println(it.next());
            }
            通过Q?Q处的代码,我们实现?jin)对用户q_q龄的统计,当进行检索时QHibernate?x)生成类似如下的SQL语句Q?
            Select avg(age) from user;
            另外Q在SQL语句中的多条件分l与l计功能Q可以利用ProjectionListcL实现Q如下面代码所C:(x)
            Criteria criteria=session.createCriteria(User.class);
            ProjectionList prolist=Projections.projectionList();
            prolist.add(Projections.groupProperty(“age”));
            prolist.add(Projections.rowCount());
            criteria.setProjection(prolist);
            List list=criteria.list();

            通过以上代码Q实C(jin)对不同年龄h员数量的分组l计Q当q行(g)索时QHibernate?x)生成类似如下的SQL语句Q?
            Select age,count(*) from user group by age;
            5、DetachedCriteria:
            在Hibernate2中,Criteria实例是与创徏它的Session实例h相同的生命周期的Q也是_(d)Session实例是它所创徏的Criteria实例的宿主,当Session关闭Ӟ寄生于Session实例的Criteria都将失效。这对Criteria的重用造成?jin)困难,Z(jin)实现Criteria实例的重用,在Hibernate3中提供了(jin)一个DetachedCriteriac,DetachedCriteria实例的生命周期与Session实例的生命周期无养I我们可以利用DetachedCriteria对一些常用的Criteria查询条gq行抽离Q当需要进行检索时再与Session实例兌Q从而获得运行期的Criteria实例。如下面的代码所C:(x)
               DetachedCriteria dc= DetachedCriteria.forClass(User.class);
               dc.add(Expression.eq(“name”,”zhaoxin”));
               dc.add(Expression.eq(“sex”,”1”));
               Criteria criteria=dc.getExecutableCriteria(session);
               Iterator it=criteria.list().iterator();
               while(it.hasNext()){
                 User user=(User)it.next();
                 System.out.println(user.getName());
               }
            
            正如我们所见,DetachedCriteria的生存周期与session实例无关Q当需要进行检索时Q通过getExecutableCriteria(session)Ҏ(gu)Q与当前的Session实例兌q获得运行期的Criteria实例Q完成检索?
            DetachedCriteria也可以用于完成子查询功能Q如下代码所C:(x)
            DetachedCriteria dc= DetachedCriteria.forClass(User.class);
            dc.setProjection(Projections.avg(“age”));
            Criteria criteria=session.createCriteria(User.class);
            criteria.add(Subqueries.propertyGt(“age”,dc));
            List list=criteria.list();

            通过Subqueriesc,实现?jin)添加子查询的功能,我们DetachedCriteria所讑֮的查询条Ӟ当作子查询添加到?jin)运行时Criteria实例的查询条件中Q当执行(g)索时Hibernate?x)生成类似如下的SQL语句Q?
            Select * from user where age>(select avg(age) from user group by
            age);


]]>
apche与多个tomcat整合http://www.aygfsteel.com/fangts/archive/2009/07/17/287112.htmlҎ(gu)?/dc:creator>Ҏ(gu)?/author>Fri, 17 Jul 2009 03:14:00 GMThttp://www.aygfsteel.com/fangts/archive/2009/07/17/287112.htmlhttp://www.aygfsteel.com/fangts/comments/287112.htmlhttp://www.aygfsteel.com/fangts/archive/2009/07/17/287112.html#Feedback0http://www.aygfsteel.com/fangts/comments/commentRss/287112.htmlhttp://www.aygfsteel.com/fangts/services/trackbacks/287112.html整合条gQ?、apche2.0.49 mod_jk2.dll
             2、tomcat4.1  tomcat5.0.28

一、安装tomcat4.1Q所有端口默认)(j)
二、tomcat5.0.28必须为非安装版(server.xmlQ?br />         1、更?005端口Qؓ(f)防止与tomcat4.1占用端口冲突<Server port="8005" shutdown="SHUTDOWN" debug="0">
        2、找?<!-- Define a non-SSL Coyote HTTP/1.1...--> 更改port端口P此处更改为tomcatQ暂时更改ؓ(f)8081Q?/p>         3、找?lt;!-- Define a Coyote/JK2 AJP 1.3 Connector on ...-->更改port端口P此处更改为apacheQ暂时更改ؓ(f)8018Q?br /> 三、更改apache的workers2.properties文g        
[shm]
file
=${serverRoot}/logs/shm.file
size
=1048576
# Example socket channel, override port and host.

[channel.socket:localhost:
8009]
port
=8009
host
=127.0.0.1

[channel.socket:localhost:
8018]
port
=8018
host
=127.0.0.1

# define the worker
[ajp13:localhost:
8009]
channel
=channel.socket:localhost:8009

[ajp13:localhost:
8018]
channel
=channel.socket:localhost:8018

# Uri
# Map All webapp to the Web server uri space

[uri:
/servlet/*]
worker=ajp13:localhost:8009

[uri:/infoseek/*]
worker=ajp13:localhost:8009

[uri:/dataReport/*]
worker=ajp13:localhost:8018


q样apche与tomcat的整合就完成?br /> 另:(x)apche的http.conf文g DocumentRoot "D:/www" 可以指定apache目发布路径
tomcat的server.xml文g搜烦(ch)<Logger className="org.apache.catalina.logger.FileLogger".../>下加?lt;Context path="/infoseek" docBase="D:\www\webapps\infoseek" debug="0"/>可指定tomcat发布路径

]]>
վ֩ģ壺 °| ׼| | ƽ| ½| | | ɽ| Ͼ| Ѱ| | | | | | | | | | Ϫ| | | ƽ| ϸ| | Ұ| | | | | | ͨ| ˫| | | | | | Ĭ| | ƽ|