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

1 xmlversion='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类

1 package org.lxh.hibernate.demo01; 2 3 /** 4*@author∪∩BUGE-mail:[email protected] 5*@versionAug30,20088:05:41AM 6*@person表的POJO类,类名与表名相同 7*/ 8 public class Person { 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完成

1 xmlversion="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

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∪∩BUGE-mail:[email protected] 14*@versionAug30,20088:27:53AM 15*@具体操作Hibernate的类 16*@功能:增加,删除,个性,按ID查询,模糊查询,查询全部操作 17*@注意导入的包:从org.hibernate.*; 18*/ 19 public class PersonOperate { 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

1 package org.lxh.hibernate.demo01; 2 3 import java.util.Iterator; 4 import java.util.List; 5 6 /** 7*@author∪∩BUGE-mail:[email protected] 8*@versionAug29,20089:53:52PM 9*@POJO类的测试类 10*/ 11 public class TestPO { 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("[email protected]"); 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

例子结构:

你可能感兴趣的:(struts2)