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对单表的增删改查的更多相关文章

  1. python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)

    day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...

  2. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  3. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  4. Mybatis(一)实现单表的增删改查

    1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...

  5. Django学习笔记--数据库中的单表操作----增删改查

    1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...

  6. django 利用ORM对单表进行增删改查

    牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...

  7. 1.SSM整合_单表的增删改查

    目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...

  8. Django中对单表的增删改查

    之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象   book_obj=Book.objects.creat ...

  9. Hibernate和jsp做数据库单表的增删改查

    虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 package com.chinasofti.hibb.struts; import org.hibernate.Sess ...

随机推荐

  1. Redis安装与简单配置

    一.Redis介绍 1.redis是什么? remote dIctionary server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis提 ...

  2. 在ReactNative中使用Typescript

    在ReactNative中使用Typescript 少侠放心,跟着我的这个步骤走,保你完美在RN项目中使用Typescript,废话不多说,走你 1.全局安装create-react-native-a ...

  3. 一道SQL面试题——表行列数据转换(表转置)

    SQL语句如下: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then mo ...

  4. laravel 增删改查 数据库设置 路由设置

    laravel 框架的路由设置: url: http://www.shanzezhao.com/laraverl/my_laravel/public/index.php/indexs laravel ...

  5. phpstorm代码提示不小心关了,如何开启

    在phpstrom右下角单击如图 ​ 出现event log窗口 ​ 如果不是​ 单击切换取消节电模式即可开启代码提示.

  6. Python学习之魔法方法

    Python中会看到前后都加双下划线的函数名,例如 __init__(self),这类写法在Python中具有特殊的含义.如果对象使用了这类方法中的某一个,那么这个方法将会在特殊的情况下被执行,然而几 ...

  7. 003---设计首页index页面

    在项目的urls.py文件添加一条url from django.contrib import admin from django.urls import path, re_path from app ...

  8. Python3爬虫(七) 解析库的使用之pyquery

    Infi-chu: http://www.cnblogs.com/Infi-chu/ pyquery专门针对CSS和jQuery的操作处理 1.初始化字符串初始化 from pyquery impor ...

  9. abap<itab>refresh,clear,free

    在ABAP开发过程中,clear,refresh,free都有用来清空内表的作用,但用法还是有区别的. clear itab,清空内表行以及工作区,但保存内存区. clear itab[],清空内表行 ...

  10. c/c++指针传参

    首先要理解参数传递,参数传递分值传递,指针传递,引用传递.(就我自己理解,就是把实参对形参进行赋值) 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单 ...