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 ...
随机推荐
- Redis安装与简单配置
一.Redis介绍 1.redis是什么? remote dIctionary server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis提 ...
- 在ReactNative中使用Typescript
在ReactNative中使用Typescript 少侠放心,跟着我的这个步骤走,保你完美在RN项目中使用Typescript,废话不多说,走你 1.全局安装create-react-native-a ...
- 一道SQL面试题——表行列数据转换(表转置)
SQL语句如下: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then mo ...
- laravel 增删改查 数据库设置 路由设置
laravel 框架的路由设置: url: http://www.shanzezhao.com/laraverl/my_laravel/public/index.php/indexs laravel ...
- phpstorm代码提示不小心关了,如何开启
在phpstrom右下角单击如图 出现event log窗口 如果不是 单击切换取消节电模式即可开启代码提示.
- Python学习之魔法方法
Python中会看到前后都加双下划线的函数名,例如 __init__(self),这类写法在Python中具有特殊的含义.如果对象使用了这类方法中的某一个,那么这个方法将会在特殊的情况下被执行,然而几 ...
- 003---设计首页index页面
在项目的urls.py文件添加一条url from django.contrib import admin from django.urls import path, re_path from app ...
- Python3爬虫(七) 解析库的使用之pyquery
Infi-chu: http://www.cnblogs.com/Infi-chu/ pyquery专门针对CSS和jQuery的操作处理 1.初始化字符串初始化 from pyquery impor ...
- abap<itab>refresh,clear,free
在ABAP开发过程中,clear,refresh,free都有用来清空内表的作用,但用法还是有区别的. clear itab,清空内表行以及工作区,但保存内存区. clear itab[],清空内表行 ...
- c/c++指针传参
首先要理解参数传递,参数传递分值传递,指针传递,引用传递.(就我自己理解,就是把实参对形参进行赋值) 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单 ...