一、jar包

  最基础的hibernatejar包,以及数据库驱动的jar包

  

二、数据库

  t_user表
id int 主键 自动增长
name varchar()

三、配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置数据库信息 -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">mysql123</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test</property>
<property name="hibernate.connection.autocommit">true</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 显示生成的sql语句 -->
<property name="hibernate.show_sql">true</property> <mapping resource="cn/itcast/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.domain">
<class name="User" table="t_user">
<id name="id" type="int">
<generator class="native" />
</id>
<property name="name" type="string"/>
</class>
</hibernate-mapping>

Uesr.hbm.xml

四、程序

  1、主要是负责session的开启,属于模板代码

 package cn.itcast.domain.dao;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sessionFactory;
static{
sessionFactory=new Configuration()
.configure()
.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session openSession(){
return sessionFactory.openSession();
}
}

HibernateUtils.java

  2、定义一个接口,声明增删改查的方法

 package cn.itcast.domain.dao;

 import java.util.List;
import cn.itcast.domain.User; public interface UserDao { public void save(User user);
public void update(User user);
public void delete(int id);
public User getById(int id);
public List<User> findAll();
public QueryResult findAll(int firstNumber, int maxNumber);
}

UserDao.java

  3、对接口创建实现类

 package cn.itcast.domain.dao;

 import java.util.List;

 import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.itcast.domain.User; public class UserDaoImpl implements UserDao { @Override
public void save(User user) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
session.save(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public void update(User user) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.update(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public void delete(int id) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
Object user = session.get(User.class, id);
session.delete(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public User getById(int id) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
User user =(User) session.get(User.class, id);
tx.commit();
return user;
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public List<User> findAll() {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
List<User> user = session.createQuery(" FROM User").list();
tx.commit();
return user;
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} /**
* 分页查询
*/
@Override
public QueryResult findAll(int firstNumber, int maxNumber) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
List<User> list = session.createQuery(" FROM User")
.setFirstResult(firstNumber)
.setMaxResults(maxNumber)
.list(); Long count = (Long) session.createQuery("SELECT COUNT(*) FROM User").uniqueResult();
tx.commit();
return new QueryResult(count.intValue(),list);
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} }

UserDaoImpl.java

  4、做一个测试类

 package cn.itcast.domain.dao;

 import java.util.List;

 import org.junit.Test;

 import cn.itcast.domain.User;

 public class TestUserDao {

     private UserDao userDao = new UserDaoImpl();

     @Test
public void testSave_1() {
User user = new User();
user.setName("张三"); // 保存
userDao.save(user);
} @Test
public void testGetById() {
User user = userDao.getById(1);
System.out.println(user);
} @Test
public void testUpdate() {
// 从数据库获取一条存在的数据
User user = userDao.getById(1);
user.setName("李四"); // 更新
userDao.update(user);
} @Test
public void testDelete() {
userDao.delete(1);
} // ------------ @Test
public void testSave_25() {
for (int i = 1; i <= 25; i++) {
User user = new User();
user.setName("test_" + i);
userDao.save(user); // 保存
}
} @Test
public void testFindAll() {
List<User> list = userDao.findAll();
for (User user : list) {
System.out.println(user);
}
} @Test
public void testFindAllIntInt() {
// 查询
// QueryResult qr = userDao.findAll(0, 10); // 第1页,每页10条
// QueryResult qr = userDao.findAll(10, 10); // 第2页,每页10条
QueryResult qr = userDao.findAll(20, 10); // 第3页,每页10条 // 显示结果
System.out.println("总记录数:" + qr.getCount());
for (User user : (List<User>) qr.getList()) {
System.out.println(user);
}
} }

TestUserDao.java

hibernate搭建及其增删改查的更多相关文章

  1. Spring JdbcTemplate框架搭建及其增删改查使用指南

    Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...

  2. 肝 hibernate 配置and增删改查 and 测试

    已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...

  3. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  4. bootstrap+Ajax+SSM(maven搭建)实现增删改查

    https://www.jianshu.com/p/d76316b48e3e 源码: https://github.com/Ching-Lee/crud 功能点: 分页 数据校验 ajax Rest风 ...

  5. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  6. ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)

    Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...

  7. hibernate的配置, 增删改查

    路径:查找路径 实际上都是查找编译后的对应的路径,在bin文件夹中总 增删改必须开启事务才行 hibernate加载文件的两种方式 configure 1.引包 antlr-2.7.6.jar bac ...

  8. struts+hibernate 请求数据库增删改查(小项目实例)

      StudentAction.java package com.action; import java.util.ArrayList; import java.util.List; import j ...

  9. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

随机推荐

  1. [Python3 填坑] 012 字典的遍历在 Python2 与 Python3 中区别

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 Python2 中字典的遍历 2.2 Python3 中字典的遍历 2.3 结论 1. print( 坑的信息 ) 挖坑时间:2019/ ...

  2. C89标准和C99标准C11标准的区别

    转载 C89标准和C99标准C11标准的区别 C99对C89的改变 1.增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借 ...

  3. 什么是 Python?

     Python 是一种编程语言,它有对象.模块.线程.异常处理和自动内存管理,可以加入其他语言的对比.  Python 是一种解释型语言,Python 在代码运行之前不需要解释.  Python 是动 ...

  4. vue.js(17)--vue的组件切换

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. VS Code 设置双快捷键(快速移动光标)

    平时写代码会经常用到上下左右键,比如打出两个括号 () ,编辑完之后得按到右括号后面 难免有这样的场景需要在编辑代码的时候小范围地移动光标,笔者在别的ide的习惯是通过“alt + jkli”来实现光 ...

  6. 启动ZOOKEEPER之后能查看到进程存在但是查不到状态,是因为。。。

    一般我们在启动ZOOKEEPER之后能查看到进程并且能查到每个节点的状态,但是新手偶尔会遇到查不到状态的问题,这里主要说一下我自己遇到的问题. 是因为myid重复了.... 错误:总共三个节点,mas ...

  7. referenceQueue用法

    何为referenceQueue 在java的引用体系中,存在着强引用,软引用,虚引用,幽灵引用,这4种引用类型.在正常的使用过程中,我们定义的类型都是强引用的,这种引用类型在回收中,只有当其它对象没 ...

  8. 2018-8-10-WPF-控件继承树

    title author date CreateTime categories WPF 控件继承树 lindexi 2018-08-10 19:16:53 +0800 2018-2-13 17:23: ...

  9. 苹果账号需要的邓白氏D-U-N-S编码更新信息最新方法,官方已不受理邮件

    公司从上海搬迁到深圳,公司名称相应变更,但之前注册的苹果开发者账号上的名字还是就的,尝试在后台提交更新申请,官方给了邮件,要求邮件提交证明材料,证明材料提交后,苹果又反馈和邓白氏的资料不匹配,要求先修 ...

  10. linux系统安装telnet服务

    linux安装telnet 安装前准备工作 1.安装telnet服务需要三个软件包:telnet.telnet-server和xinetd包. telnet,telnet-sever,xinetd软件 ...