數據庫是mysql
1.建表
DROP TABLE person ;
CREATE TABLE person
(
id varchar(32) not null primary key ,
name varchar(20) not null ,
password varchar(20) not null ,
sex varchar(2) ,
email varchar(30)
) ;
-- 事務提交:
commit ;
2.引入包
3.寫POJO類
package com.test.model;
public class Person {
private String id;
private String name;
private String password;
private String sex;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
4.寫POJO類的配置文件Person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.test.model">
<class name="Person" table="person">
<id name="id" column="id" type="string">
<generator class="assigned"></generator>
</id>
<property name="name"></property>
<property name="password"></property>
<property name="sex"></property>
<property name="email"></property>
</class>
</hibernate-mapping>
5.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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="show_sql">
true
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.driver_class">
org.gjt.mm.mysql.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost/test
</property>
<property name="connection.username">
root
</property>
<property name="connection.password">
system
</property>
<mapping resource="com/test/model/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
6.操作文件 PersonOperate .java
package com.test.model;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class PersonOperate {
// 在Hibernate中,所有的操作都是通過Session完成
// 此Session不同於JSP的Session
private Session session = null ;
// 在構造方法之中實例化session對象
public PersonOperate()
{
// 找到Hibernate配置
Configuration config = new Configuration().configure() ;
// 從配置中取出SessionFactory
SessionFactory factory = config.buildSessionFactory() ;
// 從SessionFactory中取出一個Session
this.session = factory.openSession() ;
}
// 所有的操作都是通過session進行的
// 向數據庫中增加數據
public void insert(Person p)
{
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.save(p) ;
// 提交事務
tran.commit() ;
// 關閉Session
this.session.close() ;
}
//修改
public void update(Person p){
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.update(p) ;
// 提交事務
tran.commit() ;
// 關閉Session
this.session.close() ;
}
//按Id查詢,推薦使用HQL
public Person queryById(String id){
Person p=null;
//使用Hibernate查詢語句,特別注意Person是對應的類名,而不是表名
String hql="From Person as p where p.id=?";
//通過Query接口查詢
Query q=(Query) this.session.createQuery(hql);
q.setString(0,id);
List l=q.list();
Iterator iter=l.iterator();
if(iter.hasNext()){
p=(Person) iter.next();
}
return p;
}
//刪除數據方法一,性能不好
public void delete(Person p){
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.delete(p) ;
// 提交事務
tran.commit() ;
// 關閉Session
this.session.close() ;
}
//刪除方法二
public void delete(String id){
String hql="Delete Person where id=?";
Query q=this.session.createQuery(hql);
q.setString(0, id);
q.executeUpdate();
this.session.beginTransaction().commit();
}
//查詢全部數據
public List queryAll(){
List l=null;
String hql="From Person as p";
Query q=this.session.createQuery(hql);
l=q.list();
return l;
}
//模糊查詢
public List queryByLike(String cond){
List l=null;
String hql="From Person as p where p.name like ?";
Query q=this.session.createQuery(hql);
q.setString(0, "%"+cond+"%");
l=q.list();
return l;
}
}
7.測試
package com.test.model;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String args[]) throws Exception{
//插入數據
/*Person p=new Person();
p.setId("3");
p.setName("yzh");
p.setPassword("123");
// String str = "男";
//p.setSex( new String(str.getBytes("iso-8859-1"),"utf-8"));
p.setSex("a");
p.setEmail("[email protected]");
PersonOperate po=new PersonOperate();
po.insert(p);*/
//修改數據
/*Person p=new Person();
p.setId("2");
p.setName("yzh");
p.setPassword("123");
p.setSex("男");
p.setEmail("[email protected]");
PersonOperate po=new PersonOperate();
po.update(p);*/
//查詢數據
/*PersonOperate po=new PersonOperate();
Person p=po.queryById("2");
System.out.println(p.getId()+"|"+p.getName()+"|"+p.getPassword()+"|"+p.getSex()+"|"+p.getEmail());
*/
//刪除數據一
/*PersonOperate po=new PersonOperate();
Person p=po.queryById("2");
po.delete(p);*/
//刪除數據方法二
/*PersonOperate po=new PersonOperate();
po.delete("1");*/
//查詢全部數據
/*PersonOperate po=new PersonOperate();
List l=po.queryAll();
Iterator iter=l.iterator();
while(iter.hasNext()){
Person p=(Person) iter.next();
System.out.println(p.getId()+"||"+p.getName());
}*/
//模糊查詢
PersonOperate po=new PersonOperate();
List l=po.queryByLike("y");
Iterator iter=l.iterator();
while(iter.hasNext()){
Person p=(Person) iter.next();
System.out.println(p.getId()+"||"+p.getName());
}
}
}