crud是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和
删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能.
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
}
}
<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>
<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>
<hibernate-mapping>
<class name="com.xxx.entity.Dept">
<id name="deptno">
<generator class="increment"/>
id>
<property name="dname"/>
<property name="loc"/>
class>
hibernate-mapping>
<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>
当然hibernate可以在编译器里直接建表,这个下一章再说,这里说的是通过代码的编辑,进行自动建表 有表更新表,没有表建表
@Test
public void testConn(){
//1.新建配置对象
Configuration cfg=new Configuration();
//2.自动加载主配置文件
cfg.configure();
//3.开启session工厂
SessionFactory sf=cfg.buildSessionFactory();
}
开启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();
}
查询所有:不需要事务
保存在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();
}
修改操作
@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();
}
@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();
}