一、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. [Web 前端] 010 css 常用的边框设置

    css 常用边框属性 概览 参数 释义 border u设置边框属性(可以多个) border-color 边框颜色 border-style 边框样式solid 实线,dotted 点状线,dash ...

  2. DB2创建库 数据恢复

    例:数据库:PRODB2用户 :DB2ADMIN/DB2ADMIN备份库路径:D:/bank 一.恢复数据库1.启动数据库运行->db2cmd->db2Db2=>start db m ...

  3. SQL的“增删改”

    结构语言分类 DDL(数据定义语言)  create  drop  alter   创建删除以及修改数据库,表,存储过程,触发器,索引.... DML(数据操作语言)   insert  delete ...

  4. es6基本介绍及使用

    1.什么是es6 ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应 ...

  5. maven pom文件元素说明

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. MATLAB:非线性规划fmincon

    1.非线性规划的形式: 其中x是一个列向量,st中前两项为线性约束条件,后两项为非线性约束条件. 在MATLAB中fmincon是用于求解非线性多远函数的最小值的函数,这里介绍fmincon的其中一种 ...

  7. java 进销存管理 商户管理 库存管理 springmvc SSM 项目源码

    统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3  SSM 普 ...

  8. SwiftUI 里的 swift 闭包总结

    创建 UI 时的闭包使用 在 SwiftUI 里闭包出现的频率特别高,这里我重新梳理了下闭包的定义. 关于闭包 闭包表达式语法的一般形式如下: {(parameters) -> return t ...

  9. Taro -- 原生微信小程序转taro

    微信小程序转Taro  (转发https://nervjs.github.io/taro/docs/taroize.html) Taro 可以将你的原生微信小程序应用转换为 Taro 代码,进而你可以 ...

  10. SSM架构 (Spring 5.0.2)添加Jackson

    第一步添加jsckson的包 <dependency> <groupId>javax.annotation</groupId> <artifactId> ...