这个就要借助hibernate tools跟xdoclet来完成了;
成都创新互联公司是一家专注于成都网站设计、网站制作与策划设计,青海网站建设哪家好?成都创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:青海等地区。青海做网站价格咨询:18980820575
首先你要在你的java代码里应用xdoclet标签,例如
Java code
private String name;
/**
* @hibernate.property column = "name" length = "50"
*/
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
其中,写到javadoc上的@hibernate.property column = "name" length = "50"
就是xdoclet标签,它需要xdoclet程序来处理,这里就需要用到hibernate tools。
具体做的话一般情况是建一个ant脚本来完成,例如:
XML code
target name="hibernate-xdoclet" depends="init, init-xdoclet_hibernate"
description="Generate mapping documents"
echo+---------------------------------------------------+/echo
echo| |/echo
echo| R U N N I N G H I B E R N A T E D O C L E T |/echo
echo| |/echo
echo+---------------------------------------------------+/echo
delete
fileset dir="${hibernate.cfg.xml.dir}" includes="hibernate.cfg.xml" /
/delete
echo message="hibernate.cfg.xml at ${hibernate.cfg.xml.dir}"/echo
sleep seconds="1"/
hibernatedoclet
destdir="${hibernate.cfg.xml.dir}"
excludedtags="@version,@author,@todo,@see"
addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"
force="false"
verbose="true"
fileset dir="${src.dir}"
include name="com/**/model/**/*.java"/
/fileset
hibernatecfg
version="3.0"
destDir="${hibernate.cfg.xml.dir}"
dialect="org.hibernate.dialect.Oracle9Dialect"
driver="oracle.jdbc.driver.OracleDriver"
jdbcUrl="jdbc:oracle:thin:@localhost:1521:RESDL"
userName="test"
password="123"
showSql="true"
schema="true"
validateXML="true"
/
hibernate version="3.0"/
/hibernatedoclet
/target
上面的代码是生成hbm跟cfg文件的,下面再介绍如何从java类到数据库:
XML code
target name="hibernate-schema" depends="init, init-hibernate-schema"
description="Generate DB schema from the O/R mapping files"
echo+---------------------------------------------------+/echo
echo| |/echo
echo| R U N N I N G D B S C H E M A |/echo
echo| |/echo
echo+---------------------------------------------------+/echo
echo message="mysql.sql at etc/hbm2doc"/echo
sleep seconds="1"/
hibernatetool destdir="etc/hbm2doc"
configuration propertyFile="${src.dir}/hibernate.properties"
fileset dir="${hibernate.cfg.xml.dir}"
include name="com/**/model/**/*.hbm.xml"/
/fileset
/configuration
hbm2ddl drop="true"
outputfilename="mysql.sql"/
hbm2doc/
/hibernatetool
/target
用java.util.Radom类中的方法.
Random rd=new Random();
int persion_id=rd.nextInt(10);//这样可以得到0-10之间的一个随机数(假如总共有十个学生.)
然后用,threeStudent.add(students[stu_id])实现.
有了这个以后,就好说了.循环取得三个学生.送到threeStudent中去.
public void chooseThree()
{
Random rd=new Random();
for(int i=0;i3;i++)
{
threeStudent.add(students[stu_id]);
}
}
祝你好运...
完整代码为:
public class Main {
public static void main(String[] args) {
int index = 1;
int[] redBalls = new int[6];
Random random = new Random();
boolean getMoreRed = true;
boolean getAgain;
System.out.println("开始抽取红球!");
while (getMoreRed) {
getAgain = false;
int red = random.nextInt(36) + 1;
System.out.print("本次抽取到的红球为:[" + red + "]!");
for (int i = 0; i index; i++) {
if (redBalls[i] == red) {
System.out.print("重复抽取,将重新抽取红球");
getAgain = true;
break;
}
}
System.out.println("");
if (getAgain){
continue;
}
redBalls[index - 1] = red;
index++;
getMoreRed = index 7;
}
System.out.println("抽取到的红球为:");
Arrays.sort(redBalls);
for (int redBall : redBalls) {
System.out.print(redBall + " ");
}
System.out.println("\n\n开始抽取蓝球!");
System.out.println("本次抽取到的蓝球为:[" + (random.nextInt(16) + 1) + "]!");
}
}
运行结果:
普通抽取:
重复时抽取:
就是重构-抽取方法,简单来说就是把部分相关代码抽取出来成为一个方法,原来代码的位置改由调用该方法来代替。
如果你使用如Eclipse这种IDE,你可以通过选择要抽取的代码,鼠标右键选择重构-抽取方法,按照步骤给方法命名,确认,IDE就会帮你自动地把代码抽取出来形成一个私有的方法,原来的位置就会被调用这个方法的代码代替。
虽然操作步骤很简单,也就是把代码换个位置写,但实际隐含着程序设计的合理性和细粒度的考虑:
很明显你的代码里有超长的方法,一般方法会控制在10行以内,超过10行就可以认为有代码是可以提取出来成为公用方法的。超长的方法常常意味着高耦合、低内聚,重用性差和该类的职责太多。举个例子:
你的Servlet方法可能干了很多响应用户的操作,但有可能Servlet的另一个方法需要做其中一部分相同的操作,或者另外一个Servlet(一个Web应用有多个Servlet很正常)也需要同样的操作,更甚是一个本地的控制台应用程序(Servlet是属于会话层的,桌面应用程序一般不需要会话层)也需要做同样操作。这时候你会发现写在你的Servlet的代码只能拷贝到另一个程序中,或者压根就得重写,效率很低而且这样你的代码里会有很多重复代码...以后改一下就得改3个地方,不可维护的代码就是这样来的。同时你的超长方法也是难以理解的。
如何把握好程序的合理性需要很多的经验和设计技巧,这里就不提及了。有兴趣可以向着面向对象程序设计这个方向钻研。