一,新建一个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核心配置文件如下:
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialectproperty>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xmzproperty>
<property name="hibernate.connection.username">rootproperty>
<property name="hibernate.connection.password">rootproperty>
<property name="hibernate.jdbc.batch_size">20property>
<property name="hibernate.show_sql">trueproperty>
<property name="hibernate.format_sql">trueproperty>
<mapping resource="com/oracle/bean/salary.hbm.xml">mapping>
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
<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 list1 = query.list(); //获取查询出来的数据
for(Salary s: list1){
System.out.println();
}
//单列得到的是 object数据
query = session.createQuery("select s.leave from Salary s");
//query 查询分析器
List
删除功能
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 list = query.list(); //获取数据
for(Salary s: list){
System.out.println(s);
}
//提交事务
session.getTransaction().commit();
session.close();
sessionFactory.close();
}
}