准备:建表
用MySQL在名为STMS数据库中建表person
在MyEclipse中建连接数据库的连接名为MySQL_localhost,在Driver JARS中导入MySQL的驱动程序mysql-connector-java-5.1.6-bin.jar
一.新建名为MySQLHibernate的Web Project
File—new—project—MyEclipse—Java Enterprice Projects—Web Project(Optional Maven Support)
在Project Name中输入MySQLHibernate---点击Finsh完成
1
xml version='1.0' encoding='UTF-8'?>2DOCTYPE hibernate-configuration PUBLIC3
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"4
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">5
6
7
8
9
10
11
rootproperty>12
13
14
15
jdbc:mysql://localhost:3306/STMS?useUnicode=true&characterEncoding=GBK16
property>17
18
19
20
org.hibernate.dialect.MySQLDialect21
property>22
23
24
25
MySql_localhost26
property>27
28
29
rootproperty>30
31
32
33
com.mysql.jdbc.Driver34
property>35
36
37
trueproperty>38
39
40
41
42
session-factory>43
44
hibernate-configuration>
二:给项目加入Hibernate支持
选中刚刚新建的项目—MyEcplipse—Project Capabilites—Add Hibernate Capabilites
Next—Next—选择连接数据库的连接名—Next--
点击Finash完成
三:建立Person表的POJO类
1
package
org.lxh.hibernate.demo01;
2
3
/**4 *@author∪∩BUG E-mail: tidelgl@163.com5
*@versionAug 30, 2008 8:05:41 AM6
* @person表的POJO类,类名与表名相同7
*/
8
public
class
Person
{910
//以下的属性与Person表中的字段名相同11
privateString id;12
privateString name;13
privateString password;14
privateString sex;15
privateString email;16
17
publicString getId(){18
returnid;19
}20
21
publicvoidsetId(String id){22
this.id=id;23
}24
25
publicString getName(){26
returnname;27
}28
29
publicvoidsetName(String name){30
this.name=name;31
}32
33
publicString getPassword(){34
returnpassword;35
}36
37
publicvoidsetPassword(String password){38
this.password=password;39
}40
41
publicString getSex(){42
returnsex;43
}44
45
publicvoidsetSex(String sex){46
this.sex=sex;47
}48
49
publicString getEmail(){50
returnemail;51
}52
53
publicvoidsetEmail(String email){54
this.email=email;55
}56
57
}
58
四:通过Hibernate反向工程建立person表与Person类的映射
首先调出DB Browser视图(Windows—view show—other—MyEclipse datebase—DB Browser)—展开MySQL_localhost至表person—右键表person—Hibernate Reverse Engineering
Finash完成
1
xml version="1.0" encoding="utf-8"?>2DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"3
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">4
7
8
13
14
15
16
17
18
id>19
20
21
property>22
23
24
property>25
class>26
hibernate-mapping>27
五:建立具体操作Hibernate的类
src/org.lxh.hibernate.demo01.PersonOperate.java
1
package
org.lxh.hibernate.demo01;
2
3
import
java.util.Iterator;
4
import
java.util.List;
5
6
import
org.hibernate.Query;
7
import
org.hibernate.Session;
8
import
org.hibernate.SessionFactory;
9
import
org.hibernate.Transaction;
10
import
org.hibernate.cfg.Configuration;
11
12
/**13 *@author∪∩BUG E-mail: tidelgl@163.com14
*@versionAug 30, 2008 8:27:53 AM15
* @ 具体操作Hibernate的类16
* @ 功能:增加,删除,个性,按ID查询,模糊查询,查询全部操作17
* @注意导入的包:从org.hibernate.*;18
*/
19
public
class
PersonOperate
{20//在Hibernate中所有的操作都是通过Session来完成21
privateSession session=null;22
23
//Session 是一个接口,必须实例化24
//在构造方法中实例实化Session对象25
publicPersonOperate(){26
//找到Hibernate配置文件27
Configuration config=newConfiguration().configure();28
29
//从全局配置文件中取出SessionFactory30
SessionFactory factory=config.buildSessionFactory();31
32
//从SessionFactory中取出一个Session33
this.session=factory.openSession();34
35
}36
37
//所有的操作都是通过Session进行38
//(1)实现向数据库中插入数据39
publicvoidinsert(Person p){40
//1.开始事务41
Transaction tran=this.session.beginTransaction();42
43
//2.执行语句44
this.session.save(p);45
46
//提交事务47
tran.commit();48
}49
50
//(2)实现修改数据库的数据51
publicvoidupdate(Person p){52
//1.开始事务53
Transaction tran=this.session.beginTransaction();54
55
//2.执行语句56
this.session.update(p);57
58
//提交事务59
tran.commit();60
61
}62
63
//(3)实现查询数据库的数据64
//使用HQL按ID查询65
publicPerson queryById(String id){66
Person p=null;67
68
//使用Hibernate查询语句(HQL)69
String hql="From Person as p where p.id=?";//从Person类中对象p的id查70
71
//通过Query接口查询72
Query q=this.session.createQuery(hql);73
q.setString(0, id);//下标从0开始(id是第一个属性)74
List l=q.list();//导入的包是 java.util.List;75
Iterator iter=l.iterator();76
if(iter.hasNext()){77
p=(Person) iter.next();78
}79
returnp;80
}81
82
//(4)实现删除数据库的数据83
publicvoiddelete(Person p){84
//1.开始事务85
Transaction tran=this.session.beginTransaction();86
87
//2.执行语句88
this.session.delete(p);89
90
//提交事务91
tran.commit();92
93
}94
95
//通过HQL语句实现删除数据库的数据(推荐)96
publicvoiddelete(String id){97
String hql="delete Person where id=?";98
Query q=this.session.createQuery(hql);99
//设置参数100
q.setString(0, id);101
//执行更新语句102
q.executeUpdate();103
//提交事务处理104
this.session.beginTransaction().commit();105
106
}107
108
//通过HQL查询全部数据109
publicList queryAll(){110
List l=null;111
String hql="From Person as p";112
Query q=this.session.createQuery(hql);113
l=q.list();114
returnl;115
}116
117
//通过HQL查询全部数据118
publicList queryByLike(String cond){119
List l=null;120
//条件121
String hql="From Person as p where p.name like ?";122
Query q=this.session.createQuery(hql);123
//设置参数124
q.setString(0,"%"+cond+"%");125
l=q.list();126
returnl;127
}128
129
}
130
六:建立测试类
src/org.lxh.hibernate.demo01.TestPO.java
1
package
org.lxh.hibernate.demo01;
2
3
import
java.util.Iterator;
4
import
java.util.List;
5
6
/**7 *@author∪∩BUG E-mail: tidelgl@163.com8
*@versionAug 29, 2008 9:53:52 PM9
* @POJO类的测试类10
*/
11
public
class
TestPO
{1213
/**14
*@paramargs15
*/16
publicstaticvoidmain(String[] args){17
18
//生成POJO类实例化对象19
Person p=newPerson();20
21
//p.setId("Hibernate");22
//p.setId("MySQL");23
//p.setName("学习笔记");24
p.setName("使用用Hibernate");25
p.setPassword("123");26
p.setEmail("tidelgl@163.com");27
p.setSex("男");28
29
//实例化PersonOperate对象30
PersonOperate po=newPersonOperate();31
32
//1.插入数据33
//po.insert(p);34
35
//2.修改数据36
//po.update(p);37
38
//3.查询数据39
//Person p = po.queryById("Hibernate");40
//System.out.println(p.getName());41
42
//通过HQL查询全部数据43
//List l = po.queryAll();44
//通过HQL模糊查询45
//List l = po.queryByLike("用");46
//Iterator iter = l.listIterator();47
//while(iter.hasNext()){48
//Person p = (Person)iter.next();49
//System.out.println(p.getName());50
//51
//}52
53
//4.删除数据54
//po.delete(p);//通过查询结果删除55
//po.delete("Hibernate");//通过HQL语句删除56
57
58
}59
60
}
例子结构:
61