hibernate对单表的增删改查
ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
实现对单表的增删改查
向区域表中增加数据:
第一步:
新建一个Dao(实现add方法):
public void add(Emp emp){
Session session=HibernateSessionFactory.getSession();
Transaction t=session.beginTransaction();
try{
session.save(emp);
t.commit();
}catch (Exception e) {
t.rollback();
}finally {
HibernateSessionFactory.closeSession();
}
}
第二步
新建一个类TestUi:
public static void main(String[] args) {
{
EmployeeDao dao=new EmployeeDao();
Emp emp=new Emp();
emp.setId(4);
emp.setUsername("留言");
emp.setPassword("78fd55");
dao.add(emp);
}
}
设置了事务的自动提交功能

Hibernate.cfg.xml文件,会自动增加一条自动提交的代码
<property name="connection.autocommit">true</property>
当设置了事务的自动提交功能后,上面的dao层的代码就得修改:
public void add(Emp emp) throws Exception{
Session session=HibernateSessionFactory.getSession();
try{
session.save(emp);
session.flush();
}catch (Exception e) {
// TODO: handle exception
throw Exception;
}finally {
HibernateSessionFactory.closeSession();
}
}
把区域表中删除数据:
第一步:
新建一个Dao:
session.save(emp);改成 session.delete(emp);
删除还有第二种方式:此种方式虽然官方不推荐,但此种方式更灵活一些。
public void delete(Emp emp){
String sql="delete from emp where username=?";
Session session=HibernateSessionFactory.getSession();
try{
SQLQuery S=session.createSQLQuery(sql);
S.setString(0, emp.getUsername());
S.executeUpdate();
}catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
}
第二步:新建一个TestUi:
public static void main(String[] args) {
{
EmployeeDao dao=new EmployeeDao();
Emp emp=new Emp();
emp.setUsername("留言");
dao.delete(emp);
}
}
在区域表中更新数据:
第一步:
新建一个Dao:
把session.save(emp);改成 session.update(emp);
还有第二种方式:
更改sql语句即可。
第二步:
新建一个类TestUi:
在区域表中查询数据:
第一步:
新建一个Dao:
public List<Emp> select(){
String sql="from Emp where username=?"; //此处为hql语句,Emp为对象名,区分大小写
Session session=HibernateSessionFactory.getSession();
List<Emp> list=null;
try{
Query q=session.createQuery(sql);
q.setString(0, "大概");
list=q.list();
}catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
}
查询是不需要flush()的。
sql方式查询:
public List<Emp> sel(){
Session session=HibernateSessionFactory.getSession();
List<Emp> list=new ArrayList();
try {
String sql="select * from emp";
SQLQuery q=session.createSQLQuery(sql);
Iterator its=q.list().iterator();
while(its.hasNext()){
Emp emp=new Emp();
Object[] obj=(Object[])its.next();
emp.setUsername(obj[0].toString());
emp.setPassword(obj[1].toString());
list.add(emp);
}
} catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
return list;
}
第二步:
新建一个类TestUi:
for循环取值即可,不做演示。
get方法查询:
Dao中查询方法中使用:
Emp emp=(Emp)session.get(Emp.class,"按主键查询,这里写要查询的数据主键的值")
查找的另一个方法load方法
把get改成load,其余部分语法相同。
总结:
get和load的区别:
1)load先去找缓存, 如果缓存中没有数据,那就去数据库中查。
2)get是先去找数据库,不过load不可控,最好用get
hibernate对单表的增删改查的更多相关文章
- python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- Mybatis(一)实现单表的增删改查
1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...
- Django学习笔记--数据库中的单表操作----增删改查
1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...
- django 利用ORM对单表进行增删改查
牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...
- 1.SSM整合_单表的增删改查
目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...
- Django中对单表的增删改查
之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.objects.creat ...
- Hibernate和jsp做数据库单表的增删改查
虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 package com.chinasofti.hibb.struts; import org.hibernate.Sess ...
随机推荐
- <CPP学习>第一天 第一个CPP程序 hello word
由于我是计算机类嵌入式专业的大一学生,之前一直使用的是生万物的C语言,了解了其过程性语言的特性及其基础语法,在大一下学期期末阶段想自学一下C++,其实在开学初就买了一本C++ Primer,但由于各种 ...
- Mysql 5.7 开启远程连接
1 在控制台执行 mysql -uroot -p 系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台 2 选择数据库 mysql -uroot -p use mysql; 开启远程 ...
- 从多Sheet的Excel文件中抽取数据
在数据驱动管理中增加Excle的JDBCODBC驱动 类名:sun.jdbc.odbc.JdbcOdbcDriver URL模板:jdbc:odbc:driver={Microsoft Excel D ...
- spring配置jackson不返回null值
#json不返回null spring.jackson.default-property-inclusion=non_null
- python2中将Unicode编码的中文和str相互转换
在python2x版本中 关于中文汉字转换 1.中文------字符串格式 >>> s = '汉字' >>> type(s) <type 'str'> ...
- 笔记-flask-原理及请求处理流程
笔记-flask-原理及请求处理流程 1. 服务器声明及运行 最基本的flask项目代码如下 from flask import Flask app = Flask(__name__) @a ...
- “Code First Migrations ”工具【转】
在本篇文章中,我们学习如何使用实体框架的“Code First Migrations ”(也称为代码先行功能)工具,使用其中的“迁移”功能对模型类进行一些修改,同时同步更新对应数据库的表结构. 默认情 ...
- Koa基本使用
简介 koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的 ...
- 搭建cvs服务器
http://zhangjunhd.blog.51cto.com/113473/78595 http://www.cnblogs.com/lee/archive/2008/10/22/1317226. ...
- 【jQuery】 效果
[jQuery] 效果 资料 http://www.w3school.com.cn/jquery/jquery_ref_effects.asp 1. 显示隐藏 hide(); 隐藏 show(): 显 ...