hibernate搭建及其增删改查

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一、jar包  最基础的hibernatejar包,以及数据库驱动的jar包  二、数据库1  t_user表2 id int 主键 自动增长3 name varchar(20)三、配置文件 1 2 DOCTYPE hibernate-confi...

一、jar包

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

  

二、数据库

1  t_user表
2      id  int  主键  自动增长
3      name varchar(20)

三、配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 <hibernate-configuration>
 6     <session-factory>
 7         <!--  配置数据库信息 -->
 8         <property name="hibernate.connection.username">root</property>
 9         <property name="hibernate.connection.password">mysql123</property>
10         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
11         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test</property>
12         <property name="hibernate.connection.autocommit">true</property>
13         
14         <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
15         <property name="hibernate.hbm2ddl.auto">update</property>
16         <!-- 显示生成的sql语句 -->
17         <property name="hibernate.show_sql">true</property>
18         
19         <mapping resource="cn/itcast/domain/User.hbm.xml"/>
20     </session-factory>
21 </hibernate-configuration>
hibernate.cfg.xml
 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="cn.itcast.domain">
 6     <class name="User" table="t_user">
 7         <id name="id" type="int">
 8             <generator class="native" />
 9         </id>
10         <property name="name" type="string"/>    
11     </class>
12 </hibernate-mapping>
Uesr.hbm.xml

四、程序

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

 1 package cn.itcast.domain.dao;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.Configuration;
 6 
 7 public class HibernateUtils {
 8 
 9     private static SessionFactory sessionFactory;
10     static{
11         sessionFactory=new Configuration()
12                     .configure()
13                     .buildSessionFactory();
14     }
15     public static SessionFactory getSessionFactory(){
16         return sessionFactory;
17     }
18     public static Session openSession(){
19         return sessionFactory.openSession();
20     }
21 }
HibernateUtils.java

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

 1 package cn.itcast.domain.dao;
 2 
 3 import java.util.List;
 4 import cn.itcast.domain.User;
 5 
 6 public interface UserDao {
 7 
 8     public void save(User user);
 9     public void update(User user);
10     public void delete(int id);
11     public User getById(int id);
12     public List<User> findAll();
13     public QueryResult findAll(int firstNumber, int maxNumber);
14 }
UserDao.java

  3、对接口创建实现类

  1 package cn.itcast.domain.dao;
  2 
  3 import java.util.List;
  4 
  5 import org.hibernate.Session;
  6 import org.hibernate.Transaction;
  7 import cn.itcast.domain.User;
  8 
  9 public class UserDaoImpl implements UserDao {
 10 
 11     @Override
 12     public void save(User user) {
 13         // TODO Auto-generated method stub
 14         Session session = HibernateUtils.openSession();
 15         Transaction tx= null;
 16         try{    
 17             tx=session.beginTransaction();
 18             session.save(user);
 19             tx.commit();
 20         }catch(RuntimeException exception){
 21             tx.rollback();
 22             throw exception;
 23         }finally{
 24             session.close();
 25         }                    
 26     }
 27 
 28     @Override
 29     public void update(User user) {
 30         // TODO Auto-generated method stub
 31         Session session = HibernateUtils.openSession();
 32         Transaction tx=null;
 33         try{    
 34             tx=session.beginTransaction();
 35             session.update(user);
 36             tx.commit();
 37         }catch(RuntimeException exception){
 38             tx.rollback();
 39             throw exception;
 40         }finally{
 41             session.close();
 42         }            
 43     }
 44 
 45     @Override
 46     public void delete(int id) {
 47         // TODO Auto-generated method stub
 48         Session session = HibernateUtils.openSession();
 49         Transaction tx= null;
 50         try{        
 51             tx=session.beginTransaction();
 52             Object user = session.get(User.class, id);
 53             session.delete(user);
 54             tx.commit();
 55         }catch(RuntimeException exception){
 56             tx.rollback();
 57             throw exception;
 58         }finally{
 59             session.close();
 60         }    
 61     }
 62 
 63     @Override
 64     public User getById(int id) {
 65         // TODO Auto-generated method stub
 66         Session session = HibernateUtils.openSession();
 67         Transaction tx= null;
 68         try{        
 69             tx=session.beginTransaction();
 70             User user =(User) session.get(User.class, id);
 71             tx.commit();
 72             return user;
 73         }catch(RuntimeException exception){
 74             tx.rollback();
 75             throw exception;
 76         }finally{
 77             session.close();
 78         }        
 79     }
 80 
 81     @Override
 82     public List<User> findAll() {
 83         // TODO Auto-generated method stub
 84         Session session = HibernateUtils.openSession();
 85         Transaction tx= null;
 86         try{        
 87             tx=session.beginTransaction();
 88             List<User> user = session.createQuery(" FROM User").list();
 89             tx.commit();
 90             return user;
 91         }catch(RuntimeException exception){
 92             tx.rollback();
 93             throw exception;
 94         }finally{
 95             session.close();
 96         }    
 97     }
 98 
 99     /**
100      * 分页查询
101      */
102     @Override
103     public QueryResult findAll(int firstNumber, int maxNumber) {
104         // TODO Auto-generated method stub    
105         Session session = HibernateUtils.openSession();
106         Transaction tx= null;
107         try{        
108             tx=session.beginTransaction();
109             List<User> list = session.createQuery(" FROM User")
110                     .setFirstResult(firstNumber)
111                     .setMaxResults(maxNumber)
112                     .list();
113             
114             Long count = (Long) session.createQuery("SELECT COUNT(*) FROM User").uniqueResult();
115             tx.commit();
116             return new QueryResult(count.intValue(),list);
117         }catch(RuntimeException exception){
118             tx.rollback();
119             throw exception;
120         }finally{
121             session.close();
122         }    
123     }
124 
125 }
UserDaoImpl.java

  4、做一个测试类

 1 package cn.itcast.domain.dao;
 2 
 3 import java.util.List;
 4 
 5 import org.junit.Test;
 6 
 7 import cn.itcast.domain.User;
 8 
 9 public class TestUserDao {
10 
11     private UserDao userDao = new UserDaoImpl();
12 
13     @Test
14     public void testSave_1() {
15         User user = new User();
16         user.setName("张三");
17 
18         // 保存
19         userDao.save(user);
20     }
21 
22     @Test
23     public void testGetById() {
24         User user = userDao.getById(1);
25         System.out.println(user);
26     }
27 
28     @Test
29     public void testUpdate() {
30         // 从数据库获取一条存在的数据
31         User user = userDao.getById(1);
32         user.setName("李四");
33 
34         // 更新
35         userDao.update(user);
36     }
37 
38     @Test
39     public void testDelete() {
40         userDao.delete(1);
41     }
42 
43     // ------------
44 
45     @Test
46     public void testSave_25() {
47         for (int i = 1; i <= 25; i++) {
48             User user = new User();
49             user.setName("test_" + i);
50             userDao.save(user); // 保存
51         }
52     }
53 
54     @Test
55     public void testFindAll() {
56         List<User> list = userDao.findAll();
57         for (User user : list) {
58             System.out.println(user);
59         }
60     }
61 
62     @Test
63     public void testFindAllIntInt() {
64         // 查询
65         // QueryResult qr = userDao.findAll(0, 10); // 第1页,每页10条
66         // QueryResult qr = userDao.findAll(10, 10); // 第2页,每页10条
67         QueryResult qr = userDao.findAll(20, 10); // 第3页,每页10条
68 
69         // 显示结果
70         System.out.println("总记录数:" + qr.getCount());
71         for (User user : (List<User>) qr.getList()) {
72             System.out.println(user);
73         }
74     }
75 
76 }
TestUserDao.java

 

当神已无能为力,那便是魔渡众生
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
SpringMVC实战crud增删改查1
SpringMVC实战crud增删改查1
34 0
|
1月前
|
SQL Java 数据库连接
springBoot+Jpa(hibernate)数据库基本操作
springBoot+Jpa(hibernate)数据库基本操作
42 0
|
6月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
173 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查
|
XML SQL 前端开发
【SpringMVC】之CRUD增删改查(直接让你迅速完成部署)
RequestMapping("/sc") :里面的路径根据自己的习惯来进行。需要修改的地方就是一个自己表里面的属性名称和一个访问路径。@Autowired : 实例化biz层需要用到的。需要根据自己的文件来进行导入,并不是原本照着导入。在生成好的sqlxml文件里面新添加一个。当然可以根据自己的学习成果来确认需不需要。根据上面的xml配置文件生成接口方法。根据自己的习惯来进行一个地方的修改。当然可以根据自己的sql表来对比。属性里面写你的要生成的类名。属性里面写你的数据库表名。用来管理分页的标签文件。
|
SQL Java 数据库连接
mybatis入门的环境搭建及快速完成CRUD(增删改查)
mybatis入门的环境搭建及快速完成CRUD(增删改查)
260 0
|
XML 前端开发 Java
SpringMVC实战crud增删改查2
SpringMVC实战crud增删改查2
44 0
|
Java 数据库连接 数据库
Mybatis-Plus学习(一):实现增删改查CRUD
Mybatis-Plus学习(一):实现增删改查CRUD
198 0
Mybatis-Plus学习(一):实现增删改查CRUD
|
SQL XML 存储
【SSM】MyBatis 操作数据库(重点:Mybatis两种使用方式)
本文重点介绍ORM 框架和Mybatis的关系、如何通过注解 或者 通过XML配置文件的使用Mybatis,以及参数占位符 #{} 和 ${} 的区别, 什么是sql 注入。
241 0
|
存储 SQL Java
Web对数据库的增删改查(servlet+jsp+javaBean增删改查)
Web+Java对数据库增删改查-javaWeb中级
612 0
|
XML SQL Java
mybatis学习笔记(2)两种配置实现增删改查
第二天学习mybatis,发现框架的存在确实是省了我们很多时间,我们完全可以把一些操作简化,或者实现简单的封装提供我们使用。昨天是跟着教程云里雾里的实现了配置,今天再次使用就方便很多。
123 0