Hibernate搭建成功!(源码)
虽然两天还不会连接数据库,昨就把那么帅的东西搞出来了。
感觉很爽,Java真的很好,很强大。我学习Java才一个月左右,我还有许多需要学习的。
这次发的这个框架是Hibernate连接mysql。(所有代码均实际运行)
搭建环境:MyEclipse
下面是操作步骤:
1.在mysql中建立一个名为person的表。
表中数据:id varchar(32) no null primary key;
name varchar(30) no null;
password varchar(30) no null;
sex varchar(2);
email varchar(30);
2.打开MyEclipse,从菜单中选择窗口,选择首选项,选择数据库浏览器。
3.配置数据库驱动(mysql-connector-java-5.1.6-bin.jar)。
4.新建一个webproject,命名为HMWebproject,加入Add Hibernate Capabilities...,选择Hibernate3,Next---Finish
5. 选菜单的窗口,选择显示视图,选择其它,选MyEclipse中的DB Browser。点确定。从新窗口中选择New,连接数据库MySQL。
6.把数据库驱动放入此路径(例)D:\java\work\HMWebproject\WebRoot\WEB-INF\lib中,刷新列表,可以显示出新加入的包。
7.src下新建一个类(POJO类):包名为org.lxh.hibernate.demo,命名为Person,写入代码,最终显示如下:
package org.lxh.hibernate.demo;
//POJO类
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;
}
}
8.建立映射文件:点表person右键,选择Create Hibernate Mapping,创建在包org.lxh.hibernate.demo下,主键生成方式:assigned,完成。
9.修改映射文件:代码最终为--->
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.lxh.hibernate.demo.Person" table="person" catalog="scutcs">
        <id name="id" type="java.lang.String">
            <column name="id" length="32" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="20" not-null="true" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="20" not-null="true" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="sex" length="2" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="email" length="30" />
        </property>
    </class>
</hibernate-mapping>
9.在src下新建一个类:命名为PersonOperate,最终代码为----->
package org.lxh.hibernate.demo;
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;
/*
 * 具体操作Hibernate的类
 * 增删改,按ID查询,模糊查询,查询全部
 */
public class PersonOperate {
  //Hibernate中所有操作都通过Session完成
  //此Session不同于JSP的Session
 private Session session=null;
 //构造方法中实现实例化Session对象
 public PersonOperate()
 {
 Configuration config=new Configuration().configure();
 //从配置中取得SessionFactory
 SessionFactory factory=config.buildSessionFactory();
 //SessionFactroy中取出一个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();
  this.session.close();
 }
 //按ID查询:推荐使用HQL
 public Person queryById(String id)
 {
  Person p=null;
  //使用Hibernate查询语言
  String hql="FROM Person as p WHERE p.id=?";
  //通过Query接口查询
  Query q=this.session.createQuery(hql);
  q.setString(0, id);
  List l=q.list();
  java.util.Iterator iter= l.iterator();
  if(iter.hasNext())
  {
   
  p=(Person)iter.next();
  }
  return p;
 }
    //删除数据
 //Hibernate2,Hibernate3通用的删除
 //使用此方法删除数据之前,必须先查找到数据对象
 public void delete(Person p)
 {
  Transaction tran=this.session.beginTransaction();
  //执行语句
  this.session.delete(p);
  //提交事务
  tran.commit();
  this.session.close();
  
 }
       //在Hibernate 3之中根据HQL中的语句进行了修改,增加了删除指令
      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();
       this.session.close();
      }
        //查询全部数据,写HQL
      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;
       
      }
}
10.在src下新建插入类:命名为:TestPU
新建更新类:命名为:TestPO
新建删除类:命名为:TestPD
新建HQL删除类:命名为:TestPD2
新建按ID查询类:命名为:TestPI
新建查询全部类:命名为:TestPK
新建模糊查询类:命名为:TestPM
最终各类代码为----->
TestPU.java
package org.lxh.hibernate.demo;
public class TestPU {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  //生成POJO类实例化对象
  Person p=new Person();
  p.setId("SNNN");
  p.setName("shiyangxt");
  p.setPassword("shiyang");
  p.setSex("女");
  p.setEmail("shiyangxt@126.com");
  PersonOperate po=new PersonOperate();
  po.insert(p);
 }
}
TestPO.java
package org.lxh.hibernate.demo;
public class TestPO {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  //生成POJO类实例化对象
  Person p=new Person();
  p.setId("NNNN");
  p.setName("shiyangxt");
  p.setPassword("shiyang");
  p.setSex("女");
  p.setEmail("shiyangxt@126.com");
  PersonOperate po=new PersonOperate();
  po.update(p);
 }
    
}
TestPD.java
package org.lxh.hibernate.demo;
public class TestPD {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
      PersonOperate po=new PersonOperate();
      Person p=po.queryById("NNNN");
      po.delete(p);
 }
}
TestPD2.java
package org.lxh.hibernate.demo;
public class TestPD2 {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  //生成POJO类实例化对象
  PersonOperate po=new PersonOperate();
  po.delete("SNNN");
        
}
}
TestPI.java
package org.lxh.hibernate.demo;
public class TestPI {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  //生成POJO类实例化对象
  PersonOperate po=new PersonOperate();
  Person p=po.queryById("NNNN");
        System.out.println(p.getName());
}
}
TestPK.java
package org.lxh.hibernate.demo;
import java.util.Iterator;
import java.util.List;
public class TestPK {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  //生成POJO类实例化对象
  PersonOperate po=new PersonOperate();
  List l=po.queryAll();
  Iterator iter= (Iterator) l.iterator();
  while(iter.hasNext())
  { 
   Person p = (Person)iter.next();
   System.out.println(p.getName());
  }
 }
}
TestPM.java
package org.lxh.hibernate.demo;
import java.util.Iterator;
import java.util.List;
public class TestPM {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  //生成POJO类实例化对象
  PersonOperate po=new PersonOperate();
  List l=po.queryByLike("s");
  Iterator iter= (Iterator) l.iterator();
  while(iter.hasNext())
  { 
   Person p = (Person)iter.next();
   System.out.println(p.getName());
  }
}
}
11.搭建完成!!!
施杨出品
!!!
作者:Steven(Steven's Think out)
出处:http://shiyangxt.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 
                    
                
                
            
        
浙公网安备 33010602011771号