您的位置:首页 > 编程语言 > Java开发

Hibernate入门学习笔记2

2010-11-28 20:21 393 查看
数据库是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("525292187@qq.com");

   PersonOperate po=new PersonOperate();

   po.insert(p);*/

  

   //修改数据

   /*Person p=new Person();

   p.setId("2");

   p.setName("yzh");

   p.setPassword("123");

   p.setSex("男");

   p.setEmail("525292187@qq.com");

   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());

   }

  }

}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息