1.根据主键查询

2.getSession().createSQLQuery(sql)和session.createQuery(sql)

3.Seeion的其他方法 

4.Hibernate Criteria用法大全

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. 1-1hibernate数据库操作基础

    一.纯原始数据库连接详见http://www.cnblogs.com/lukelook/p/7845757.html 1.Class.forName("oracle.jdbc.driver. ...

  2. 修改别人写的Hibernate数据库操作代码

    最近正在维护别人写的一个关于Hibernate操作数据库的项目,在运行测试的时候(向表中插入记录),报了一个错误:cannot insert a null into column(XXX字段名,下文统 ...

  3. Oracle数据库操作---基础使用(二)

    此篇承接上一篇的基本原理,继续展开学习,本篇主要面向数据的使用和管理,也就是开发者常用的基础语句,开始喽…… >>>对整表的操作 >创建表   关键字 Create creat ...

  4. MySQL数据库操作基础

    .MySQL 是什么? )软件(Software):工具(解决问题) )数据库管理系统(DBMS) )关系型(Relation)数据库管理系统(RDBMS):类似Oracle 扩展:db-engine ...

  5. 数据库操作(C#)

    数据库在软件开发中发挥着举足轻重的作用,基本上所有的大项目都会用到数据库.ADO .Net是一组向.Net程序员公开数据访问服务的类,其主要分为数据提供程序(Data Provider)和数据集(Da ...

  6. Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库

    概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...

  7. ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

    //TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...

  8. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  9. java之Hibernate框架实现数据库操作

    之前我们用一个java类连接MySQL数据库实现了数据库的增删改查操作---------MySQL篇: 但是数据库种类之多,除了MySQL,还有Access.Oracle.DB2等等,而且每种数据库语 ...

随机推荐

  1. sql server 2008 R2

    SQL SERVER 2008 R2序列号: 数据中心版:PTTFM-X467G-P7RH2-3Q6CG-4DMYB 开 发者 版:MC46H-JQR3C-2JRHY-XYRKY-QWPVM 企    ...

  2. discuz 文件模板edit

    1.修改title Power by discuz! 位置:template/default/common   --->header_common.htm 2.discuz.htm 文件路径(修 ...

  3. vue 运行npm run dev报错

    npm run dev运行时报错,原因有很多. 一般用下面这种方法都能解决的. 最简单粗暴的方法: 1.删除依赖包node_modules 2.然后重新npm install就行了 (如果这步报错了, ...

  4. CentOS安装PHP7+Nginx+MySQL

    本文属于动手搭建PHP开发环境的一部分,更多点击链接查看. 本文以centos6为例.命令部分均省略sudo命令. 安装PHP 下载 http://cn2.php.net/distributions/ ...

  5. Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)

    准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...

  6. 软件架构设计学习总结(18):MVC三层架构在各框架(jsp+servlet + Struts1+ Struts2+ springMVC)中的特征

    1.基于web开发中最原始的jsp+Servlet   图形化理解jsp+servlet结构: 1.从结构上分析jsp+servlet图解原理: 在基于mvc设计模式下的最原始的jsp+Servlet ...

  7. SQL分区表示例

    -- Create tablecreate table TT_FVP_OCR_ADDRESS( id NUMBER not null, waybill_no VARCHAR2(32) not null ...

  8. sip (gb28181)信令交互-视频点播与回播

    客户端发起的实时点播消息示范:(请求视频信令与断开视频信息 和 回播基本无差别) .请求视频流 INVITE sip:@ SIP/2.0 Via: SIP/;rport;branch=z9hG4bK2 ...

  9. laravel 数据验证

    laravel 数据验证 在保存数据之前进行数据验证 类需要继承 Controller 然后用  $this->validate( $request , ['title' => 'requ ...

  10. C++虚析构函数解析

    当派生类对象从内存中撤销时一般先运行派生类的析构函数,然后再调用基类的析构函数. 如果用new运算符建立的派生类的临时对象,对指向基类的指针指向这个临时对象当用delete运算符撤销对象时,系统执行的 ...