|
数据库用的是mysql5.0;
脚本如下:
use test;
create table person
(
id int AUTO_INCREMENT primary key,
username varchar(20),
password varchar(20)
);
![](/Images/OutliningIndicators/None.gif)
insert into person values(null,'ts','ts');
![](/Images/OutliningIndicators/None.gif)
实体类用Annotation映射,代替hbm.
package com.vo;
![](/Images/OutliningIndicators/None.gif)
import java.io.Serializable;
![](/Images/OutliningIndicators/None.gif)
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) @SuppressWarnings( { "unchecked", "serial" })
@Entity //标识是一个实体
@Table(name="person") //映射表
public class Person implements Serializable
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
//主键映射
@Id
//主键自增
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
//@Column(name="username"),对于列,可映射也可以不映射.注意保持列名和属性名一致就行
private String username;
private String password;
![](/Images/OutliningIndicators/InBlock.gif)
public Integer getId()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
return id;
}
![](/Images/OutliningIndicators/InBlock.gif)
public void setId(Integer id)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
this.id = id;
}
![](/Images/OutliningIndicators/InBlock.gif)
public String getUsername()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
return username;
}
![](/Images/OutliningIndicators/InBlock.gif)
public void setUsername(String username)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
this.username = username;
}
![](/Images/OutliningIndicators/InBlock.gif)
public String getPassword()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
return password;
}
![](/Images/OutliningIndicators/InBlock.gif)
public void setPassword(String password)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
this.password = password;
}
}
![](/Images/OutliningIndicators/None.gif)
hibernate.cfg.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="show_sql">true</property>
<!-- 实体类映射 -->
<mapping class="com.vo.Person"/>
</session-factory>
</hibernate-configuration>
测试类:
package com.test;
![](/Images/OutliningIndicators/None.gif)
import java.util.List;
![](/Images/OutliningIndicators/None.gif)
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import com.vo.Person;
![](/Images/OutliningIndicators/None.gif)
public class PersonTest
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
private Session session;
private Transaction tx;
![](/Images/OutliningIndicators/InBlock.gif)
@Before
public void before()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
session = new AnnotationConfiguration().configure()
.buildSessionFactory().openSession();
tx = session.getTransaction();
}
![](/Images/OutliningIndicators/InBlock.gif)
@After
public void after()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
session.close();
}
![](/Images/OutliningIndicators/InBlock.gif)
@Test
public void testSave()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
tx.begin();
Person person = new Person();
person.setUsername("zdw");
person.setPassword("admin");
session.save(person);
tx.commit();
}
@Test
public void testUpdate()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
tx.begin();
Person person = (Person) session.load(Person.class, 1);
person.setPassword("test");
session.update(person);
tx.commit();
}
@SuppressWarnings("unchecked")
@Test
public void testQueryAll()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
List<Person> persons = session.createCriteria(Person.class).list();
assertNotNull(persons);
}
@Test
public void testDelete()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
Person person = (Person) session.load(Person.class, 1);
session.delete(person);
}
}
![](/Images/OutliningIndicators/None.gif)
经测试,增删改查全部正常.
这样的确很方便了.
源码可以在我的网盘下载. 点此下载
|