happy_boy 发表于 2016-10-23 06:10:21

Hibernate学习笔记(一)--用MyEclipse 6.5+MySQL 5.0的环境跑起来

  




  准备:建表

  用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完成



1xmlversion='1.0'encoding='UTF-8'?>
2DOCTYPEhibernate-configurationPUBLIC
3"-//Hibernate/HibernateConfigurationDTD3.0//EN"
4"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
56
7<hibernate-configuration>
8
9<session-factory>
10
11<propertyname="connection.username">rootproperty>
1213
14<propertyname="connection.url">
15jdbc:mysql://localhost:3306/STMS?useUnicode=true&characterEncoding=GBK
16property>
1718
19<propertyname="dialect">
20org.hibernate.dialect.MySQLDialect
21property>
2223
24<propertyname="myeclipse.connection.profile">
25MySql_localhost
26property>
2728
29<propertyname="connection.password">rootproperty>
3031
32<propertyname="connection.driver_class">
33com.mysql.jdbc.Driver
34property>
3536
37<propertyname="show_sql">trueproperty>
3839
40<mappingresource="org/lxh/hibernate/demo01/Person.hbm.xml"/>
4142session-factory>
4344hibernate-configuration>


  二:给项目加入Hibernate支持

  选中刚刚新建的项目—MyEcplipse—Project Capabilites—Add Hibernate Capabilites



  Next—Next—选择连接数据库的连接名—Next--





  点击Finash完成

  三:建立Person表的POJO类



1packageorg.lxh.hibernate.demo01;
23/**
4*@author∪∩BUGE-mail:tidelgl@163.com
5*@versionAug30,20088:05:41AM
6*@person表的POJO类,类名与表名相同
7*/
8publicclassPerson{
910//以下的属性与Person表中的字段名相同
11privateStringid;
12privateStringname;
13privateStringpassword;
14privateStringsex;
15privateStringemail;
1617publicStringgetId(){
18returnid;
19}
2021publicvoidsetId(Stringid){
22this.id=id;
23}
2425publicStringgetName(){
26returnname;
27}
2829publicvoidsetName(Stringname){
30this.name=name;
31}
3233publicStringgetPassword(){
34returnpassword;
35}
3637publicvoidsetPassword(Stringpassword){
38this.password=password;
39}
4041publicStringgetSex(){
42returnsex;
43}
4445publicvoidsetSex(Stringsex){
46this.sex=sex;
47}
4849publicStringgetEmail(){
50returnemail;
51}
5253publicvoidsetEmail(Stringemail){
54this.email=email;
55}
5657}
58


  四:通过Hibernate反向工程建立person表与Person类的映射

  首先调出DB Browser视图(Windows—view show—other—MyEclipse datebase—DB Browser)—展开MySQL_localhost至表person—右键表person—Hibernate Reverse Engineering



  Finash完成

1xmlversion="1.0"encoding="utf-8"?>
2DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4
7<hibernate-mapping>
8
13<classname="Dao.Student"table="student"catalog="stms">
14<idname="sno"type="java.lang.String">
15<columnname="Sno"length="20"/>
16
17<generatorclass="increment"/>
18id>
19<propertyname="sname"type="java.lang.String">
20<columnname="Sname"length="20"not-null="true"/>
21property>
22<propertyname="password"type="java.lang.String">
23<columnname="Password"length="20"/>
24property>
25class>
26hibernate-mapping>
27


  五:建立具体操作Hibernate的类
src/org.lxh.hibernate.demo01.PersonOperate.java

1packageorg.lxh.hibernate.demo01;
23importjava.util.Iterator;
4importjava.util.List;
56importorg.hibernate.Query;
7importorg.hibernate.Session;
8importorg.hibernate.SessionFactory;
9importorg.hibernate.Transaction;
10importorg.hibernate.cfg.Configuration;
1112/**
13*@author∪∩BUGE-mail:tidelgl@163.com
14*@versionAug30,20088:27:53AM
15*@具体操作Hibernate的类
16*@功能:增加,删除,个性,按ID查询,模糊查询,查询全部操作
17*@注意导入的包:从org.hibernate.*;
18*/
19publicclassPersonOperate{
20//在Hibernate中所有的操作都是通过Session来完成
21privateSessionsession=null;
2223//Session是一个接口,必须实例化
24//在构造方法中实例实化Session对象
25publicPersonOperate(){
26//找到Hibernate配置文件
27Configurationconfig=newConfiguration().configure();
2829//从全局配置文件中取出SessionFactory
30SessionFactoryfactory=config.buildSessionFactory();
3132//从SessionFactory中取出一个Session
33this.session=factory.openSession();
3435}
3637//所有的操作都是通过Session进行
38//(1)实现向数据库中插入数据
39publicvoidinsert(Personp){
40//1.开始事务
41Transactiontran=this.session.beginTransaction();
4243//2.执行语句
44this.session.save(p);
4546//提交事务
47tran.commit();
48}
4950//(2)实现修改数据库的数据
51publicvoidupdate(Personp){
52//1.开始事务
53Transactiontran=this.session.beginTransaction();
5455//2.执行语句
56this.session.update(p);
5758//提交事务
59tran.commit();
6061}
6263//(3)实现查询数据库的数据
64//使用HQL按ID查询
65publicPersonqueryById(Stringid){
66Personp=null;
6768//使用Hibernate查询语句(HQL)
69Stringhql="FromPersonaspwherep.id=?";//从Person类中对象p的id查
7071//通过Query接口查询
72Queryq=this.session.createQuery(hql);
73q.setString(0,id);//下标从0开始(id是第一个属性)
74Listl=q.list();//导入的包是java.util.List;
75Iteratoriter=l.iterator();
76if(iter.hasNext()){
77p=(Person)iter.next();
78}
79returnp;
80}
8182//(4)实现删除数据库的数据
83publicvoiddelete(Personp){
84//1.开始事务
85Transactiontran=this.session.beginTransaction();
8687//2.执行语句
88this.session.delete(p);
8990//提交事务
91tran.commit();
9293}
9495//通过HQL语句实现删除数据库的数据(推荐)
96publicvoiddelete(Stringid){
97Stringhql="deletePersonwhereid=?";
98Queryq=this.session.createQuery(hql);
99//设置参数
100q.setString(0,id);
101//执行更新语句
102q.executeUpdate();
103//提交事务处理
104this.session.beginTransaction().commit();
105106}
107108//通过HQL查询全部数据
109publicListqueryAll(){
110Listl=null;
111Stringhql="FromPersonasp";
112Queryq=this.session.createQuery(hql);
113l=q.list();
114returnl;
115}
116117//通过HQL查询全部数据
118publicListqueryByLike(Stringcond){
119Listl=null;
120//条件
121Stringhql="FromPersonaspwherep.namelike?";
122Queryq=this.session.createQuery(hql);
123//设置参数
124q.setString(0,"%"+cond+"%");
125l=q.list();
126returnl;
127}
128129}
130


  
六:建立测试类
src/org.lxh.hibernate.demo01.TestPO.java

1packageorg.lxh.hibernate.demo01;
23importjava.util.Iterator;
4importjava.util.List;
56/**
7*@author∪∩BUGE-mail:tidelgl@163.com
8*@versionAug29,20089:53:52PM
9*@POJO类的测试类
10*/
11publicclassTestPO{
1213/**
14*@paramargs
15*/
16publicstaticvoidmain(String[]args){
1718//生成POJO类实例化对象
19Personp=newPerson();
2021//p.setId("Hibernate");
22//p.setId("MySQL");
23//p.setName("学习笔记");
24p.setName("使用用Hibernate");
25p.setPassword("123");
26p.setEmail("tidelgl@163.com");
27p.setSex("男");
2829//实例化PersonOperate对象
30PersonOperatepo=newPersonOperate();
3132//1.插入数据
33//po.insert(p);
3435//2.修改数据
36//po.update(p);
3738//3.查询数据
39//Personp=po.queryById("Hibernate");
40//System.out.println(p.getName());
4142//通过HQL查询全部数据
43//Listl=po.queryAll();
44//通过HQL模糊查询
45//Listl=po.queryByLike("用");
46//Iteratoriter=l.listIterator();
47//while(iter.hasNext()){
48//Personp=(Person)iter.next();
49//System.out.println(p.getName());
50//
51//}
5253//4.删除数据
54//po.delete(p);//通过查询结果删除
55//po.delete("Hibernate");//通过HQL语句删除
56
5758}
5960}
61


  例子结构:

页: [1]
查看完整版本: Hibernate学习笔记(一)--用MyEclipse 6.5+MySQL 5.0的环境跑起来