博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate案例-------基于xml配置,使用Hibernate实现对员工表的增、删、改、查功能...
阅读量:5049 次
发布时间:2019-06-12

本文共 7586 字,大约阅读时间需要 25 分钟。

 

1.1 问题

使用Hibernate实现对员工表的增、删、改、查。

1.2 方案

Hibernate使用步骤:

  1. 导入Hibernate包,以及数据库驱动包。
  2. 引入Hibernate主配置文件hibernate.cfg.xml。
  3. 创建实体类。
  4. 创建映射关系文件。
  5. 使用Hibernate常用API执行增删改查操作。

1.3 步骤

实现此案例需要按照如下步骤进行。

 

环境为:myeclipse 6.5 ,mysql 5.0 ,Hibernate 3 。

 

步骤一:准备工作创建员工表EMP,建表语句如下:

 

CREATE TABLE `emp` (  `ID` INT(4) NOT NULL AUTO_INCREMENT,  `NAME` VARCHAR(50) NOT NULL,  `AGE` INT(11) DEFAULT NULL,  `SALARY` DOUBLE(7,2) DEFAULT NULL,  `MARRY` CHAR(1) DEFAULT NULL,  `BIRTHDAY` DATE DEFAULT NULL,  `LAST_LOGIN_TIME` DATE DEFAULT NULL,  PRIMARY KEY (`ID`)) ENGINE=INNODB DEFAULT CHARSET=utf8

 

创建一个WEB项目,名为Hibernate。

步骤二:导入Hibernate开发包,以及数据库驱动包,完成后项目的包结构如下图:

 

 网盘下载jar包: http://yunpan.cn/cmRG5gzdMtGMX  访问密码 3747

 

步骤三:引入Hibernate主配置文件

将Hibernate主配置文件hibernate.cfg.xml复制到项目中,放在src根路径下。并在主配置文件中配置好数据库连接信息,以及Hibernate框架参数,代码如下:

jdbc:mysql://localhost:3306/souvc
root
123456
com.mysql.jdbc.Driver
org.hibernate.dialect.MySQLDialect
true
true

 

步骤四:创建实体类

创建包com.souvc.entity,并在该包下创建员工表对应的实体类Emp.java,用于封装员工表的数据,代码如下:

package comsouvc.entity;import java.sql.Date;import java.sql.Timestamp;public class Emp {    private Integer id;    private String name;    private Integer age;    private Double salary;    private Boolean marry;    private Date birthday;    private Timestamp lastLoginTime;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public Double getSalary() {        return salary;    }    public void setSalary(Double salary) {        this.salary = salary;    }    public Boolean getMarry() {        return marry;    }    public void setMarry(Boolean marry) {        this.marry = marry;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public Timestamp getLastLoginTime() {        return lastLoginTime;    }    public void setLastLoginTime(Timestamp lastLoginTime) {        this.lastLoginTime = lastLoginTime;    }}

 

 

步骤五:创建映射关系文件

在com.souvc.entity包下,创建员工实体类的映射关系文件,名为Emp.hbm.xml,并在该文件中配置实体类和表的关系,以及类中属性和表中字段的关系,代码如下:

 

 

步骤六:声明映射关系文件

在主配置文件hibernate.cfg.xml中,声明映射关系文件Emp.hbm.xml,代码如下:

 

完成代码如下:

jdbc:mysql://localhost:3306/souvc
root
123456
com.mysql.jdbc.Driver
org.hibernate.dialect.MySQLDialect
true
true

 

步骤七:创建Session工具类

创建HibernateUtil工具类,用于创建Session对象,代码如下:

package com.souvc.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil {    private static SessionFactory sessionFactory;    static {        // 加载Hibernate主配置文件        Configuration conf = new Configuration();        conf.configure("/hibernate.cfg.xml");        sessionFactory = conf.buildSessionFactory();    }    /**     * 创建session     */    public static Session getSession() {        return sessionFactory.openSession();    }    public static void main(String[] args) {        System.out.println(getSession());    }}

 

 

输出效果:

SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])

 

步骤八:练习使用Hibernate对员工表进行增删改查

创建包com.souvc.test,并在该包下创建一个JUNIT测试类,并在类中使用Hibernate写出对EMP表的增删改查的方法,代码如下:

 

package com.souvc.test;import java.sql.Date;import java.sql.Timestamp;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import com.souvc.util.HibernateUtil;import comsouvc.entity.Emp;/** * 演示Hibernate的基本使用 */public class TestEmp {    /**     * 新增emp     */    @Test    public void add() {        // 模拟要新增的emp        Emp e = new Emp();        e.setName("ggg");        e.setAge(29);        e.setMarry(false);        e.setSalary(8000.00);        e.setBirthday(Date.valueOf("1983-10-20"));        e.setLastLoginTime(new Timestamp(System.currentTimeMillis()));        // 获取session        Session session = HibernateUtil.getSession();        // 开启事务        Transaction ts = session.beginTransaction();        try {            // 执行新增            session.save(e);            // 提交事务            ts.commit();        } catch (HibernateException e1) {            e1.printStackTrace();            // 回滚事务            ts.rollback();        } finally {            session.close();        }    }    /**     * 根据ID查询emp     */    @Test    public void findById() {        Session session = HibernateUtil.getSession();        Emp emp = (Emp) session.get(Emp.class, 1);        System.out.println(emp.getName());        System.out.println(emp.getBirthday());        System.out.println(emp.getLastLoginTime());        session.close();    }    /**     * 修改emp     */    @Test    public void update() {        Session session = HibernateUtil.getSession();        // 查询要修改的数据        Emp emp = (Emp) session.get(Emp.class, 1);        // 开启事务        Transaction ts = session.beginTransaction();        try {            // 模拟修改数据            emp.setName("ee");            emp.setAge(20);            // 执行修改            session.update(emp);            // 提交事务            ts.commit();        } catch (HibernateException e) {            e.printStackTrace();            // 回滚事务            ts.rollback();        } finally {            // 关闭连接            session.close();        }    }    /**     * 删除emp     */    @Test    public void delete() {        Session session = HibernateUtil.getSession();        Emp emp = (Emp) session.get(Emp.class, 1);        Transaction ts = session.beginTransaction();        try {            session.delete(emp);            ts.commit();        } catch (HibernateException e) {            e.printStackTrace();            ts.rollback();        } finally {            session.close();        }    }    /**     * 查询全部emp     */    @Test    public void findAll() {        String hql = "from Emp";        Session session = HibernateUtil.getSession();        Query query = session.createQuery(hql);        List
emps = query.list(); for (Emp e : emps) { System.out.println(e.getName()); } session.close(); }}

 

 

九、实例的效果图如下:

 

增加:

 

通过id查询:

 

查询全部:

 

更新:

 

删除:

 

温馨提示:注意数据库要存在id为1 的数据,才能进行这些数据的操作。根据自己里面的数据来定id。

源码如下: http://yunpan.cn/cmR97XCh6SvB6  访问密码 afb4

 

转载于:https://www.cnblogs.com/liuhongfeng/p/4781835.html

你可能感兴趣的文章
css修改滚动条样式
查看>>
2018.11.15 Nginx服务器的使用
查看>>
Kinect人机交互开发实践
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
android客户端向服务器发送请求中文乱码的问
查看>>
Symfony翻译教程已开课
查看>>
TensorFlow2.0矩阵与向量的加减乘
查看>>
NOIP 2010题解
查看>>
javascript中的each遍历
查看>>
String中各方法多数情况下返回新的String对象
查看>>
浅谈tcp粘包问题
查看>>
UVA11524构造系数数组+高斯消元解异或方程组
查看>>
排序系列之——冒泡排序、插入排序、选择排序
查看>>
爬虫基础
查看>>
jquery.lazyload延迟加载图片第一屏问题
查看>>
OGRE 源码编译方法
查看>>
上周热点回顾(10.20-10.26)
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>