Hibernate之CRUD

CRUD

 crud是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和
 删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能.

1.新建三个表 员工表(Emp) 用户表(User) 部门表(Dep)

用户表实体类

public class User {
    private Integer u_id;
    private String u_name;
    private Integer u_age;
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_name() {
        return u_name;
    }
    public void setU_name(String u_name) {
        this.u_name = u_name;
    }
    public Integer getU_age() {
        return u_age;
    }
    public void setU_age(Integer u_age) {
        this.u_age = u_age;
    }

    //第一个设置成主键,
    //构造器只要两个,主键id不需要
    public User(String u_name, Integer u_age) {
        super();
        this.u_name = u_name;
        this.u_age = u_age;
    }
    public User() {
        // TODO Auto-generated constructor stub
    }
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_name=" + u_name + ", u_age=" + u_age
                + "]";
    }

}

员工表实体类

import java.util.Date;

public class Emp {
private int id;
private String name;
private double salary;
private int age;
private Date hiredate;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public double getSalary() {
    return salary;
}
public void setSalary(double salary) {
    this.salary = salary;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public Date getHiredate() {
    return hiredate;
}
public void setHiredate(Date hiredate) {
    this.hiredate = hiredate;
}
public Emp(String name, double salary, int age, Date hiredate) {
    super();
    this.name = name;
    this.salary = salary;
    this.age = age;
    this.hiredate = hiredate;
}
public Emp() {
    // TODO Auto-generated constructor stub
}

}

部门表实体类

public class Dept {
private int deptno;//部门编号
private String dname;//部门名称 
private String loc;//部门地址   
public int getDeptno() {
    return deptno;
}
public void setDeptno(int deptno) {
    this.deptno = deptno;
}
public String getDname() {
    return dname;
}
public void setDname(String dname) {
    this.dname = dname;
}
public String getLoc() {
    return loc;
}
public void setLoc(String loc) {
    this.loc = loc;
}
public Dept(String dname, String loc) {
    super();
    this.dname = dname;
    this.loc = loc;
}

public Dept() {
    // TODO Auto-generated constructor stub
}

}

2.配置映射文件

User.hbm.xml



<hibernate-mapping>
<class name="com.xxx.entity.User">

<id name="u_id">
<generator class="increment"/>
id>

<property name="u_name"/>
<property name="u_age"/>
class>
hibernate-mapping>

Emp.hbm.xml



<hibernate-mapping>
<class name="com.xxx.entity.Emp">

<id name="id">
<generator class="increment"/>
id>

<property name="name"/>
<property name="salary"/>
<property name="age"/>
<property name="hiredate"/>
class>
hibernate-mapping>

Dept.hbm.xml



<hibernate-mapping>
<class name="com.xxx.entity.Dept">

<id name="deptno">
<generator class="increment"/>
id>

<property name="dname"/>
<property name="loc"/>
class>
hibernate-mapping>

3.主配置文件



<hibernate-configuration>
<session-factory>
    <property name="myeclipse.connection.profile">mysqlproperty>
    <property name="connection.url">
        jdbc:mysql://localhost:3306/hib
    property>
    <property name="connection.username">rootproperty>
    <property name="connection.password">rootproperty>
    <property name="connection.driver_class">
        com.mysql.jdbc.Driver
    property>
    <property name="dialect">
        org.hibernate.dialect.MySQLDialect
    property>
    <property name="hbm2ddl.auto">updateproperty>
    <property name="show_sql">trueproperty>
    <property name="format_sql">trueproperty>
    <mapping resource="com/xxx/entity/User.hbm.xml" />
    <mapping resource="com/xxx/entity/Emp.hbm.xml" />
    <mapping resource="com/xxx/entity/Dept.hbm.xml" />

session-factory>
hibernate-configuration>

4.CRUD操作

4.1 开启Session工厂

 当然hibernate可以在编译器里直接建表,这个下一章再说,这里说的是通过代码的编辑,进行自动建表 有表更新表,没有表建表
    @Test
    public void testConn(){
        //1.新建配置对象
        Configuration cfg=new Configuration();
        //2.自动加载主配置文件
        cfg.configure();
        //3.开启session工厂
        SessionFactory sf=cfg.buildSessionFactory();
    }

4.2 增加操作

   开启Session 将对象存入Session 关闭Session
@Test
    public void testInsert() {
        // 1.新建配置对象,目的是自动加载主配置文件
        Configuration cfg = new Configuration();
        // 2.加载主配置文件
        cfg.configure();
        // 3.开启session工厂
        SessionFactory sf = cfg.buildSessionFactory();
        // 4开启session
        Session session = sf.openSession();
        // 5.打开事务
        Transaction ts = session.beginTransaction();
        // 6 执行新增的语句,并且把对象存入session中
        Emp e = new Emp("老王", 122.2, 24, new Date());// 新建一个对象,利用构造器
        session.save(e);
        // 7/提交事务
        ts.commit();
        // 8.关闭session
        session.close();
    }

4.3查找,

查询所有:不需要事务
 保存在session中的get()查询.只能单条查询
(在后面的章节会说明如何多条件查询)
@Test
    public void testSelect() {
        // 1.新建配置对象,目的是自动加载主配置文件
        Configuration cfg = new Configuration();
        // 2.加载主配置文件
        cfg.configure();
        // 3.开启session工厂
        SessionFactory sf = cfg.buildSessionFactory();
        // 4开启session
        Session session = sf.openSession();
        // 将对想转化成class ,序列化对象其实就是id
        session.get(Emp.class, 2);
        // 8.关闭session
        session.close();
    }

4.4 修改操作

修改操作

    @Test
    public void testupdate() {
        // 1.新建配置对象,目的是自动加载主配置文件
        Configuration cfg = new Configuration();
        // 2.加载主配置文件
        cfg.configure();
        // 3.开启session工厂
        SessionFactory sf = cfg.buildSessionFactory();
        // 4开启session
        Session session = sf.openSession();
        // 5.打开事务
        Transaction ts = session.beginTransaction();
        // 根据id 进行查询
        Emp u = (Emp) session.get(Emp.class, 1);
        // 调用set方法进行修改
        // 执行修改//生成无参构造器
        u.setHiredate(new Date());
        // 把事务存入session
        // 7 提交事务
        ts.commit();
        // 8.关闭session
        session.close();
    }

4.5 删除操作

@Test
    public void testdel() {
        // 1.新建配置对象,目的是自动加载主配置文件
        Configuration cfg = new Configuration();
        // 2.加载主配置文件
        cfg.configure();
        // 3.开启session工厂
        SessionFactory sf = cfg.buildSessionFactory();
        // 4开启session
        Session session = sf.openSession();
        // 5.打开事务
        Transaction ts = session.beginTransaction();
        // 根据id 进行查询
        Emp e = (Emp) session.get(Emp.class, 1);
        // 调用set方法进行修改
        session.delete(e);
        // 把事务存入session
        // 7 提交事务
        ts.commit();
        // 8.关闭session
        session.close();
    }

你可能感兴趣的:(框架之Hibernate)