Hibernate实现简单的增删查改(Hibernate3.6版本)

一,新建一个Java项目
1.导入相关的jar包
这里写图片描述
2.编写核心配置文件
可以参考Hibernate3.6文件中的project/ect 配置文件的模板
这里写图片描述
hibernate的核心配置文件 默认叫做hibernate.cfg.xml
我们都希望看一下 hibernate的执行过程 所以我们需要引入 hibernate的日志
需要引入 slf4j-log4j.jar这个jar包下载地址:http://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12/1.6.1
log4j.jar 这个jar包下载地址:http://mvnrepository.com/artifact/log4j/log4j/1.2.11
还需要找到Hibernate3.6文件中project/etc/log4j.properties 日志文件 引入到我们项目中
这样就可以看到日志
hibernate.cfg.xml核心配置文件如下:
这里写图片描述

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xmz</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.jdbc.batch_size">20</property>
        <property name="hibernate.show_sql">true</property> <!--查看生成的sql语句-->
        <property name="hibernate.format_sql">true</property> <!--将sql语句做格式化的处理-->

        <mapping resource="com/oracle/bean/salary.hbm.xml"></mapping>
        <!--file  绝对路径 -->
        <!--resource 相对路径-->

    </session-factory>
</hibernate-configuration>

3.编写一个实体类 目的是和数据表做关系映射

package com.oracle.bean;

public class Salary {
  private Long workcode;
  private String uname;
  private String dept;
  private Double base_salary;
  private Double extract;
  private Double leave;
  private Double sick;
  private Double pk;

  public Long getWorkcode() {
    return workcode;
  }

  public void setWorkcode(Long workcode) {
    this.workcode = workcode;
  }

  public String getUname() {
    return uname;
  }

  public void setUname(String uname) {
    this.uname = uname;
  }

  public String getDept() {
    return dept;
  }

  public void setDept(String dept) {
    this.dept = dept;
  }

  public Double getBase_salary() {
    return base_salary;
  }

  public void setBase_salary(Double base_salary) {
    this.base_salary = base_salary;
  }

  public Double getExtract() {
    return extract;
  }

  public void setExtract(Double extract) {
    this.extract = extract;
  }

  public Double getLeave() {
    return leave;
  }

  public void setLeave(Double leave) {
    this.leave = leave;
  }

  public Double getSick() {
    return sick;
  }

  public void setSick(Double sick) {
    this.sick = sick;
  }

  public Double getPk() {
    return pk;
  }

  public void setPk(Double pk) {
    this.pk = pk;
  }

  @Override
  public String toString() {
    return "Salary{" +
            "workcode=" + workcode +
            ", uname='" + uname + '\'' +
            ", dept='" + dept + '\'' +
            ", base_salary=" + base_salary +
            ", extract=" + extract +
            ", leave=" + leave +
            ", sick=" + sick +
            ", pk=" + pk +
            '}';
  }
}

4.建立我们映射的配置文件 名字一般叫做 类名.hbm.xml
如果当前你的类的属性和表的字段 名称是一致 可以省略掉后台的column

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.oracle.bean">
    <class name="Salary" table="salary">
        <id name="workcode" column="workcode"></id>
        <property name="uname" column="uname"></property>
        <property name="dept" column="dept"></property>
        <property name="base_salary" column="base_salary"></property>
        <property name="extract" column="extract"></property>
        <property name="leave" column="leav"></property>
        <property name="sick" column="sick"></property>
        <property name="pk" column="pk"></property>
    </class>
</hibernate-mapping>

5.将映射文件写完之后 需要将映射文件加入到hibernate.cfg.xml配置文件中

6.完成代码
新增功能

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class SalaryCreate {

    public static void main(String[] args) {
        //加载核心配置文件 hibernate.cfg.xml
        Configuration cfg = new Configuration();
        //开始解析
        cfg.configure(); //获取连接 默认配置文件
        //获取连接工厂
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //从工厂中获取一个连接
        Session session = sessionFactory.openSession();
        //开启事务
        session.beginTransaction();
        //执行持久化操作 CRUD
        Salary salary = new Salary();
        salary.setWorkcode(5l); //Long类型
        salary.setUname("哈哈");
        salary.setDept("调研部");
        salary.setBase_salary(3000d);
        salary.setExtract(20000d);
        salary.setLeave(300d);
        salary.setSick(200d);
        salary.setPk(0d);
        //增加
        session.save(salary); //操作对象即操作表
        //提交事务
        session.getTransaction().commit();
        //关闭session
        session.close();
        //关闭session工厂
        sessionFactory.close();
    }
}

修改功能

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class SalaryUpdate {

    public static void main(String[] args) {

        Configuration cfg = new Configuration();
        cfg.configure();
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        //持久化操作
        Salary salary = (Salary) session.get(Salary.class,5l);
        salary.setDept("研发部");
        salary.setExtract(10000d);
        salary.setUname("张昊");

        session.update(salary);
        //提交事务
        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }
}

查询功能

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import java.util.List;

public class SalaryQuery {

    public static void main(String[] args) {

        Configuration cfg = new Configuration();
        cfg.configure();
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        //持久化操作
        Query query = session.createQuery("select s from Salary s");
        List<Salary> list1 = query.list(); //获取查询出来的数据
        for(Salary s: list1){
            System.out.println();
        }

        //单列得到的是 object数据
        query = session.createQuery("select s.leave from Salary s");
        //query 查询分析器
        List<Object> list2 = query.list(); //获取查询出来的数据
        for(Object o: list2){
            System.out.println(o);
        }

        //查询多列 object数组 每一列又是一个数组
        query = session.createQuery("select s.uname,s.dept,s.leave from Salary s");
        //query 查询分析器
        List<Object[]> list3 =  query.list();
        for(Object[] o: list3){

            for(Object s: o){
                System.out.println(s);
            }
        }

        //提交事务
        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }
}

删除功能

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class SalaryRemove {

    public static void main(String[] args) {

        Configuration cfg = new Configuration();
        cfg.configure();
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        Session session = sessionFactory.openSession();
        //开启事务
        session.beginTransaction();
        //持久化操作
        //1.先查询再删除
        Salary salary1 = (Salary) session.get(Salary.class,10l);
        session.delete(salary1);
        //2.定义一个有主键的对象 然后再删除
        Salary salary = new Salary();
        salary.setWorkcode(11l);
        session.delete(salary);

        //提交事务
        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }
}

批处理增加

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

//批处理
public class SalaryBatch {

    public static void main(String[] args) {

        //解析核心配置文件
        Configuration cfg = new Configuration();

        cfg.configure("haha.db.xml");
        //获取session工厂
        SessionFactory sessionFactory = cfg.buildSessionFactory();

        Session session = sessionFactory.openSession();
        //开启事务
        session.beginTransaction();
        //持久化操作
        for(int i=10;i<=110;i++){

            Salary salary = new Salary();
            salary.setWorkcode(new Long(i)); //Long类型
            salary.setUname("哈哈+i");
            salary.setDept("监察部+i");
            salary.setBase_salary(3000d);
            salary.setExtract(20000d);
            salary.setLeave(300d);
            salary.setSick(200d);
            salary.setPk(0d);

            session.save(salary);
            if(i%20==0){
                session.flush();
                session.clear();
            }
        }
        //提交事务
        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }
}

分页查询功能

package com.oracle.core;

import com.oracle.bean.Salary;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import java.util.List;

public class SalaryPage {

    public static void main(String[] args) {

        Configuration cfg = new Configuration();
        cfg.configure();
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        //持久化操作
        Query query = session.createQuery("from Salary");
        query.setFirstResult(20); //从第几条数据开始
        query.setMaxResults(10); //拿取几条数据 数据不会变
        List<Salary> list = query.list(); //获取数据
        for(Salary s: list){
            System.out.println(s);
        }

        //提交事务
        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值