1.1 程序员自己控制:assigned 1.2 数据库控制: identity(标识列/自动增长) sequence 1.3 hibernate控制:increment uuid/uuid.hex 1.4 其它:native 公司名_模块名_时间戳
entity(实体类) Student 代码:
package com.pengyuxuan.two.entity; public class Student { private Integer sid; private String sname; public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } @Override public String toString() { return "Student [sid=" + sid + ", sname=" + sname + "]"; } public Student(Integer sid, String sname) { this.sid = sid; this.sname = sname; } public Student() { } }Worker 代码:
package com.pengyuxuan.two.entity; public class Worker { private String wid; private String wname; public String getWid() { return wid; } public void setWid(String wid) { this.wid = wid; } public String getWname() { return wname; } public void setWname(String wname) { this.wname = wname; } public Worker(String wid, String wname) { this.wid = wid; this.wname = wname; } public Worker() { } @Override public String toString() { return "Worker [wid=" + wid + ", wname=" + wname + "]"; } }Student.hbm.xml 代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.pengyuxuan.two.entity.Student" table="t_hibernate_student"> <id name="sid" type="java.lang.Integer" column="sid"> <generator class="assigned" /> <!-- <generator class="increment" /> --> <!-- <generator class="sequence" /> --> <!-- <generator class="sequence" > <param name="sequence_name">aaa</param> </generator> --> <!-- <generator class="com.javaxl.two.id.Myts" /> --> </id> <property name="sname" type="java.lang.String" column="sname"> </property> </class> </hibernate-mapping>Worker.hbm.xml 代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.pengyuxuan.two.entity.Worker" table="t_hibernate_worker"> <id name="wid" type="java.lang.String" column="wid"> <!-- <generator class="assigned" />--> <generator class="com.pengyuxuan.two.ID.MyTsGenerator" /> <!-- <generator class="sequence" /> --> <!-- <generator class="sequence" > <param name="sequence_name">aaa</param> </generator> --> <!-- <generator class="com.javaxl.two.id.Myts" /> --> </id> <property name="wname" type="java.lang.String" column="wname"> </property> </class> </hibernate-mapping>DemoDao 代码:
package com.pengyuxuan.two.dao; import org.hibernate.Session; import org.hibernate.Transaction; import com.pengyuxuan.two.entity.Student; import com.pengyuxuan.two.entity.Worker; import com.pengyuxuan.two.util.SessionFactoryUtils; public class DemoDao { /** * 新增学生 * @param stu */ public void addStudent(Student stu) { Session session = SessionFactoryUtils.openSession(); Transaction transaction = session.beginTransaction(); session.save(stu); transaction.commit(); SessionFactoryUtils.closeSession(); } /** * 新增工人 * @param worker */ public void addWorker(Worker worker) { Session session = SessionFactoryUtils.openSession(); Transaction transaction = session.beginTransaction(); session.save(worker); transaction.commit(); SessionFactoryUtils.closeSession(); } public static void main(String[] args) { DemoDao dao=new DemoDao(); // 第一种 assigned 程序员自己控制 // Student stu=new Student(); // stu.setSname("风琴杨"); // stu.setSid(72); // dao.addStudent(stu); // 第二种 identity 数据库控制 // Student stu2=new Student(); // stu2.setSname("林肯"); // stu2.setSid(79); // dao.addStudent(stu2); // 第三种 increment hibernate控制 Worker stu3=new Worker(); Worker worker=new Worker(); worker.setWname("德州"); dao.addWorker(worker); } }运行效果 MyTsGenerator 代码:
package com.pengyuxuan.two.ID; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import org.hibernate.HibernateException; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.id.IdentifierGenerator; import com.pengyuxuan.two.dao.DemoDao; import com.pengyuxuan.two.entity.Worker; public class MyTsGenerator implements IdentifierGenerator { @Override public Serializable generate (SharedSessionContractImplementor session, Object object) throws HibernateException { // TODO Auto-generated method stub SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return "book_order_"+sdf.format(new Date()); } public static void main(String[] args) { DemoDao dao=new DemoDao(); Worker worker=new Worker(); worker.setWname("德州"); dao.addWorker(worker); } }把Worker.hbm.xml的配置文件改为
<generator class="com.pengyuxuan.two.ID.MyTsGenerator" />效果:
