hibernate框架连接oracle数据库并进行增删改查的相关操作

数据库 emp表的信息
hibernate 配置文件:`

<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url" >jdbc:oracle:thin:@localhost:1521:ORCL</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">orcl</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <!-- <property name="connection.username"/> -->
        <!-- <property name="connection.password"/> -->

        <!-- DB schema will be updated if needed -->
        <!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
        <mapping resource="com/hfxt/entiy/Emp.xml"/>
    </session-factory>
</hibernate-configuration>

实体类:

package com.hfxt.entiy;

import java.util.Date;

public class Emp {
    private Integer empNo;
    private String eName;
    private String job;
    private Integer mgr;
    private Date hireDate;
    private Double sal;
    private Double comm;
    private Integer deptNo;

    public Emp() {
    }

    public Emp(String eName, Double sal) {
        this.eName = eName;
        this.sal = sal;
    }

    public Integer getEmpNo() {
        return empNo;
    }

    public void setEmpNo(Integer empNo) {
        this.empNo = empNo;
    }

    public String geteName() {
        return eName;
    }

    public void seteName(String eName) {
        this.eName = eName;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Integer getMgr() {
        return mgr;
    }

    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public Double getSal() {
        return sal;
    }

    public void setSal(Double sal) {
        this.sal = sal;
    }

    public Double getComm() {
        return comm;
    }

    public void setComm(Double comm) {
        this.comm = comm;
    }

    public Integer getDeptNo() {
        return deptNo;
    }

    public void setDeptNo(Integer deptNo) {
        this.deptNo = deptNo;
    }
} 

实体类的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>

	<!-- class写持久化类的全限定名 (包名+类名) -->
    <class name="com.hfxt.entiy.Emp" >
		<id name="empNo" type="java.lang.Integer"  column="empno">
			<generator class="increment"></generator>
		</id>
		<property name="comm" type="java.lang.Double"  column="comm"/>
		<property name="eName" type="java.lang.String" column="ename"/>
		<property name="job" type="java.lang.String" column="job"/>
		<property name="mgr" type="java.lang.Integer" column="mgr"/>
		<property name="hireDate" type="java.util.Date" column="hireDate"/>
		<property name="sal" type="java.lang.Double" column="sal"/>
		<property name="deptNo" type="java.lang.Integer" column="deptno"/>
	</class>

</hibernate-mapping>

实现增加删除的方法:

package com.hfxt.test;

import com.hfxt.entiy.Emp;
import com.hfxt.entiy.EmpCondition;
import com.hfxt.tool.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.query.Query;
import org.junit.Test;

import java.util.Iterator;
import java.util.List;

public class Test02 {

//    查询所有
    @Test
    public  void selectAll()
    {
        Session session= HibernateUtil.currentSession();
        String hql="from Emp";
        Query query =session.createQuery(hql);
        List<Emp> list=query.list();
        // Iterator iterate = query.iterate();
        for(Emp emp:list)
        {
            System.out.println(emp.geteName()+"\t"+emp.getJob());
        }
        HibernateUtil.closeSession();
    }
//    带条件查询
    @Test
    public  void selectif()
    {
        Session session= HibernateUtil.currentSession();
        String hql="from Emp where  eName like :ename and sal>:sal";
        List<Emp> list=session.createQuery(hql)
                .setParameter("ename","%T%")
                .setParameter("sal",900.00).list();       // Iterator iterate = query.iterate();
        for(Emp emp:list)
        {
            System.out.println(emp.geteName()+"\t"+emp.getJob()+"\t"+emp.getSal());
        }
        HibernateUtil.closeSession();
    }
//    对象赋值
    @Test
    public  void selectobject()
    {
        Session session= HibernateUtil.currentSession();
        String hql="from Emp where  eName like :eName and sal>:sal";
        Emp empc=new Emp();
        empc.seteName("%T%");
        empc.setSal(500.00);
        List<Emp> list=session.createQuery(hql)
                .setProperties(empc).list();       // Iterator iterate = query.iterate();

        for(Emp emp:list)
        {
            System.out.println(emp.geteName()+"\t"+emp.getJob()+"\t"+emp.getSal());
        }
        HibernateUtil.closeSession();
    }
    //动态查询
    @Test
    public  void selectsomeif()
    {
        Session session= HibernateUtil.currentSession();
        String hql="from Emp where 1=1";
        EmpCondition empCondition=new EmpCondition();
        empCondition.setJob("CLERK");
        if (empCondition.getJob()!=null) {
            hql+="and job=:job";
        }
        if (empCondition.getSal()!=null) {
           hql+="and sal>:sal";
        }
        if (empCondition.getStartHiredate()!=null) {
            hql+="and hiredate>:startHiredate()";
        }
        if (empCondition.getEndHireddate()!=null) {
            hql+="and hiredate<:endHireddate";
        }
        List<Emp> list=session.createQuery(hql)
                .setProperties(empCondition).list();       // Iterator iterate = query.iterate();

        for(Emp emp:list)
        {
            System.out.println(emp.geteName()+"\t"+emp.getJob()+"\t"+emp.getSal()+"\t"+emp.getHireDate());
        }
        HibernateUtil.closeSession();
    }
    //分页
    @Test
    public  void selectpage()
    {
        Session session= HibernateUtil.currentSession();
        String hql="from Emp ";
        Integer pageindex=2;
        Integer pagesize=3;
        List<Emp> list=session.createQuery(hql).setFirstResult((pageindex-1)*pagesize).
                setMaxResults(pagesize).list();
        for(Emp emp:list)
        {
            System.out.println(emp.geteName()+"\t"+emp.getJob()+"\t"+emp.getSal());
        }
        HibernateUtil.closeSession();
    }
    //投影查询
    @Test
    public  void selectone()
    {
        Session session= HibernateUtil.currentSession();
        String hql="select  eName from Emp ";
        List<String> list=session.createQuery(hql).list();
        for(String str:list)
        {
            System.out.println(str);
        }
        HibernateUtil.closeSession();
    }
    @Test
    public  void selectsome()
    {
        Session session= HibernateUtil.currentSession();
        String hql="select  eName ,sal from Emp ";

        List<Object[]> list=session.createQuery(hql).list();
        for(Object[] obj:list)
        {
            System.out.println(obj[0]+"\t"+obj[1]);
        }
        HibernateUtil.closeSession();
    }
    @Test
    public  void selectobj()
    {
        Session session= HibernateUtil.currentSession();
        String hql="select new Emp(eName,sal)from Emp ";
        List<Emp> list=session.createQuery(hql).list();
        for(Emp emp:list)
        {
            System.out.println(emp.getSal()+"\t"+emp.geteName());
        }
        HibernateUtil.closeSession();
    }
    @Test
    public  void selecton()
    {
        Session session= HibernateUtil.currentSession();
        String hql="from Emp where empNo=:empno";
       Emp emp=(Emp) session.createQuery(hql).setParameter("empno",7369).uniqueResult();

        System.out.println(emp.getSal()+"\t"+emp.geteName());
        HibernateUtil.closeSession();
    }
}

工具类

package com.hfxt.tool;

import org.hibernate.*;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	// 初始化一个ThreadLocal对象
	private static final ThreadLocal sessionTL = new ThreadLocal();
	private static Configuration configuration;
	private final static SessionFactory sessionFactory;
	static {
		try {
			configuration = new Configuration().configure();
			sessionFactory = configuration.buildSessionFactory();
		} catch (Throwable ex) {
			ex.printStackTrace();
			throw new ExceptionInInitializerError(ex);
		}
	}
	/**
	 * 获取Session
	 */
	public static Session currentSession() {
		//sessionTL的get()方法根据当前线程返回其对应的线程内部变量,
		//也就是我们需要的Session,多线程情况下共享数据库连接是不安全的。
		//ThreadLocal保证了每个线程都有自己的Session。
		Session session = (Session) sessionTL.get();
		// 如果session为null,则打开一个新的session
		if (session == null) {
			//创建一个数据库连接对象session。
			session = sessionFactory.openSession();
			// 保存该数据库连接session到ThreadLocal中。
			sessionTL.set(session);
		}
		//如果当前线程已经访问过数据库了,
		//则从sessionTL中get()就可以获取该线程上次获取过的数据库连接对象。
		return session;
	}
	/**
	 * 关闭Session
	 */
	@SuppressWarnings("unchecked")
	public static void closeSession(){
		Session session = (Session) sessionTL.get();
		sessionTL.set(null);
		session.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值