hibernate数据库操作基础
2.getSession().createSQLQuery(sql)和session.createQuery(sql)
1.根据主键查询
session.load(Role.class, "33") session.get(Role.class, "33")
get 和 load 方法的区别:详见:https://www.cnblogs.com/lukelook/p/9684782.html
2.getSession().createSQLQuery(sql)和session.createQuery(sql)
前者用的是SQL语句,后者用的HQL语句。
1)getSession().createSQLQuery(sql)
需要添加
query.addEntity(Xxx.class);
否则会出现类型转换错误如:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.my.dm.entity.Device
标量查询
最基本的 SQL 查询是从一个或多个列表中获取一个标量(值)列表。以下是使用原生 SQL 进行获取标量的值的语法:
@Override
public List<Role> getAllRoles() {
// TODO Auto-generated method stub
List<Role> roles = null;
String sql = "SELECT * FROM tbl_role where Role_Server = ? ";
Query query = sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setString(0, "一梦十年");//参数从0开始
roles = query.list();
return roles;
}
实体查询
以上的查询都是关于返回标量值的查询,只是基础性地返回结果集中的“原始”值。以下是从原生 SQL 查询中通过 addEntity() 方法获取实体对象整体的语法:
String sql = "SELECT * FROM EMPLOYEE";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.class);
List results = query.list();
指定 SQL 查询
以下是从原生 SQL 查询中通过 addEntity() 方法和使用指定 SQL 查询来获取实体对象整体的语法:
String sql = "SELECT * FROM EMPLOYEE WHERE id = :employee_id";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.class);
query.setParameter("employee_id", 10);
List results = query.list();
2)session.createQuery(sql)
HQL详见:https://www.cnblogs.com/lukelook/p/9686919.html
@Override
public List<Role> getAllRoles() {
// TODO Auto-generated method stub
List<Role> roles = null;
String sql = "FROM Role r where r.roleServer = ?0 ";
Query query = sessionFactory.getCurrentSession().createQuery(sql);
query.setString("0", "一梦十年");
roles = query.list();
return roles;
}
注意:在hibernate4.0之后对?占位符做了处理,可以用命名参数的方式=:catalog或者JPA占位符方式 =?1
@Override
public List<Role> getAllRoles() {
// TODO Auto-generated method stub
List<Role> roles = null;
String sql = "FROM Role r where r.roleServer = :roleServer ";
Query query = sessionFactory.getCurrentSession().createQuery(sql);
query.setString("roleServer", "一梦十年");
roles = query.list();
return roles;
}
Hibernate 的 HQL 查询功能支持命名参数。这使得 HQL 查询功能既能接受来自用户的简单输入,又无需防御 SQL 注入攻击。
3.Seeion的其他方法
3.1 Session的load()与get()方法
3.2 Session的save()方法
3.3 Session的update()方法persist()
3.4 Session的update()方法
3.5 Session的saveOrUpdate()方法
3.6 Session的delete()方法
3.7 Session的merge()方法
3.8 Session的replicate()方法
3.9 Session的flush()方法
3.10 Session的refresh()方法
详见:Hibernate Session 用法详解:https://www.cnblogs.com/lukelook/p/9692344.html
4.Hibernate Criteria用法大全
https://www.cnblogs.com/lukelook/p/9692429.html
hibernate数据库操作基础的更多相关文章
- 1-1hibernate数据库操作基础
一.纯原始数据库连接详见http://www.cnblogs.com/lukelook/p/7845757.html 1.Class.forName("oracle.jdbc.driver. ...
- 修改别人写的Hibernate数据库操作代码
最近正在维护别人写的一个关于Hibernate操作数据库的项目,在运行测试的时候(向表中插入记录),报了一个错误:cannot insert a null into column(XXX字段名,下文统 ...
- Oracle数据库操作---基础使用(二)
此篇承接上一篇的基本原理,继续展开学习,本篇主要面向数据的使用和管理,也就是开发者常用的基础语句,开始喽…… >>>对整表的操作 >创建表 关键字 Create creat ...
- MySQL数据库操作基础
.MySQL 是什么? )软件(Software):工具(解决问题) )数据库管理系统(DBMS) )关系型(Relation)数据库管理系统(RDBMS):类似Oracle 扩展:db-engine ...
- 数据库操作(C#)
数据库在软件开发中发挥着举足轻重的作用,基本上所有的大项目都会用到数据库.ADO .Net是一组向.Net程序员公开数据访问服务的类,其主要分为数据提供程序(Data Provider)和数据集(Da ...
- Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )
//TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- java之Hibernate框架实现数据库操作
之前我们用一个java类连接MySQL数据库实现了数据库的增删改查操作---------MySQL篇: 但是数据库种类之多,除了MySQL,还有Access.Oracle.DB2等等,而且每种数据库语 ...
随机推荐
- Android之apk优化
公司的apk越做越大...作为一个有追求的程序员,我觉得有必要给apk瘦身了... 优化之前,先来分析一下apk结构,下面附上一张apk结构图: apk结构.png 由于我这个项目集成了百度地图.百度 ...
- Android_strings.xml显示特殊字符
项目中要在string.xml 中显示特殊符号,如@号冒号等,直接写肯定不行啦..只能考虑使用ASCII码进行显示: @号 @ :号 : 空格 以下为常见的ASCII十进制交换编码: --> ...
- 读书笔记(05) - 事件 - JavaScript高级程序设计
HTML依托于JavaScript来实现用户与WEB网页之间的动态交互,接收用户操作并做出相应的反馈,而事件在此间则充当桥梁的重要角色. 日常开发中,经常会为某个元素绑定一个事件,编写相应的业务逻辑, ...
- Redis+Jedis封装工具类
package com.liying.monkey.core.util; import java.io.IOException; import java.util.ArrayList; import ...
- 20-hadoop-pagerank的计算
转: http://www.cnblogs.com/rubinorth/p/5799848.html 参考尚学堂视频 1, 概念( 来自百度百科) PageRank是Google专有的算法,用于衡量特 ...
- markdown简单入门
1.斜体和加粗: 使用下划线"_"或"*"括起来 _内容_ or *内容* 1个_ 或 * 都是斜体,2个则是加粗: 3个既斜体 又加粗,4个以上则没什么变化 ...
- ResNet 论文研读笔记
Deep Residual Learning for Image Recognition 原文链接 摘要 深度神经网络很难去训练,本文提出了一个残差学习框架来简化那些非常深的网络的训练,该框架使得层能 ...
- [转载] npm 一些操作
npm i module_name -S = > npm install module_name --save 写入到 dependencies 对象 npm i module_name -D ...
- 自己写一个java的mvc框架吧(五)
自己写一个mvc框架吧(五) 给框架添加注解的支持 一段废话 上一章本来是说这一章要写视图处理的部分,但是由于我在测试代码的时候需要频繁的修改配置文件,太麻烦了.所以这一章先把支持注解的功能加上,这样 ...
- 新版TeamTalk部署教程
新版TeamTalk部署教程 新版TeamTalk已经在2015年03月28日发布了,目前版本定为1.0.0版本,后续版本号会按照如下规则进行:1.版本规则按照x.y.z的形式进行.2.各端小bug修 ...