hibernate操作数据库总结(转)
一、query方式
1、hibernate使用原生态的sql语句执行数据库查询
有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因为不是原生态的sql语句,数据库不支持,因此情愿选择回到jdbc时 代。这样既耗时耗力,又破坏面向对象的编程。其实,hibernate已经考虑到这个问题,hibernate可以执行原生态的sql语句,正对每种数据 库,你可以写对应的sql语句,然后用createSQLQuery(sql)即可。
/**
* 本地sql的检索方式,使用原生态的sql语句检索
*
*/
Session session = this.getSession();
String sql = "select * from course where cid=:id";
Query query = session.createSQLQuery(sql);// 本地SQL检索方式
query.setInteger("id", c_id);
query.list();// 返回持久化的list
2、query执行查询操作(基本方式,字符串连接方式生成hql语句)
query执行查询操作,可以返回唯一对象或者是对象列表
(1)query返回对象列表
/**
* hql的检索方式,执行查询数据库操作,返回对象的列表
* 采用hql语句连接方式
*/
Session session = this.getSession();
String hql = "select * from CourseDO where CId="+id+"";
Query query = session.createQuery(hql);// 本地SQL检索方式
query.list();// 返回持久化的list
(2)query返回唯一对象
/**
* hql的检索方式,执行查询数据库操作,返回唯一对象
* 采用hql语句连接方式
*/
Session session = this.getSession();
String hql = "select * from CourseDO where CId="+id+"";
Query query = session.createQuery(hql);// 本地SQL检索方式
query.uniqueResult();// 返回持久化的list
3、query执行查询操作
hql采用参数方式,其中参数绑定方式分为两种:按照名字绑定,按照位置绑定
(1)hql参数绑定采用按照名字绑定
/**
* hql的检索方式,执行查询数据库操作,返回对象的列表
*
* 参数绑定的形式分为按名字绑定,按位置绑定 此处是按照名字绑定
*/
Session session = this.getSession();
String hql = "select * from CourseDO where CId=:id";
Query query = session.createQuery(hql);// 本地SQL检索方式
query.setInteger("id", c_id);// 名字绑定参数
query.list();// 返回持久化对象的list列表
(2)hql参数绑定采用按照位置绑定
/**
* hql的检索方式,参数绑定的形式分为按名字绑定,按位置绑定 此处是按照位置绑定
*/
String hql = "from CourseDO where CId=?";
Session session = this.getSession();
Query query = session.createQuery(hql);
query.setParameter(0, c_id);// 位置绑定方式
query.uniqueResult();// 检索单个对象,返回唯一值
4、query执行更新,删除操作
利用query的executeUpdate()方法实现
/**
* query执行更新,删除等非查询语句
*
*/
String hql = "delete from CourseDO where CId=? and Time=?";
Session session = this.getSession();
Query query = session.createQuery(hql);
query.setParameter(0, c_id);// 位置绑定方式
query.setDate(1, new Date());// 位置绑定方式,设置为Date类型
query.executeUpdate();// 执行delete,update和insert into 语句
二、hibernate模版方法
利用hibernate模版方法执行hql语句非常简单,但是有时候不是那么方便,可以自己选择使用。
1、hibernateTemplate查询数据库
/**
* 利用hibernate模版方法进行查询,绑定参数形式
*
*/
String hql = "from CourseDO where CId=? and Date=?";
List<CourseDO> courseDOs = getHibernateTemplate().find(hql, c_id,
new Date());
2、hibernateTemplate更新数据
/**
* 利用hibernate模版方法进行更新,绑定参数形式
*
*/
List<CourseDO> courseDOs = getHibernateTemplate().update(courseDO);
3、hibernateTemplate插入数据
/**
* 利用hibernate模版方法进行插入,绑定参数形式
*
*/
List<CourseDO> courseDOs = getHibernateTemplate().save(courseDO);
4、hibernateTemplate删除数据
/**
* 利用hibernate模版方法进行删除,绑定参数形式
*
*/
List<CourseDO> courseDOs = getHibernateTemplate().delete(courseDO);
hibernate操作数据库总结(转)的更多相关文章
- hibernate操作数据库总结
这篇文章用于总结hibernate操作数据库的各种方法 一.query方式 1.hibernate使用原生态的sql语句执行数据库查询 有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就 ...
- Java_Web三大框架之Hibernate操作数据库(三)
使用Hibernate操作数据库需要七个步骤: (1)读取并解析配置文件 Configuration conf = newConfiguration().configure(); (2)读取并解析映射 ...
- hibernate操作数据库例子
1.工程目录结构如下 2.引入需要的jar包,如上图. 3.创建持久化类User对应数据库中的user表 package com.hibernate.配置文件.pojo; import java.sq ...
- Hibernate操作数据库的回调机制--Callback
1:一般情况下,在使用Hibernate Session存取数据库的代码中,基本上大部分是相同的,如下两个方法所示, //查询Teacher操作 ublic Teacher getTeacher ...
- Hibernate 操作数据库
com.tao.pojo实体类 package com.tao.pojo; public class User { private int id; private String name; priva ...
- 转 使用Hibernate操作数据库时报:No CurrentSessionContext configured! 异常
没有currentSession配置错误,即在我们使用currentSession的时候要在hibernate.cfg.xml中进行相关的事务配置:1.本地事务<property name=&q ...
- hibernate操作数据库时报错解决方式
java.sql.SQLException: Parameter index out of range (28 > number of parameters, which is 27). 这个说 ...
- Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- 5 -- Hibernate的基本用法 --2 2 Hibernate的数据库操作
在所有的ORM框架中有一个非常重要的媒介 : PO(持久化对象:Persistent Object).持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增.删.改的操作 ------ ...
随机推荐
- No-args constructor for class does not exist. Register an InstanceCreator with G
有时候我们在使用Googel官方的json解析包时,如果自己的实体类中出现代参的构造函数.在1.4的jar中,如果类造型中有参数,就会调用不了无参构造器,(如:HashMap的构造器就会有参数) 参考 ...
- [转载]移动终端浏览器初始设置apple-mobile-web-app-capable
这两句话的确很有用,有了它,手机访问的时候像样了. 原文地址:移动终端浏览器初始设置apple-mobile-web-app-capable作者:素水凌心 移动终端浏览器默认设置视口的宽度和初始规模. ...
- CloudStack API访问权限控制
在我写开始之前,请先看下CS中国社区的一篇文章http://www.cloudstack-china.org/2012/12/1465.html,在第1点里讲了关于权限级别,command属性文件位置 ...
- 转载:常见EXE文件反编译工具
PE Explorer V1.99 R5 绿色汉化特别版_强大的可视化汉化集成工具 功能极为强大的可视化汉化集成工具,可直接浏览.修改软件资源,包括菜单.对话框.字符串表等: 另外,还具备有 W32D ...
- Linux上ld和ld.so命令的区别
显然,ld链接器,它的生命周期是发生在compile-time的,它的一些参数是编译时期gcc给传递的,比如,指定需要链接什么库. ld.so命令的周期是发生在run-time的,名字叫动态链接器/加 ...
- vijos1781 同余方程
描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一行,包含两个正整数a, b,用一个空格隔开. 输出格式 输出只有一行,包含一个正整数x0,即最小正整数解 ...
- java中File类的相关学习
File类 1.关于系统路径分割符. 在Windows中,使用反斜杠“\”作为路径分割符,比如“c:\test”,但是java中反斜杠表示转义,所以需要用“C:\\test”在程序中来表示路径.还可以 ...
- nonatomic,assign,copy,retain的区别
nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一种 ...
- handsontable的单元格操作方法
1.为handsontable添加钩子方法 addHook(key,callback):key为钩子方法名 <span style="font-size:18px;"> ...
- 创建UILabel
UILabelCreate.h #import <UIKit/UIKit.h> @interface UILabelCreate : UILabel /** * 创建UILabel 初始化 ...