Hibernate入門學習筆記2

數據庫是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());
   }
  }
}
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章