??xml version="1.0" encoding="utf-8" standalone="yes"?>黄页免费在线观看,美女日韩一区,欧美一区二区视频在线http://www.aygfsteel.com/wshao/category/54088.htmlzh-cnTue, 25 Mar 2014 09:07:12 GMTTue, 25 Mar 2014 09:07:12 GMT60使用Spring mvc 利用java的反技术,来扫描对应包下的注解hurl l一保存在数据库?/title><link>http://www.aygfsteel.com/wshao/archive/2014/03/25/411455.html</link><dc:creator>午后星期?/dc:creator><author>午后星期?/author><pubDate>Tue, 25 Mar 2014 06:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/wshao/archive/2014/03/25/411455.html</guid><wfw:comment>http://www.aygfsteel.com/wshao/comments/411455.html</wfw:comment><comments>http://www.aygfsteel.com/wshao/archive/2014/03/25/411455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wshao/comments/commentRss/411455.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wshao/services/trackbacks/411455.html</trackback:ping><description><![CDATA[<div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">仅对  <wbr>@requestMapping("/xxxx/其他参数")  <wbr>的格?/div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>package cc.wshao.springmvc.util;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import java.io.File;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import java.lang.reflect.Method;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import java.net.URL;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.context.ApplicationContext;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.context.support.ClassPathXmlApplicationC<wbr>ontext;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.stereotype.Controller;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.web.bind.annotation.RequestMapping;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import cc.wshao.springmvc.service.RightService;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">public class RegRightUtils {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">private static final String rootUrl = "/spring";</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">private static RightService rightService;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">public static void main(String[] args) throws Exception {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">ApplicationContext context = new ClassPathXmlApplicationC<wbr>ontext("beans.xml");</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr> rightService = context.getBean(RightService.class);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">ClassLoader classLoader = RegRightUtils.class.getClassLoader();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">URL url = classLoader.getResource("com/er07/book/springmvc/controller");</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">String rootPath = url.getPath().toString();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">File rootFile = new File(rootPath);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">File [] files = rootFile.listFiles();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">for(File f: files) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">System.err.println(f.getName());</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">String className = f.getName().substring(0, f.getName().indexOf(".class"));</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">Class clazz = Class.forName("com.er07.book.springmvc.controller."+className);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">parseClass(clazz);  <wbr>//解析  <wbr>出url</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">public  <wbr>static void parseClass(Class clazz) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">if(clazz.isAnnotationPresent(Controller.class)) {  <wbr> //是否Z个controller ? <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">String classUrl ="";</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>if(clazz.isAnnotationPresent(RequestMapping.class)) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>RequestMapping requestMapping_clazz = (RequestMapping) clazz.getAnnotation(RequestMapping.class);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr> classUrl = requestMapping_clazz.value()[0];</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr> <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr> if(classUrl.equals("/")) {  <wbr>//如果?/" 的话  <wbr>制空  <wbr>  <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr> classUrl ="";</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr> }</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>Method [] ms = clazz.getDeclaredMethods();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>for(Method m :ms) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>if(m.isAnnotationPresent(RequestMapping.class)) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>RequestMapping requestMapping_method = m.getAnnotation(RequestMapping.class);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>String methodUrl = requestMapping_method.value()[0];</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>  <wbr>int  <wbr>index = methodUrl.indexOf("/");</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>  <wbr>index = methodUrl.indexOf("/",index+1);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>  <wbr>if(index!=-1) {  <wbr>//如果存在 则进行截取前面的url <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>  <wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>  <wbr> methodUrl = methodUrl.substring(0, index);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>  <wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>String resultUrl = rootUrl+classUrl+methodUrl;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>rightService.appendRightByUrl(resultUrl);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"> <wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">//实现ҎQ?nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"><div>public void appendRightByUrl(String url) {</div><div>//查询 此url 在数据库中是否存? <wbr>此权?/div><div>String hql = "from Right where rightUrl =?";</div><div>Right r = (Right) this.rightDao.uniqueResult(hql, url);</div><div>if(r==null) { //不存?, 插入数据库中</div><div>Right newRight = new Right();</div><div>newRight.setRightUrl(url);</div><div>this.saveOrUpdateRight(newRight);</div><div>}</div><div>}</div></div><img src ="http://www.aygfsteel.com/wshao/aggbug/411455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wshao/" target="_blank">午后星期?/a> 2014-03-25 14:54 <a href="http://www.aygfsteel.com/wshao/archive/2014/03/25/411455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring的JNDI数据源连接池配置CZ及Spring对JNDI实现分析http://www.aygfsteel.com/wshao/archive/2013/12/31/408290.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 06:28:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408290.htmlhttp://www.aygfsteel.com/wshao/comments/408290.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408290.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408290.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408290.html阅读全文

]]>
java的打包jar,war,ear包的作用Q区别,打包方式Q本文打jarQ?/title><link>http://www.aygfsteel.com/wshao/archive/2013/12/31/408284.html</link><dc:creator>午后星期?/dc:creator><author>午后星期?/author><pubDate>Tue, 31 Dec 2013 06:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/wshao/archive/2013/12/31/408284.html</guid><wfw:comment>http://www.aygfsteel.com/wshao/comments/408284.html</wfw:comment><comments>http://www.aygfsteel.com/wshao/archive/2013/12/31/408284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wshao/comments/commentRss/408284.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wshao/services/trackbacks/408284.html</trackback:ping><description><![CDATA[<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt"><span>一?/span>java<span style="font-family: 宋体">的打?/span>jar,war,ear<span style="font-family: 宋体">包的作用Q区别,打包方式</span>.</p> <p style="text-indent: -21pt; margin: 0cm 0cm 0pt 42pt"><span>a)<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: 宋体">作用与区?/span></p> <p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">                         i.<span style="font: 7pt 'Times New Roman'">              </span></span>jar: <span style="font-family: 宋体">通常是开发时要引用通用</span>(JAVA)<span style="font-family: 宋体">c,打成包便于存攄?/span></p> <p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">                       ii.<span style="font: 7pt 'Times New Roman'">              </span></span>war: <span style="font-family: 宋体">是做好一?/span>(web)<span style="font-family: 宋体">应用后,通常是网站,打成包部|到容器?/span></p> <p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">                      iii.<span style="font: 7pt 'Times New Roman'">              </span></span>ear: <span style="font-family: 宋体">企业U应用,实际?/span>EAR<span style="font-family: 宋体">包中包含</span>WAR<span style="font-family: 宋体">包和几个企业U项目的配置文g而已Q一般服务器选择</span>WebSphere<span style="font-family: 宋体">{,都会使用</span>EAR<span style="font-family: 宋体">包。通常?/span>EJB<span style="font-family: 宋体">打成</span>ear<span style="font-family: 宋体">包?/span></p> <p style="text-indent: -21pt; margin: 0cm 0cm 0pt 42pt"><span>b)<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: 宋体">打包方式</span></p> <p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">                         i.<span style="font: 7pt 'Times New Roman'">              </span></span><span style="font-family: 宋体">所有的包都是用</span>jar<span style="font-family: 宋体">打的Q只不过目标文g的扩展名不一?/span></p> <p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">                       ii.<span style="font: 7pt 'Times New Roman'">              </span></span><span style="font-family: 宋体">也可以用</span>Ant<span style="font-family: 宋体">来安成构?/span></p> <p style="text-indent: -21pt; margin: 0cm 0cm 0pt 42pt"><span>c)<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: 'simsun','serif'">JET</span><span style="font-family: 宋体">~译?/span><span style="font-family: 'simsun','serif'">EXE</span></p> <p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">                         i.<span style="font: 7pt 'Times New Roman'">              </span></span>JET<span>   </span><span style="font-family: 宋体">是要用钱买的Q而且据说</span><span>   JET   </span><span style="font-family: 宋体">也不是能把所有的</span><span>   Java   </span><span style="font-family: 宋体">E序都编译成执行文gQ性能也要打些折扣。所以,使用制作可执?/span><span>   JAR   </span><span style="font-family: 宋体">文g包的Ҏ是最佳选择了,何况它还能保?/span><span>   Java   </span><span style="font-family: 宋体">的跨q_Ҏ?/span></p><br /><br />二、实?br /><br />Ҏ一Q我现在有test/A.java<br />    道理虽然单,但是在这q程中还是有很多l节需要注意的Q哪一个细节注意不刎ͼ操作都不会成功?br /> <div align="center"> <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"> <div align="left"><span style="color: #0000ff">package</span><span style="color: #000000"> test;<br /></span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> A{<br />    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String args[]){<br />        System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">test java</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    }<br />}</span></div></div></div>    写好后,保存为A.javaQ存在D:\Java\jdk1.6\test_jar\test\目录下面Q打开cmdQ进入这个目录,即D:\Java \jdk1.6\test_jar\test\然后用javac命o~译Q会生成一个A.class文gQ此时类的编写工作已l完成?br /><br />    2Q在D:\Java\jdk1.6\test_jar目录下新Z个文件夹META-INFQ再新徏mainclass.mf文gQ在其中写入下面一行信?br />    Main-Class: com/hp/HelloWorld<br />    q一句有两个注意的地方,首先行尾要有回R换行Q其?#8220;:”?#8220;com”之间要有一个空根{?br />    q一行信息的作用是标明主cR?br /><br />    3Q最后就是生成jar包ƈ试了,在cmd中进入D:\Java\jdk1.6\test_jar目录Q输入下列命?nbsp;   <br />    jar cvfm test.jar META-INF/mainclass.mf test/A.class(<strong>q是指定文gQ当然也可以test指向文g?<br /></strong>    上述命o执行成功的话Q会提示“标明清单QmanifestQ?..”Q?br />    然后再在当前目录下输入java -jar test.jar 命oQ可以看?#8220;test java”?nbsp;<br /> <br /><br /><br />Ҏ二:<br />    用简单的jar -cvf test.jar    test目录,jar会自动生成META-INF/mainclass.mfQ我们只需要在里面d一?nbsp;Main-Class: com/hp/HelloWorld<br />可以了<br /><br /><br /><br />Ҏ三:myeclipse工具 Q?strong>推荐</strong>Q?br />    叛_目--Export--Jar File-要选择Main-Class<br /><br />Ҏ四:ant<img src ="http://www.aygfsteel.com/wshao/aggbug/408284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wshao/" target="_blank">午后星期?/a> 2013-12-31 14:22 <a href="http://www.aygfsteel.com/wshao/archive/2013/12/31/408284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>框架Quart在Java中Q务调度的使用http://www.aygfsteel.com/wshao/archive/2013/12/31/408277.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 06:13:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408277.htmlhttp://www.aygfsteel.com/wshao/comments/408277.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408277.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408277.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408277.htmlQuartz框架是一个全功能、开源的d调度服务Q可以集成几乎Q何的java应用E序—从小的单片机pȝ到大型的电子商务pȝ。Quartz可以执行上千上万的Q务调度?/p>

  核心概念

  Quartz核心的概念:schedulerd调度、Jobd、Trigger触发器、JobDetaildl节

  JobdQ其实Job是接口,其中只有一个executeҎQ?/p>

  package org.quartz;

  public abstract interface Job

  {

  public abstract void execute(JobExecutionContext paramJobExecutionContext)

  throws JobExecutionException;

  }

  我们开发者只要实现此接口Q实现executeҎ卛_。把我们惛_的事情,在execute中执行即可?/p>

  JobDetailQQ务细节,Quartz执行JobӞ需要新ZJob实例Q但是不能直接操作Jobc,所以通过JobDetail来获取Job的名U、描qC息?/p>

  Trigger触发器:执行d的规?比如每天Q每时{?/p>

  一般情况用SimpleTriggerQ和CronTriggerQ这个触发器实现了Trigger接口?/p>

  对于复杂的时间表辑ּ来说Q比如每个月15日上午几点几分,使用CronTrigger

  对于单的旉来说Q比如每天执行几ơ,使用SimpleTrigger

  schedulerd调度Q是最核心的概念,需要把JobDetail和Trigger注册到scheduler中,才可以执行?/p>

  注意Q?/p>

  不同的版本的jar包,具体的操作不太相同,但是tbw思\是相同的;比如1.8.6jar包中QJobDetail是个c,直接通过构造方法与Jobcd联。SimpleTrigger?CornTrigger是类;?.0.2jar包中QJobDetail是个接口QSimpleTrigger和CornTrigger是接?/p>

  不同版本试Q?/p>

  1.8.6jar包:
  package com.test;

  import java.util.Date;

  import org.quartz.Job;

  import org.quartz.JobExecutionContext;

  import org.quartz.JobExecutionException;

  /**

  * 需要执行的d

  * @author lhy

  *

  */

  public class MyJob implements Job {

  @Override

  //把要执行的操作,写在executeҎ?/p>

  public void execute(JobExecutionContext arg0) throws JobExecutionException {

  System.out.println("试Quartz"+new Date());

  }

  }
    
     使用SimpleTrigger触发?br />  package com.test;

  import java.util.Date;

  import org.quartz.JobDetail;

  import org.quartz.Scheduler;

  import org.quartz.SchedulerException;

  import org.quartz.SchedulerFactory;

  import org.quartz.SimpleTrigger;

  import org.quartz.impl.StdSchedulerFactory;

  /**

  * 调用d的类

  * @author lhy

  *

  */

  public class SchedulerTest {

  public static void main(String[] args) {

  //通过schedulerFactory获取一个调度器

  SchedulerFactory schedulerfactory=new StdSchedulerFactory();

  Scheduler scheduler=null;

  try{

  // 通过schedulerFactory获取一个调度器

  scheduler=schedulerfactory.getScheduler();

  // 创徏jobDetail实例Q绑定Job实现c?/p>

  // 指明job的名Uͼ所在组的名Uͼ以及l定jobc?/p>

  JobDetail jobDetail=new JobDetail("job1", "jgroup1", MyJob.class);

  // 定义调度触发规则Q比如每1U运行一ơ,p??/p>

  SimpleTrigger simpleTrigger=new SimpleTrigger("simpleTrigger","triggerGroup");

  // 马上启动

  simpleTrigger.setStartTime(new Date());

  // 间隔旉

  simpleTrigger.setRepeatInterval(1000);

  // q行ơ数

  simpleTrigger.setRepeatCount(8);

  // 把作业和触发器注册到d调度?/p>

  scheduler.scheduleJob(jobDetail, simpleTrigger);

  // 启动调度

  scheduler.start();

  }catch(SchedulerException e){

  e.printStackTrace();

  }

  }

  }

     若用CornTrigger触发器:

  [html]

  package com.test;

  import java.util.Date;

  import org.quartz.CronTrigger;

  import org.quartz.JobDetail;

  import org.quartz.Scheduler;

  import org.quartz.SchedulerException;

  import org.quartz.SchedulerFactory;

  import org.quartz.SimpleTrigger;

  import org.quartz.impl.StdSchedulerFactory;

  /**

  * 调用d的类

  * @author lhy

  *

  */

  public class CronTriggerTest {

  public static void main(String[] args) {

  //通过schedulerFactory获取一个调度器

  SchedulerFactory schedulerfactory=new StdSchedulerFactory();

  Scheduler scheduler=null;

  try{

  // 通过schedulerFactory获取一个调度器

  scheduler=schedulerfactory.getScheduler();

  // 创徏jobDetail实例Q绑定Job实现c?/p>

  // 指明job的名Uͼ所在组的名Uͼ以及l定jobc?/p>

  JobDetail jobDetail=new JobDetail("job1", "jgroup1", MyJob.class);

  // 定义调度触发规则Q每天上?0Q?5执行

  CronTrigger cornTrigger=new CronTrigger("cronTrigger","triggerGroup");

  // 执行规则表达?/p>

  cornTrigger.setCronExpression("0 15 10 * * ? *");

  // 把作业和触发器注册到d调度?/p>

  scheduler.scheduleJob(jobDetail, cornTrigger);

  // 启动调度

  scheduler.start();

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  }

  对于2.0.2jar包如下:

  其中的jobcM变,主要是调度类如下Q?/p>

  package com.test;

  import java.util.Date;

  import org.quartz.CronScheduleBuilder;

  import org.quartz.JobBuilder;

  import org.quartz.JobDetail;

  import org.quartz.Scheduler;

  import org.quartz.SchedulerException;

  import org.quartz.SchedulerFactory;

  import org.quartz.SimpleScheduleBuilder;

  import org.quartz.Trigger;

  import org.quartz.TriggerBuilder;

  import org.quartz.impl.StdSchedulerFactory;

  /**

  * 调用d的类

  * @author lhy

  *

  */

  public class SchedulerTest {

  public static void main(String[] args) {

  //通过schedulerFactory获取一个调度器

  SchedulerFactory schedulerfactory=new StdSchedulerFactory();

  Scheduler scheduler=null;

  try{

  // 通过schedulerFactory获取一个调度器

  scheduler=schedulerfactory.getScheduler();

  // 创徏jobDetail实例Q绑定Job实现c?/p>

  // 指明job的名Uͼ所在组的名Uͼ以及l定jobc?/p>

  JobDetail job=JobBuilder.newJob(MyJob.class).withIdentity("job1", "jgroup1").build();

  // 定义调度触发规则

  // 使用simpleTrigger规则

  // Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")

  // .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withRepeatCount(8))

  // .startNow().build();

  // 使用cornTrigger规则 每天10?2?/p>

  Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")

  .withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))

  .startNow().build();

  // 把作业和触发器注册到d调度?/p>

  scheduler.scheduleJob(job, trigger);

  // 启动调度

  scheduler.start();

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  }

  上述demo下蝲Q?.8版本demo下蝲

  2.0版本demo下蝲

  对于CornExpress讲解如下Q?/p>

  字段 允许?允许的特D字W?/p>

  U?0-59 , - * /

  ?0-59 , - * /

  时 0-23 , - * /

  日期 1-31 , - * ? / L W C

  月䆾 1-12 或?JAN-DEC , - * /

  星期 1-7 或?SUN-SAT , - * ? / L C #

  q?可? 留空, 1970-2099 , - * /

  表达?意义

  "0 0 12 * * ?" 每天中午12点触?/p>

  "0 15 10 ? * *" 每天上午10:15触发

  "0 15 10 * * ?" 每天上午10:15触发

  "0 15 10 * * ? *" 每天上午10:15触发

  "0 15 10 * * ? 2005" 2005q的每天上午10:15触发

  "0 * 14 * * ?" 在每天下?点到下午2:59期间的每1分钟触发

  "0 0/5 14 * * ?" 在每天下?点到下午2:55期间的每5分钟触发

  "0 0/5 14,18 * * ?" 在每天下?点到2:55期间和下?点到6:55期间的每5分钟触发

  "0 0-5 14 * * ?" 在每天下?点到下午2:05期间的每1分钟触发

  "0 10,44 14 ? 3 WED" 每年三月的星期三的下?:10?:44触发

  "0 15 10 ? * MON-FRI" 周一臛_五的上午10:15触发

  "0 15 10 15 * ?" 每月15日上?0:15触发

  "0 15 10 L * ?" 每月最后一日的上午10:15触发

  "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发

  "0 15 10 ? * 6L 2002-2005" 2002q至2005q的每月的最后一个星期五上午10:15触发

  "0 15 10 ? * 6#3" 每月的第三个星期五上?0:15触发

  Ҏ字符 意义

  * 表示所有?

  ? 表示未说明的|即不兛_它ؓ何?

  - 表示一个指定的范围;

  , 表示附加一个可能?

  / W号前表C开始时_W号后表C每ơ递增的?

  L("last") ("last") "L" 用在day-of-month字段意思是 "q个月最后一?;用在 day-of-week字段, 它简单意思是 "7" or "SAT"?如果在day-of-week字段里和数字联合使用Q它的意思就?"q个月的最后一个星期几" – 例如Q?"6L" means "q个月的最后一个星期五". 当我们用“L”Ӟ不指明一个列表值或者范围是很重要的Q不然的话,我们会得C些意想不到的l果?/p>

  W("weekday") 只能用在day-of-month字段。用来描叙最接近指定天的工作?周一到周?。例如:在day-of-month字段?#8220;15W”?#8220;最接近q个月第15天的工作?#8221;Q即如果q个月第15天是周六Q那么触发器会在这个月W?4天即周五触发;如果q个月第15天是周日Q那么触发器会在这个月W?16天即周一触发;如果q个月第15天是周二Q那么就?strong>tbw触发器这天触发。注意一点:q个用法只会在当前月计算|不会过当前月?#8220;W”字符仅能在day-of-month指明一天,不能是一个范围或列表。也可以?#8220;LW”来指定这个月的最后一个工作日?/p>

  # 只能用在day-of-week字段。用来指定这个月的第几个周几。例Q在day-of-week字段?6#3"指这个月W?个周?6指周五,3指第3?。如果指定的日期不存在,触发器就不会触发?/p>

  C 指和calendar联系后计过的倹{例Q在day-of-month 字段?#8220;5C”指在q个月第5天或之后包括calendar的第一?在day-of-week字段?#8220;1C”指在q周日或之后包括calendar的第一?/p>

]]>
通过JAVA获取优酷、土豆、酷6?间房{视?/title><link>http://www.aygfsteel.com/wshao/archive/2013/12/31/408268.html</link><dc:creator>午后星期?/dc:creator><author>午后星期?/author><pubDate>Tue, 31 Dec 2013 05:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/wshao/archive/2013/12/31/408268.html</guid><wfw:comment>http://www.aygfsteel.com/wshao/comments/408268.html</wfw:comment><comments>http://www.aygfsteel.com/wshao/archive/2013/12/31/408268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wshao/comments/commentRss/408268.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wshao/services/trackbacks/408268.html</trackback:ping><description><![CDATA[     摘要: 通过JAVA获取优酷、土豆、酷6?间房?6视频Q现在很多社会网站都有这个功能,用户输入优酷、土豆、酷6?间房?6视频地址后,能找到对应的视频及视频的~略图,有些C֌|站q能获取到视频的旉?比如Q新微博就有这个功能,当用戯入优酗土豆、酷6?间房?6视频|址后,p获取到相应的视频地址及视频的~略图。代码如下: import org.jsoup.Jsoup;imp...  <a href='http://www.aygfsteel.com/wshao/archive/2013/12/31/408268.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wshao/aggbug/408268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wshao/" target="_blank">午后星期?/a> 2013-12-31 13:59 <a href="http://www.aygfsteel.com/wshao/archive/2013/12/31/408268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ehcache详细解读http://www.aygfsteel.com/wshao/archive/2013/12/31/408265.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:56:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408265.htmlhttp://www.aygfsteel.com/wshao/comments/408265.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408265.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408265.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408265.html阅读全文

]]>
Hibernate ehcache配置二~存http://www.aygfsteel.com/wshao/archive/2013/12/31/408263.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:54:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408263.htmlhttp://www.aygfsteel.com/wshao/comments/408263.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408263.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408263.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408263.html阅读全文

]]>
Spring邮g服务之附ӞMaven + Spring SMTP Mail With Attachmenthttp://www.aygfsteel.com/wshao/archive/2013/12/31/408261.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:52:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408261.htmlhttp://www.aygfsteel.com/wshao/comments/408261.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408261.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408261.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408261.html阅读全文

]]>
Spring邮g服务之HtmlQMaven + Spring SMTP Mail With Htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408262.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:52:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408262.htmlhttp://www.aygfsteel.com/wshao/comments/408262.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408262.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408262.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408262.html阅读全文

]]>
Spring邮g服务QMaven + Spring SMTP Mailhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408260.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:50:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408260.htmlhttp://www.aygfsteel.com/wshao/comments/408260.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408260.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408260.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408260.html阅读全文

]]>
JFreeChart 生成 折线图(Struts2 + Maven3 + JFreeChartQ?/title><link>http://www.aygfsteel.com/wshao/archive/2013/12/31/408257.html</link><dc:creator>午后星期?/dc:creator><author>午后星期?/author><pubDate>Tue, 31 Dec 2013 05:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/wshao/archive/2013/12/31/408257.html</guid><wfw:comment>http://www.aygfsteel.com/wshao/comments/408257.html</wfw:comment><comments>http://www.aygfsteel.com/wshao/archive/2013/12/31/408257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wshao/comments/commentRss/408257.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wshao/services/trackbacks/408257.html</trackback:ping><description><![CDATA[     摘要: 接上一随W?nbsp;JFreeChart 生成 q?Q环境及光|不变,只是生成柱状图的核心类 CylinderAction 替换?CurveActionQ让 CurveAction来负责折U图的生成,看下代码Q?Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlig...  <a href='http://www.aygfsteel.com/wshao/archive/2013/12/31/408257.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wshao/aggbug/408257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wshao/" target="_blank">午后星期?/a> 2013-12-31 13:48 <a href="http://www.aygfsteel.com/wshao/archive/2013/12/31/408257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFreeChart 生成 饼状图(Struts2 + Maven3 + JFreeChartQ?/title><link>http://www.aygfsteel.com/wshao/archive/2013/12/31/408256.html</link><dc:creator>午后星期?/dc:creator><author>午后星期?/author><pubDate>Tue, 31 Dec 2013 05:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/wshao/archive/2013/12/31/408256.html</guid><wfw:comment>http://www.aygfsteel.com/wshao/comments/408256.html</wfw:comment><comments>http://www.aygfsteel.com/wshao/archive/2013/12/31/408256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wshao/comments/commentRss/408256.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wshao/services/trackbacks/408256.html</trackback:ping><description><![CDATA[<span style="font-family: Georgia; font-size: 10pt">接上一随W?nbsp;<a style="color: #008080" href="http://www.aygfsteel.com/fancydeepin/archive/2012/08/07/java_jfreechart_BarChart3D.html" target="_blank">JFreeChart 生成 q?/a> Q环境及光|不变,只是生成柱状图的核心类 CylinderAction 替换?PieActionQ让 PieAction 来负责饼状图的生成,看下代码Q?br /><br /><br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.action;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.Color;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.ChartFactory;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.JFreeChart;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.servlet.ServletUtilities;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.data.general.DefaultPieDataset;<br /><img id="Codehighlighter1_221_393_Open_Image" onclick="this.style.display='none'; Codehighlighter1_221_393_Open_Text.style.display='none'; Codehighlighter1_221_393_Closed_Image.style.display='inline'; Codehighlighter1_221_393_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_221_393_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_221_393_Closed_Text.style.display='none'; Codehighlighter1_221_393_Open_Image.style.display='inline'; Codehighlighter1_221_393_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span id="Codehighlighter1_221_393_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * -----------------------------------------<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @描述  饼状?br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @作?nbsp; fancy<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @邮箱  fancydeepin@yeah.net<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @日期  2012-8-7 <p><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * -----------------------------------------<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" /> </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_436_1203_Open_Image" onclick="this.style.display='none'; Codehighlighter1_436_1203_Open_Text.style.display='none'; Codehighlighter1_436_1203_Closed_Image.style.display='inline'; Codehighlighter1_436_1203_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_436_1203_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_436_1203_Closed_Text.style.display='none'; Codehighlighter1_436_1203_Open_Image.style.display='inline'; Codehighlighter1_436_1203_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> PieAction </span><span style="color: #0000ff">extends</span><span style="color: #000000"> BaseAction</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_436_1203_Closed_Text"></span><span id="Codehighlighter1_436_1203_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> </span><span style="color: #0000ff">long</span><span style="color: #000000"> serialVersionUID </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1L</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String fileName;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    <br /><img id="Codehighlighter1_558_1145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_558_1145_Open_Text.style.display='none'; Codehighlighter1_558_1145_Closed_Image.style.display='inline'; Codehighlighter1_558_1145_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_558_1145_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_558_1145_Closed_Text.style.display='none'; Codehighlighter1_558_1145_Open_Image.style.display='inline'; Codehighlighter1_558_1145_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String execute() </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception</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_558_1145_Closed_Text"></span><span id="Codehighlighter1_558_1145_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        <br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">创徏Dataset对象</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        DefaultPieDataset dataset </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> DefaultPieDataset();<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">模拟数据</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-1?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">50</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-2?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">150</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-3?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">80</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-4?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">140</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-5?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">180</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-6?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">130</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-7?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">100</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">创徏3D饼状?/span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        JFreeChart chart </span><span style="color: #000000">=</span><span style="color: #000000"> ChartFactory.createPieChart3D(</span><span style="color: #000000">"</span><span style="color: #000000">2011qA产品销售量</span><span style="color: #000000">"</span><span style="color: #000000">, dataset, </span><span style="color: #0000ff">true</span><span style="color: #000000">, </span><span style="color: #0000ff">false</span><span style="color: #000000">, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">讄背景颜色</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        chart.setBackgroundPaint(Color.WHITE);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">保存图表</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        fileName </span><span style="color: #000000">=</span><span style="color: #000000"> ServletUtilities.saveChartAsPNG(chart, </span><span style="color: #000000">500</span><span style="color: #000000">, </span><span style="color: #000000">300</span><span style="color: #000000">, </span><span style="color: #0000ff">null</span><span style="color: #000000">, getHttpSession());<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">pie</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    <br /><img id="Codehighlighter1_1178_1200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1178_1200_Open_Text.style.display='none'; Codehighlighter1_1178_1200_Closed_Image.style.display='inline'; Codehighlighter1_1178_1200_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1178_1200_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1178_1200_Closed_Text.style.display='none'; Codehighlighter1_1178_1200_Open_Image.style.display='inline'; Codehighlighter1_1178_1200_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getFileName() </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_1178_1200_Closed_Text"></span><span id="Codehighlighter1_1178_1200_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> fileName;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span></div><br /><br />?cylinder.jsp 拯一份名字改?pie.jspQ其余不变,讉KQ?a style="color: #993300" href="http://localhost:8080/jfreechart-demo/pie.html" target="_blank">http://localhost:8080/jfreechart-demo/pie.html</a> 的结果如囄Q?br /><br /><img border="0" alt="" src="http://www.aygfsteel.com/images/blogjava_net/fancydeepin/pie1.jpg" width="523" longdesc="" height="327" /><br /><br />从上囑֏以看出A产品在每个区销售的大概份额Q但是默认ƈ没有l显C所占的癑ֈ比,下面通过d代码来得所占百分比能够昄出来Q?br /><br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.action;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.Color;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.text.DecimalFormat;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.text.NumberFormat;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.ChartFactory;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.JFreeChart;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.labels.StandardPieSectionLabelGenerator;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.plot.PiePlot;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.chart.servlet.ServletUtilities;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.jfree.data.general.DefaultPieDataset;<br /><img id="Codehighlighter1_385_557_Open_Image" onclick="this.style.display='none'; Codehighlighter1_385_557_Open_Text.style.display='none'; Codehighlighter1_385_557_Closed_Image.style.display='inline'; Codehighlighter1_385_557_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_385_557_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_385_557_Closed_Text.style.display='none'; Codehighlighter1_385_557_Open_Image.style.display='inline'; Codehighlighter1_385_557_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span id="Codehighlighter1_385_557_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * -----------------------------------------<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @描述  饼状?br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @作?nbsp; fancy<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @邮箱  fancydeepin@yeah.net<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * @日期  2012-8-7 <p><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /> * -----------------------------------------<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" /> </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_600_1620_Open_Image" onclick="this.style.display='none'; Codehighlighter1_600_1620_Open_Text.style.display='none'; Codehighlighter1_600_1620_Closed_Image.style.display='inline'; Codehighlighter1_600_1620_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_600_1620_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_600_1620_Closed_Text.style.display='none'; Codehighlighter1_600_1620_Open_Image.style.display='inline'; Codehighlighter1_600_1620_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> PieAction </span><span style="color: #0000ff">extends</span><span style="color: #000000"> BaseAction</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_600_1620_Closed_Text"></span><span id="Codehighlighter1_600_1620_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> </span><span style="color: #0000ff">long</span><span style="color: #000000"> serialVersionUID </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1L</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String fileName;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    <br /><img id="Codehighlighter1_722_1562_Open_Image" onclick="this.style.display='none'; Codehighlighter1_722_1562_Open_Text.style.display='none'; Codehighlighter1_722_1562_Closed_Image.style.display='inline'; Codehighlighter1_722_1562_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_722_1562_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_722_1562_Closed_Text.style.display='none'; Codehighlighter1_722_1562_Open_Image.style.display='inline'; Codehighlighter1_722_1562_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String execute() </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception</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_722_1562_Closed_Text"></span><span id="Codehighlighter1_722_1562_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        <br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">创徏Dataset对象</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        DefaultPieDataset dataset </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> DefaultPieDataset();<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">模拟数据</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-1?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">50</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-2?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">150</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-3?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">80</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-4?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">140</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-5?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">180</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-6?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">130</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-7?/span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">100</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">创徏3D饼状?/span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        JFreeChart chart </span><span style="color: #000000">=</span><span style="color: #000000"> ChartFactory.createPieChart3D(</span><span style="color: #000000">"</span><span style="color: #000000">2011qAA产品销售量</span><span style="color: #000000">"</span><span style="color: #000000">, dataset, </span><span style="color: #0000ff">true</span><span style="color: #000000">, </span><span style="color: #0000ff">false</span><span style="color: #000000">, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">讄背景颜色</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        chart.setBackgroundPaint(Color.WHITE);<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        <br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        PiePlot plot </span><span style="color: #000000">=</span><span style="color: #000000"> (PiePlot)chart.getPlot();<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 囄中显C百分比Q自定义方式Q{0} 表示选项Q?nbsp;{1} 表示数|{2} 表示所占比?nbsp;Q小数点后两?nbsp;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        plot.setLabelGenerator(</span><span style="color: #0000ff">new</span><span style="color: #000000"> StandardPieSectionLabelGenerator(</span><span style="color: #000000">"</span><span style="color: #000000">{0}={1}({2})</span><span style="color: #000000">"</span><span style="color: #000000">, NumberFormat.getNumberInstance(),</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">0.00%</span><span style="color: #000000">"</span><span style="color: #000000">)));<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        <br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000">保存图表</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        fileName </span><span style="color: #000000">=</span><span style="color: #000000"> ServletUtilities.saveChartAsPNG(chart, </span><span style="color: #000000">500</span><span style="color: #000000">, </span><span style="color: #000000">300</span><span style="color: #000000">, </span><span style="color: #0000ff">null</span><span style="color: #000000">, getHttpSession());<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">pie</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />    <br /><img id="Codehighlighter1_1595_1617_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1595_1617_Open_Text.style.display='none'; Codehighlighter1_1595_1617_Closed_Image.style.display='inline'; Codehighlighter1_1595_1617_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1595_1617_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1595_1617_Closed_Text.style.display='none'; Codehighlighter1_1595_1617_Open_Image.style.display='inline'; Codehighlighter1_1595_1617_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getFileName() </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_1595_1617_Closed_Text"></span><span id="Codehighlighter1_1595_1617_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> fileName;<br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" /></span></div><br /><br />OKQ再ơ访问的l果如图C:<br /><br /><img border="0" alt="" src="http://www.aygfsteel.com/images/blogjava_net/fancydeepin/pie2.jpg" width="529" longdesc="" height="332" /><br /><br /></span><br /><br /><span style="font-family: Georgia; font-size: 10pt"><br /><span style="font-family: Georgia; color: #008000; font-size: 10pt">   [ 转蝲出处Q?a href="http://www.aygfsteel.com/fancydeepin" target="_blank"><font color="#1d58d1">http://www.aygfsteel.com/fancydeepin</font></a> ]</span></span><font size="2"> </font><br /><img src ="http://www.aygfsteel.com/wshao/aggbug/408256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wshao/" target="_blank">午后星期?/a> 2013-12-31 13:47 <a href="http://www.aygfsteel.com/wshao/archive/2013/12/31/408256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFreeChart 生成 q图(Struts2 + Maven3 + JFreeChartQ?/title><link>http://www.aygfsteel.com/wshao/archive/2013/12/31/408255.html</link><dc:creator>午后星期?/dc:creator><author>午后星期?/author><pubDate>Tue, 31 Dec 2013 05:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/wshao/archive/2013/12/31/408255.html</guid><wfw:comment>http://www.aygfsteel.com/wshao/comments/408255.html</wfw:comment><comments>http://www.aygfsteel.com/wshao/archive/2013/12/31/408255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wshao/comments/commentRss/408255.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wshao/services/trackbacks/408255.html</trackback:ping><description><![CDATA[     摘要: 准备环境Q?Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->eclipse   3.6maven   3.0.4struts     2.1.8JFreeCha...  <a href='http://www.aygfsteel.com/wshao/archive/2013/12/31/408255.html'>阅读全文</a><img src ="http://www.aygfsteel.com/wshao/aggbug/408255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wshao/" target="_blank">午后星期?/a> 2013-12-31 13:46 <a href="http://www.aygfsteel.com/wshao/archive/2013/12/31/408255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring AOP + AspectJ frameworkhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408253.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:43:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408253.htmlhttp://www.aygfsteel.com/wshao/comments/408253.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408253.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408253.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408253.html阅读全文

]]>
hibernate one-to-many many-to-one 双向注解http://www.aygfsteel.com/wshao/archive/2013/12/31/408251.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:34:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408251.htmlhttp://www.aygfsteel.com/wshao/comments/408251.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408251.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408251.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408251.html
Hibernate 3.3.1 
Maven 3.0.4 
MySQL 5.5.13 
Myeclipse 8.6.1 

语句Q?/p>

DROP TABLE IF EXISTS `t_company`;
CREATE TABLE `t_company` (
  `companyId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `companyName` varchar(30) NOT NULL,
  PRIMARY KEY (`companyId`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gb2312;

INSERT INTO `t_company` VALUES ('1', 'Sun');
INSERT INTO `t_company` VALUES ('2', 'Apache');
DROP TABLE IF EXISTS `t_employee`;
CREATE TABLE `t_employee` (
  `employeeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `employeeName` varchar(15) NOT NULL,
  `cid` int(10) unsigned NOT NULL,
  PRIMARY KEY (`employeeId`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gb2312;

INSERT INTO `t_employee` VALUES ('1', 'Tom', '1');
INSERT INTO `t_employee` VALUES ('2', 'Summ', '1');
INSERT INTO `t_employee` VALUES ('3', 'Cat', '2');
INSERT INTO `t_employee` VALUES ('4', 'Vinylon', '1');
INSERT INTO `t_employee` VALUES ('5', 'Dog', '2');

目录l构Q?/p>

Employee.java

package com.fancy.po;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
 * -----------------------------------------
 * @文g: Employee.java
 * @作? fancy
 * @邮箱: fancyzero@yeah.net
 * @旉: 2012-6-10
 * @描述: 实体c?
 * -----------------------------------------
 */
/**
 * 下面只说@ManyToOne,如需了解其他注解,
 * 可以参考上一:http://www.cnblogs.com/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html
 */
@Entity
@Table(name = "t_employee")
public class Employee {

    private Integer employeeId;
    private String  employeeName;
    private Company company;
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Integer getEmployeeId() {
        return employeeId;
    }
    /**
     * @ManyToOneQ多对一,cascadeQ?请参考上一?
      * fetch = FetchType.LAZY,延迟加蝲{略,如果不想延迟加蝲可以用FetchType.EAGER
     */
    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},fetch = FetchType.LAZY)
    @JoinColumn(name = "cid")
    public Company getCompany() {
        return company;
    }
    public String getEmployeeName() {
        return employeeName;
    }
    public void setEmployeeId(Integer employeeId) {
        this.employeeId = employeeId;
    }
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
    public void setCompany(Company company) {
        this.company = company;
    }
}

 

Company.java

package com.fancy.po;

import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
 * -----------------------------------------
 * @文g: Company.java
 * @作? fancy
 * @邮箱: fancyzero@yeah.net
 * @旉: 2012-6-10
 * @描述: 实体c?
 * -----------------------------------------
 */
/**
 * 下面只说@OneToMany,如需了解其他注解,
 * 可以参考上一:http://www.cnblogs.com/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html
 */
@Entity
@Table(name = "t_company")
public class Company {

    private Integer companyId;
    private String  companyName;
    private Set<Employee> employees;
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Integer getCompanyId() {
        return companyId;
    }
    /**
     * @OneToMany ?OneToOne怼的也用mappedBy,参考了Employee
     * 可以参考上一?
     */
    @OneToMany(mappedBy = "company")
    public Set<Employee> getEmployees() {
        return employees;
    }
    public String getCompanyName() {
        return companyName;
    }
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }
}

 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fancy</groupId>
  <artifactId>hibernate-annotation-many-to-one-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>hibernate-annotation-many-to-one-example</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <dependencies>
    <!-- hibernate jar -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.3.1.ga</version>
    </dependency>
    <!-- hibernate annotation jar -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-annotations</artifactId>
      <version>3.3.1.GA</version>
    </dependency>
    <!-- mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.17</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
</project>


Test.java

package com.fancy.test;

import java.util.Iterator;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.fancy.po.Company;
import com.fancy.po.Employee;
/**
 * -----------------------------------------
 * @文g: Test.java
 * @作? fancy
 * @邮箱: fancyzero@yeah.net
 * @旉: 2012-6-10
 * @描述: 试c?
 * -----------------------------------------
 */
public class Test {

    public static void main(String[] args) {
        //dhibernate配置,默认dclasspath下的hibernate.cfg.xml
        Configuration conf = new AnnotationConfiguration();    
        //构徏session工厂
         SessionFactory sessionFactory = conf.configure().buildSessionFactory();
        //打开session
        Session session = sessionFactory.openSession();
        //开始事?/span>
         session.beginTransaction();
        // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        //test1(session);   //试 1
        //test2(session);  //试  2
        test3(session);   //试   3
        // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        //提交事务
         session.getTransaction().commit();
        //关闭session工厂
         sessionFactory.close();
        //关闭session
        session.close();
    }
    public static void test1(Session session){
        Company company = (Company)session.get(Company.class, 1); //发出Company的select语句
         Set<Employee> employee = company.getEmployees();         //不发出Employee的select语句
         System.out.println("Company Q? + company.getCompanyName());
        System.out.println("CountSumQ? + employee.size()); //Employee初次被?发出select语句
         Iterator<Employee> it = employee.iterator(); //Employee不再发出select语句
         while(it.hasNext()){
          System.out.println("EmployeeNameQ? + it.next().getEmployeeName());
        }
    }
    public static void test2(Session session){
       Company company = (Company)session.get(Company.class, 2);//发出Company的select语句
        Set<Employee> employee = company.getEmployees();        //不发出Employee的select语句
        Iterator<Employee> it = employee.iterator(); //发出Employee的select语句
        Employee e = null;
       Boolean first = false;
       while(it.hasNext()){
          e = it.next();
          if(!first){
              System.out.println("EmployeeIdQ[" + e.getEmployeeId() + "] information will be change");
              e.setEmployeeName("fancy"); //更改雇员名字
            //  session.save(e);  //发出Employee的update语句,不发出Company的update语句
                session.save(company);    //发出Employee的update语句,不发出Company的update语句
                first = true;
            }
            System.out.println("EmployeeNameQ? + e.getEmployeeName());
        }
    }
    public static void test3(Session session){
        Employee employee = (Employee)session.get(Employee.class, 1);//发出Employee的select语句
         Company  company  = (Company)session.get(Company.class, 1);//发出Company的select语句
         company.setCompanyName("Oracle"); //更改公司名字
    //  session.save(company);//发出Company的update语句,不发出Employee的update语句
         session.save(employee);//发出Company的update语句,不发出Employee的update语句
    }
}

 




   [ 转蝲出处Q?a href="http://www.aygfsteel.com/fancydeepin" target="_blank">http://www.aygfsteel.com/fancydeepin ]


]]>
hibernate annotation 双向 one-to-one 注解http://www.aygfsteel.com/wshao/archive/2013/12/31/408250.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:33:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408250.htmlhttp://www.aygfsteel.com/wshao/comments/408250.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408250.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408250.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408250.html
Hibernate 3.3.1 
Maven 3.0.4 
MySQL 5.5.13 
Myeclipse 8.6.1 

 

 语句Q?/p>

DROP TABLE IF EXISTS `t_card`;
CREATE TABLE `t_card` (
  `cardId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `cardNumber` char(18) NOT NULL,
  PRIMARY KEY (`cardId`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312;

INSERT INTO `t_card` VALUES ('1', '440911199008011122');
DROP TABLE IF EXISTS `t_person`;
CREATE TABLE `t_person` (
  `personId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `personName` varchar(15) NOT NULL,
  `cid` int(10) unsigned NOT NULL,
  PRIMARY KEY (`personId`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312;

INSERT INTO `t_person` VALUES ('1', 'fancy', '1');

 

Person.java

package com.fancy.po;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
 * -----------------------------------------
 * @文g: Person.java
 * @作? fancy
 * @邮箱: fancyzero@yeah.net
 * @旉: 2012-6-10
 * @描述: 实体c?
 * -----------------------------------------
 */
/**
 * @Entity 声明一个类为实体Bean
 * @Table(name = "xx")指定实体cL的?如果表名和实体类名一?可以不指?
 */
@Entity
@Table(name = "t_person")
public class Person {

    private Integer personId;
    private String  personName;
    private Card    card;
    /**
     * @Id 映射主键属?q里采用uuid的主键生成策?
      * @GeneratedValue —— 注解声明了主键的生成{略。该注解有如下属?
      * strategy 指定生成的策?默认是GenerationType. AUTO
     * GenerationType.AUTO 主键q序控?
      * GenerationType.TABLE 使用一个特定的数据库表格来保存主键
      * GenerationType.IDENTITY 主键由数据库自动生成,主要是自动增长类?
      * GenerationType.SEQUENCE Ҏ底层数据库的序列来生成主键,条g是数据库支持序列
      * generator 指定生成主键使用的生成器
      */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Integer getPersonId() {
        return personId;
    }
    /**
     * @OneToOneQ一对一兌
      * cascadeQ?它可以有有五个值可?分别是:
      * CascadeType.PERSISTQ联新?
      * CascadeType.REMOVE : U联删除
      * CascadeType.REFRESHQ联刷?
      * CascadeType.MERGE  Q?U联更新
      * CascadeType.ALL    Q?以上全部四项
      * @JoinColumn:主表外键字段
      * cidQPerson所映射的表中的一个字D?
      */
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "cid")
    public Card getCard() {
        return card;
    }
    public String getPersonName() {
        return personName;
    }
    public void setPersonId(Integer personId) {
        this.personId = personId;
    }
    public void setPersonName(String personName) {
        this.personName = personName;
    }
    public void setCard(Card card) {
        this.card = card;
    }
}

 

Card.java

package com.fancy.po;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
 * -----------------------------------------
 * @文g: Card.java
 * @作? fancy
 * @邮箱: fancyzero@yeah.net
 * @旉: 2012-6-10
 * @描述: 实体c?
 * -----------------------------------------
 */
@Entity
@Table(name = "t_card")
public class Card {

    private Integer cardId;
    private String  cardNumber;
    private Person  person;
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Integer getCardId() {
        return cardId;
    }
    /**
     * @OneToOneQ一对一兌
      * mappedBy = "card"Q意思是说这里的一对一配置参考了card
     * card又是什么呢?card是PersoncM的getCard(),注意不是PersoncM?
      * card属?PersoncM的OneToOne配置是在getCard()Ҏ上面配的.
     * 如果PersoncM的getCard()ҎҎgetIdCard(),其他不变的话,
     * q里p写成QmappedBy = "idCard"
     */
    @OneToOne(mappedBy = "card")
    public Person getPerson() {
        return person;
    }
    public String getCardNumber() {
        return cardNumber;
    }
    public void setCardId(Integer cardId) {
        this.cardId = cardId;
    }
    public void setCardNumber(String cardNumber) {
        this.cardNumber = cardNumber;
    }
    public void setPerson(Person person) {
        this.person = person;
    }
}

 

 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fancy</groupId>
  <artifactId>hibernate-annotation-on-to-one-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>hibernate-annotation-on-to-one-example</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <dependencies>
    <!-- hibernate jar -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.3.1.ga</version>
    </dependency>
    <!-- hibernate annotation jar -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-annotations</artifactId>
      <version>3.3.1.GA</version>
    </dependency>
    <!-- mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.17</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
</project>

 

Test.java

package com.fancy.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.fancy.po.Card;
import com.fancy.po.Person;
/**
 * -----------------------------------------
 * @文g: Test.java
 * @作? fancy
 * @邮箱: fancyzero@yeah.net
 * @旉: 2012-6-10
 * @描述: 试c?
 * -----------------------------------------
 */
public class Test {

    public static void main(String[] args) {
        
        //dhibernate配置,默认dclasspath下的hibernate.cfg.xml
        Configuration conf = new AnnotationConfiguration();    
        //构徏session工厂
         SessionFactory sessionFactory = conf.configure().buildSessionFactory();
        //打开session
        Session session = sessionFactory.openSession();
        //开始事?/span>
         session.beginTransaction();
        // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        //test1(session);    //试 1
        //test2(session);    //试 2
        test3(session);      //试 3
        // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        //提交事务
         session.getTransaction().commit();
        //关闭session工厂
         sessionFactory.close();
       //关闭session
       session.close();
    }
    /**
     * 数据库初始|
      * personNameQfancy
     * cardNumberQ?40911199008011122
     */
    //试Ҏ1
    public static void test1(Session session){
        Person person = (Person)session.get(Person.class, 1); //发出Person和Card的select语句
         Card card = person.getCard();
        System.out.println(person.getPersonName());
        System.out.println(card.getCardNumber());
        person.setPersonName("fancy");            //与初始g?/span>
         card.setCardNumber("440911199008011122");//与初始g?/span>
         session.save(person);    //不发出sql语句
       //session.save(card);     //不发出sql语句
    }
    //试Ҏ2
    public static void test2(Session session){
        Person person = (Person)session.get(Person.class, 1); //发出Person和Card的select语句
         Card card = person.getCard();
        System.out.println(person.getPersonName());
        System.out.println(card.getCardNumber());
        person.setPersonName("fancyzero");        //与初始g一?/span>
         card.setCardNumber("440911199008011122");//与初始g?/span>
         session.save(person);    //发出Person的update语句,数据库中personName被修?不发出Card的update语句
       //session.save(card);     //发出Person的update语句,数据库中personName被修?不发出Card的update语句
    }
    //试Ҏ3
    public static void test3(Session session){
        Person person = (Person)session.get(Person.class, 1); //发出Person和Card的select语句
         Card card = person.getCard();
        System.out.println(person.getPersonName());
        System.out.println(card.getCardNumber());
        person.setPersonName("fancy");           //与初始g一?/span>
         card.setCardNumber("440911199008080808");//与初始g一?/span>
         session.save(person);    //同时发出Person和Card的update语句,数据库中的数据相应被修改
       //session.save(card);     //同时发出Person和Card的update语句,数据库中的数据相应被修改
    }
}

 




   [转蝲出处Q?a href="http://www.aygfsteel.com/fancydeepin" target="_blank">http://www.aygfsteel.com/fancydeepin ]



]]>
hibernate annotation ?注解声明http://www.aygfsteel.com/wshao/archive/2013/12/31/408249.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:30:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408249.htmlhttp://www.aygfsteel.com/wshao/comments/408249.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408249.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408249.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408249.html@Entity

     一?POJO cL解成一个实?bean ( 持久?POJO c?)

@Table

    为实?bean 映射指定具体的表Q如果该注解没有被声明,pȝ用默认?( 卛_?bean 不带包名的短cd )

@Id

    实体bean中的某个属性定义ؓ标识W?( identifier )

@GeneratedValue

    该注解可以定义该标识W的生成{略 ( 默认?AUTO {略 ) :

    AUTO — 可以?IDENTITYQ或 SEQUENCE ?TABLE cdQ这取决于不同的底层数据库?br />
    TABLE — 使用表保存id?br />
    IDENTITY — 自然递增

    SEQUENCE — 序列

@Transient

     被注解成 @Transient ?getter Ҏ或属性,不会被持久化,hibernate 会忽略这些字D和属性?br />
@Basic

    所有没有定义注解的属性,{h于在其上面添加了 @Basic 注解.。通过 @Basic注解可以声明属性的获取{略 ( fetch strategy )

@Temporal

    在核心的 Java API 中ƈ没有定义旉_ֺ ( temporal precision )。因此处理时间类型数据时Q你q需要定义将其存储在数据库中所预期的精度?br />
    在数据库中,表示旉cd的数据有 DATEQTIMEQ和 TIMESTAMP 三种_ֺ ( 卛_U的日期Q时_或者两者兼?)?可?@Temporal 注解来调整精度?br />
@Column 

    实?bean 中的属性映到表中的列?br />
    @Column(

        name = "columnName";                                (1)

        boolean unique() default false                 (2)

        boolean nullable() default true               (3)

        boolean insertable() default true           (4)

        boolean updatable() default true           (5)

        String columnDefinition() default ""      (6)

        String table() default ""                               (7)

        int length() default 255                              (8)

        int precision() default 0                             (9)

        int scale() default 0                                     (10)

(1)     name 可选,列名(默认值是属性名)

(2)     unique 可?font size="2">Q?/font>是否在该列上讄唯一U束(默认值false)

(3)     nullable 可?font size="2">Q?/font>是否讄该列的值可以ؓI?默认值true)

(4)     insertable 可?font size="2">Q?/font>该列是否作ؓ生成的insert语句中的一个列(默认值true)

(5)     updatable 可?font size="2">Q?/font>该列是否作ؓ生成的update语句中的一个列(默认值true)

(6)     columnDefinition 可?font size="2">Q?/font>个特定列覆盖SQL DDL片段 (q可能导致无法在不同数据库间UL)

(7)     table 可?font size="2">Q?/font>定义对应的表(默认Z?

(8)     length 可?font size="2">Q?/font>列长?默认?55)

(9)     precision 可?font size="2">Q?/font>列十q制_ֺ(decimal precision)(默认?)

(10)  scale 可?font size="2">Q?/font>如果列十q制数D?decimal scale)可用,在此讄(默认?)

 [ 转蝲出处Q?a href="http://www.aygfsteel.com/fancydeepin" target="_blank">http://www.aygfsteel.com/fancydeepin ]


]]>
hibernate annotation ?主键生成{略http://www.aygfsteel.com/wshao/archive/2013/12/31/408248.html午后星期?/dc:creator>午后星期?/author>Tue, 31 Dec 2013 05:29:00 GMThttp://www.aygfsteel.com/wshao/archive/2013/12/31/408248.htmlhttp://www.aygfsteel.com/wshao/comments/408248.htmlhttp://www.aygfsteel.com/wshao/archive/2013/12/31/408248.html#Feedback0http://www.aygfsteel.com/wshao/comments/commentRss/408248.htmlhttp://www.aygfsteel.com/wshao/services/trackbacks/408248.htmlHibernate 默认d支持 13 U生成策?:

1. increment        2.  identity        3. sequence

4. hilo                  5. seqhilo         6. uuid

7. uuid.hex          8. guid             9. native

10. assigned       11. select         12. foreign        13. sequence-identity

 

下面介绍几个较ؓ常用的策?:

① identity [ 自然递增 ]

         支持 DB2QMySQLQSQL ServerQSybase 和HypersonicSQL 数据库, 用于?long ?short ?int cd生成唯一标识。它依赖于底层不同的数据库,
       ?Hibernate ?E序员无兟?br />

注解CZ :

@Id

@GenericGenerator(name = "idGenerator", strategy = "identity")

@GeneratedValue(generator = "idGenerator")

 

② sequence [ 序列 ]

支持 OracleQDB2QPostgreSqlQSAPDb {数据库Q用于ؓ long ?short ?int cd生成唯一标识。它需要底层数据库的支持,
       q由数据库来l护q个 sequence 序列?/span>

注解CZ :

@Id

   @GenericGenerator(name = "idGenerator", strategy = "sequence",

parameters = {@Parameter(name = "sequence",value="seq_name")})

   @GeneratedValue(generator = "idGenerator")

注意 : 该策略要求设定序列名Q否?hibernate 无法找刎ͼq将引致抛出异常 :

org.hibernate.exception.SQLGrammarException: could not get next sequence value

 

③ native

         需底层数据库的支持Q对?MySQLQSQL Server 采用 identity 的生成策略,对于 OracleQ则采用 sequence {略?/span>

注解CZ :

@Id

   @GenericGenerator(name = "idGenerator", strategy = "native")

   @GeneratedValue(generator = "idGenerator")

 

④ increment [ 自然递增 ]

       ?identity {略不同的是Q该{略不依赖于底层数据库,而依赖于 hibernate 本nQ用于ؓ long ?short ?int cd生成唯一标识?br />       主键计数器是?hibernate 的一个实例来l护Q每ơ自增量?1Q但在集下不能使用该策略,
       否则引起主键冲H的情况Q该{略适用于所有关pd数据库用?/span>

注解CZ :

       @Id

   @GenericGenerator(name = "idGenerator", strategy = "increment")

   @GeneratedValue(generator = "idGenerator")

 

⑤ uuid [ 32?6q制数的字符?]

         采用128位UUID法生成主键Q能够保证网l环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性?br />       uuid 最l被~码成一?2?6q制数的字符Ԍ
       占用的存储空间较大。用于ؓ String cd生成唯一标识Q适用于所有关pd数据库?/span>

注解CZ :

       @Id

   @GenericGenerator(name = "idGenerator", strategy = "uuid")

   @GeneratedValue(generator = "idGenerator")

 

⑤ assigned [ 手工分配主键ID?]

       该策略要求程序员必须自己l护和管理主键,当有数据需要存储时Q程序员必须自己数据分配指定一个主键ID|
       如果该数据没有被分配主键ID值或分配的值存在重复,则该数据都将无法被持久化且会引v异常的抛出?/span>

注解CZ :

       @Id

   @GenericGenerator(name = "idGenerator", strategy = "assigned")

   @GeneratedValue(generator = "idGenerator")


 [转蝲出处Q?a href="http://www.aygfsteel.com/fancydeepin" target="_blank">http://www.aygfsteel.com/fancydeepin ]



]]>
վ֩ģ壺 Ͽ| | | | ²| ɾ| | | ͩ®| ͤ| Ͻ| Ѱ| | | | | лͨ| ɽ| ຣʡ| | | | ʳ| | | | | | | ͼ| ǰ| ̨| | | ɽ| ˺| | | | ƽ| ¬|