创建工程如图:
某些jar包不一定有用到。
SQL:
create table tb_animal
(
id integer primary key auto_increment,
name varchar(20) not null
);
mysql.hibernate.cfg.xml:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/animal</property>
<property name="connection.username">root</property>
<property name="connection.password">root123</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
<property name="hibernate.show_sql">true </property>
<property name="jdbc.fetch_size">50</property>
<mapping resource="com/animal/pojo/Animal.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Animal:
package com.animal.pojo;
public class Animal {
private int id;
private String name;
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;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.animal.pojo">
<class name="Animal" table="tb_animal">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" />
</class>
<query name="getAnimalById">
from Animal where id=?
</query>
<sql-query name="getAnimalByName">
select * from tb_animal where name=?
</sql-query>
</hibernate-mapping>
测试:
package com.animal.test;
import java.util.List;
import java.util.Random;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import com.animal.pojo.Animal;
import junit.framework.TestCase;
public class TestAnimal extends TestCase {
private Session session = null;
private static final String mysqlCfgName = "/mysql.hibernate.cfg.xml";
private static final SessionFactory factory = new Configuration().configure(mysqlCfgName).buildSessionFactory();
private Transaction tran = null;
@Override
protected void setUp() throws Exception {
session = factory.openSession();
tran = session.beginTransaction();
}
public void testInsertAnimal() {
for (int i = 0; i < 10; i++) {
Animal animal = new Animal();
animal.setName("animal_" + i);
session.save(animal);
}
tran.commit();
}
public void testHQL() {
// from后面是对象,不是表名
String hql = "from Animal where id=?";
Query query = session.createQuery(hql);
query.setInteger(0, 1);
List<Animal> list = query.list();
out(list);
}
public void testCriteria() {
Criteria criteria = session.createCriteria(Animal.class);
criteria.add(Restrictions.eq("id", 1));
List<Animal> list = criteria.list();
out(list);
}
public void testDetachedCriteria() {
DetachedCriteria dc = DetachedCriteria.forClass(Animal.class);
dc.add(Restrictions.eq("id", 1));
Criteria criteria = dc.getExecutableCriteria(session);
List<Animal> list = criteria.list();
out(list);
}
public void testSQLQuery() {
// from后面是表名,不是对象
String queryString = "select * from tb_animal where id=?";
SQLQuery query = session.createSQLQuery(queryString);
query.addEntity(Animal.class);
query.setInteger(0, 1);
List<Animal> list = query.list();
out(list);
}
public void testNamedQuery() {
Query query = session.getNamedQuery("getAnimalById");
query.setInteger(0, 1);
List<Animal> list = query.list();
out(list);
}
public void testNamedSQLQuery() {
Query query = session.getNamedQuery("getAnimalByName");
query.setString(0, "animal_1");
List<?> list = query.list();
for (int i = 0; i < list.size(); i++) {
Object[] objs = (Object[]) list.get(i);
System.out.println(objs[0] + ", " + objs[1]);
}
}
public void testUpdate() {
Random random = new Random();
Animal animal = new Animal();
animal.setId(1);
animal.setName("u_animal_" + random.nextInt(10));
session.saveOrUpdate(animal);
tran.commit();
}
public void testDelete() {
Animal animal = new Animal();
animal.setId(10);
session.delete(animal);
tran.commit();
}
@Override
protected void tearDown() throws Exception {
tran = null;
session.close();
session = null;
}
private void out(List<Animal> list) {
if (list == null) {
return;
}
for (Animal animal : list) {
System.out.println(animal.getId() + ", " + animal.getName());
}
}
}
package com.animal.test;
import junit.framework.Test;
import junit.framework.TestSuite;
public class TestAll {
public static Test suite() {
TestSuite testSuite = new TestSuite();
testSuite.addTestSuite(TestAnimal.class);
return testSuite;
}
}