布料市場(chǎng)做哪個(gè)網(wǎng)站好代寫(xiě)軟文
JPA教程 - JPA ID自動(dòng)生成器示例
我們可以將id字段標(biāo)記為自動(dòng)生成的主鍵列。 數(shù)據(jù)庫(kù)將在插入時(shí)自動(dòng)為id字段生成一個(gè)值數(shù)據(jù)到表。
例子
下面的代碼來(lái)自Person.java。
package cn.w3cschool.common;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id;@Entity public class Person {@Id@GeneratedValueprivate Long id;private String name;private String surname;public Person() {}public Person(String name, String surname) {this.name = name;this.surname = surname;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSurname() {return surname;}public void setSurname(String surname) {this.surname = surname;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", surname=" + surname + "]";} }
以下代碼來(lái)自App.java。
從代碼中我們可以看到,我們沒(méi)有設(shè)置對(duì)象的id值。
package cn.w3cschool.common;import java.util.List;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");PersonDaoImpl dao = (PersonDaoImpl) context.getBean("personDao");Person peter = new Person("XML", "HTML");Person nasta = new Person("Java", "SQL");dao.save(peter);dao.save(nasta);List<Person> persons = dao.getAll();for (Person person : persons) {System.out.println(person);}context.close();} }
下面的代碼來(lái)自PersonDaoImpl.java。
package cn.w3cschool.common;import java.util.List;import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional public class PersonDaoImpl {@PersistenceContextprivate EntityManager em;public Long save(Person person) {em.persist(person);return person.getId();}public List<Person>getAll() {return em.createQuery("SELECT p FROM Person p", Person.class).getResultList();}}
上面的代碼生成以下結(jié)果。
JPA教程 - JPA ID生成策略示例
當(dāng)使用id字段的自動(dòng)生成值時(shí),我們可以選擇生成策略。我們使用的一個(gè)常見(jiàn)策略是IDENTITY。
例子
以下代碼來(lái)自Professor.java。
package cn.w3cschool.common;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;@Entity public class Professor {@Id @GeneratedValue(strategy=GenerationType.IDENTITY)private int id;private String name;private long salary;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public long getSalary() {return salary;}public void setSalary(long salary) {this.salary = salary;}public String toString() {return "Employee id: " + getId() + " name: " + getName() + " salary: "+ getSalary();} }
以下代碼來(lái)自App.java。
package cn.w3cschool.common;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");PersonDaoImpl dao = (PersonDaoImpl) context.getBean("personDao");dao.test();context.close();Helper.checkData();} }
下面的代碼來(lái)自PersonDaoImpl.java。
package cn.w3cschool.common;import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional public class PersonDaoImpl {public void test() {Professor emp = new Professor();emp.setName("name");emp.setSalary(12345);em.persist(emp);}@PersistenceContextprivate EntityManager em; }
這里是數(shù)據(jù)庫(kù)表轉(zhuǎn)儲(chǔ)。
Table Name: PROFESSORRow:Column Name: ID,Column Type: INTEGER:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: nameColumn Name: SALARY,Column Type: BIGINT:Column Value: 12345
?
以