hibernate搭建及其增删改查
一、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搭建及其增删改查的更多相关文章
- Spring JdbcTemplate框架搭建及其增删改查使用指南
Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...
- 肝 hibernate 配置and增删改查 and 测试
已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...
- Hibernate下的增删改查
概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...
- bootstrap+Ajax+SSM(maven搭建)实现增删改查
https://www.jianshu.com/p/d76316b48e3e 源码: https://github.com/Ching-Lee/crud 功能点: 分页 数据校验 ajax Rest风 ...
- Hibernate入门_增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...
- ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)
Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...
- hibernate的配置, 增删改查
路径:查找路径 实际上都是查找编译后的对应的路径,在bin文件夹中总 增删改必须开启事务才行 hibernate加载文件的两种方式 configure 1.引包 antlr-2.7.6.jar bac ...
- struts+hibernate 请求数据库增删改查(小项目实例)
StudentAction.java package com.action; import java.util.ArrayList; import java.util.List; import j ...
- 5.Hibernate实现全套增删改查和ajax异步分页
1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...
随机推荐
- JAVA总结--java基本语法
static :静态的~ static :静态变量.静态方法: 被修饰的成员变量或者方法独立于该类的任何对象,只要该类被加载,被修饰的成员变量或者方法就存在并可以使用. 用public修饰的stat ...
- JavaScript、ES6中的类和对象
面向对象可以用于描述现实世界的事物,但是事物分为具体的(特指的)事物和抽象的(泛指的)事物. 面向对象思维的特点: 1.抽取(抽象)对象共有的属性和行为组织(封装)成一个类(模板) 2. ...
- Vue动态注册异步组件(非同一个工程的组件)
前言:最近在掘金逛的时候,无意中看到前滴滴前端架构黄轶大佬,看到了大佬分享的一篇博客滴滴 webapp 5.0 Vue 2.0 重构经验分享 ,对于其中第5个问题(异步加载的业务线组件,如何动态注册? ...
- 有用的2个 Windows 下批处理文件(bat文件):
创建多个文件夹(目录): 新建一个记事本:win + R –>输入notepad 在笔记本中输入如下: mkdir Would mkdir you mkdir marry mkdir me 另存 ...
- 380-Xilinx Kintex UltraScale FPGA KCU1500 Acceleration Development Kit
Xilinx Kintex UltraScale FPGA KCU1500 Acceleration Development Kit Product Description The Kintex® U ...
- python特殊的类属性
类C的特殊属性: C.__name__ 类C的名字 C.__doc__ 类C文档字符串 C.__bases__ 类C所有父类的元组 C.__dict__ 类C的属性 C.__module__ 类C所在 ...
- javaweb各种框架组合案例(九):springboot+tk.mybatis+通用service
一.项目结构 二.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- c# tcp 服务客户端
session connection protobuf-net
- 【LeetCode】二分 binary_search(共58题)
[4]Median of Two Sorted Arrays [29]Divide Two Integers [33]Search in Rotated Sorted Array [34]Find F ...
- [php代码审计] 哈希长度拓展攻击
已知: 1. salt的长度. 2. message==“adminadmin”. 3. MD5(salt+message)的值. 求: MD5(salt+message+填充数据+任意字符串)的值. ...