Hibernate的基本功能:对数据库的增删改查(创建对象实例)
一、通过实例化的对象向数据库添加新记录
package com.yh.test; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; import com.yh.entity.Buyer; public class Demo { @Test
public void doAdd() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Buyer buyer = new Buyer();
buyer.setUsername("yehuan");
buyer.setPassword("123");
session.save(buyer);
transaction.commit();
session.close();
sessionFactory.close();
}
}
二、通过实例化的对象更新数据库中对应的记录
代码与添加类似,仅将save()方法改成update()方法,更新时以主键映射的属性为条件。
注:saveOrUpdate()方法两者都适用。
三、通过实例化的对象删除数据库中对应的记录
代码与添加类似,仅将save()方法改成delete()方法,删除时以主键对应属性为条件。
四、查询数据库中的记录
1.根据主键对应属性查询(可用于实例化单个对象)
通过get()和load()方法。
区别:
get()方法会直接创建实际对象,查找不到则抛出异常NullPointerException。
load()方法会返回一个代理对象,里面只保存了主键对应属性的值,其他属性只在用的时候再向数据库查询,查找不到则抛出异常ObjectNotFoundException。
@Test
public void doSingleQuery() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Buyer buyer = session.load(Buyer.class,"yehuan1");
System.out.println(buyer.getPassword());
session.close();
sessionFactory.close();
}
2.根据其他属性查询(可用于实例化多个对象)
@Test
public void doSimpleSingleQuery() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Buyer.class);
criteria.add(Restrictions.eq("username", "yehuan1"));
@SuppressWarnings("unchecked")
List<Buyer> list = criteria.list();
for(Buyer b:list){
System.out.println(b); // 调用Buyer类中的toString()方法
}
transaction.commit();
session.close();
sessionFactory.close();
}
3.查询类对应表的所有记录(可用于实例化多个对象)
通过createQuery()和createSQLQuery()方法。
区别:
createQuery()用的hql语句进行查询,以hibernate生成的Bean为对象装入list返回。
createSQLQuery()用sql语句查询,以对象数组进行存储,通过addEntity()方法可将返回结果改成和createQuery()一样。
@Test
public void doAllQuery() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
String hql="from Buyer";
Query query = session.createQuery(hql);
@SuppressWarnings("unchecked")
List<Buyer> list = query.list();
for(Buyer b:list){
System.out.println(b); // 调用Buyer类中的toString()方法
}
transaction.commit();
session.close();
sessionFactory.close();
}
Hibernate的基本功能:对数据库的增删改查(创建对象实例)的更多相关文章
- XML为数据库进行增删改查(实例)
//增删改查文件 package xml2; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.Fi ...
- 利用Hibernate 框架,实现对数据库的增删改查
增: package com.maya.test; import org.hibernate.*; import org.hibernate.cfg.*; import com.maya.model. ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页
使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...
- ThinkPHP实现对数据库的增删改查
好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...
- 【转载】通过JDBC对MySQL数据库的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...
- Hibernate第一个程序(最基础的增删改查) --Hibernate
本例实现Hibernate的第一个程序,Hibernate的优点我想大家都很清楚,在这里不做过多赘述.总之,使用Hibernate对数据库操作,也就是来操作实体对象的! 项目目录: 一.第一步要做的就 ...
- 9.5Django操作数据库的增删改查
2018-9-5 18:10:52 先贴上笔记 day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n ...
- Java操作数据库实现"增删改查"
本文主要讲解JDBC操作数据库 主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一 DriverManager类 DriverManage类 ...
随机推荐
- python Max retries exceeded with URL in requests
使用requests进行重试 import requests from requests.adapters import HTTPAdapter from requests.packages.urll ...
- C# for Beginner Part 21 to 30
Part 21 Inheritance in c# Why Inheritance Pillars(支架) of Object Oriented Programming 1,Inheritance(继 ...
- 第六周PTA笔记 括号匹配调整+堆放石子+最大积分+168
括号匹配调整 如果通过插入" +"和" 1"可以从中得到格式正确的数学表达式,则将带括号的序列称为正确的. 例如,序列 "(())()",& ...
- Python科普系列——类与方法(上篇)
欢迎来到新的系列,up又开新坑了~~ 实际上,Python作为一门易用性见长的语言,看上去简单,却仍然有很多值得一说的内容,因此这个系列会把Python中比较有意思的地方也给科普一遍.而另一方面,关于 ...
- 使用 CSS 轻松实现一些高频出现的奇形怪状按钮
背景 在群里会有同学问相关的问题,怎么样使用 CSS 实现一个内切角按钮呢.怎么样实现一个带箭头的按钮呢? 本文基于一些高频出现在设计稿中的,使用 CSS 实现稍微有点难度和技巧性的按钮,讲解使用 C ...
- Codeforces Round #681 (Div. 1) Solution
A. Extreme Subtraction 把这个数组差分一下,发现操作一的作用是把 \(d_1\) 的大小分给 \(d_i\),而操作二的作用是把 \(d_i\) 减去任意值,目标是把 \(d\) ...
- DirectX12 3D 游戏开发与实战第六章内容
利用Direct3D绘制几何体 学习目标 探索用于定义.存储和绘制几何体数据的Direct接口和方法 学习编写简单的顶点着色器和像素着色器 了解如何用渲染流水线状态对象来配置渲染流水线 理解怎样创建常 ...
- js变量作为数组对象的键值方法
js变量作为数组对象的键值方法,变量键值获取数组值 js也可以像php的数组一样用下标获取数组的值,方法是: var arr = {'key':'abc'}; var key = 'key'; con ...
- xmake v2.6.1 发布,使用 Lua5.4 运行时,Rust 和 C++ 混合编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- 前端2 — CSS — 更新完毕
1.CSS是什么? 指:Cascading Style Sheet --- 层叠样式表 CSS 即:美化网页( 在HTML不是说过W3C规定网页为三种标准嘛,结构层HTML已经玩了,而这个CSS就是 ...