hibernate10--命名查询

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.bdqn.bean">
<class name="Emp">
<id name="empNo">
<generator class="assigned"/>
</id>
<property name="empName"/>
<property name="job"/>
<property name="salary"/>
<!--配置多对一的关系 -->
<many-to-one name="dept" column="DEPTNO" class="Dept"/>
</class>
<!-- 和class节点是同辈的
01.HQL命名查询 语句要写在CDATA中 -->
<query name="fromEmp">
<![CDATA[
from Emp
]]>
</query> <!-- 02.sql命名查询
001.如果查询的是所有数据 那么前台接收的时候必须是数组
002.投影查询的是时候? 查询一个属性的时候是 object对象 多个 就是object数组
003.如果还向把结果集封装成对象 就得使用???
query.setResultTransformer(Transformers.aliasToBean(Emp.class));
-->
<sql-query name="sqlFromEmp">
<![CDATA[
select * from emp
]]>
</sql-query> <!-- 查询指定的一个对象的姓名 -->
<sql-query name="selectName">
<![CDATA[
select empName from emp where empNo=:id
]]>
</sql-query> <!-- 查询指定的一个对象的姓名和薪水 真的向返回一个对象 -->
<sql-query name="selectNameAndSal">
<return-scalar column="empName"/>
<!--
type属性:类型,如果不写,Hibernate会自动检测。可以写java中类的全名或是写hibernate类型。
因为我们数据库中的salary 是float类型 无法自动映射 需要我们手动的设置匹配!
empNo 是number类型 无法自动映射 也 需要我们手动的设置匹配!
java.lang.Integer: java的全类名 也可以写成 hibernate类型中的int
double: hibernate类型
-->
<return-scalar column="empNo" type="java.lang.Integer"/>
<return-scalar column="salary" type="double"/>
<![CDATA[
select empName,empNo,salary from emp where empNo=:id
]]>
</sql-query> </hibernate-mapping>


public class EmpTest {
Session session =null;
Transaction transaction=null;
@Before
public void before(){
session = HibernateSessionUtil.getCurrentSession();
transaction= session.beginTransaction();
}
/**
* 命名查询: hibernate允许我们在xml映射文件或者类中(使用注解的方式)定义字符串形式的查询语句!
* 命名查询 可以写 hql也可以是sql语句! 程序不区分命名查询语句的类型(hql,sql),只会根据名称进行查询!
* getNamedQuery(); ===>得到我们实现写好的 命名查询!
*/
@Test
public void test01(){
List<Emp> list = session.getNamedQuery("fromEmp").list();
for (Emp emp : list) {
System.out.println(emp);
}
}
/**
* 测试 sql-query查询
*
* 发现的问题?
* 我们的sql查询语句的结果不能封装成对象 ,只能是Object数组
*/
@Test
public void test02(){
List<Object[]> list = session.getNamedQuery("sqlFromEmp").list();
for (Object[] objects : list) {
System.out.println(objects[0]);
}
}
/**
* 查询指定的一个对象的姓名 还有一个参数需要赋值
* 返回一个Object对象
*/
@Test
public void test03(){
String name= (String) session.getNamedQuery("selectName").setParameter("id", 1).uniqueResult();
System.out.println(name);
}
/**
* 查询指定的一个对象的姓名和薪水 还有一个参数需要赋值
* 返回一个Object[]数组
*/
@Test
public void test04(){
Object[] obj= (Object[]) session.getNamedQuery("selectNameAndSal").setParameter("id", 1).uniqueResult();
System.out.println(obj[0]); //姓名
System.out.println(obj[1]); //薪水
}
/**
* 查询指定的一个对象的姓名和薪水 还有一个参数需要赋值
* 返回一个对象 怎么做?
* 01.在xml文件中在增加 <return-scalar>节点
* 02.我们在query对象返回来的时候 把结果转换成对象
*
*
*/
@Test
public void test05(){
//获取query对象 并且给参数赋值
Query query = session.getNamedQuery("selectNameAndSal").setParameter("id", 1);
//把query查询出来的结果集 转换成 对象
/**
* 底层的代码
* Creates a resulttransformer that will inject aliased values into
* instances of Class via property methods or fields.
*
* public static ResultTransformer aliasToBean(Class target) {
return new AliasToBeanResultTransformer(target);
}
*/
query.setResultTransformer(Transformers.aliasToBean(Emp.class));
Emp emp= (Emp) query.uniqueResult();
System.out.println(emp);
}
}
hibernate10--命名查询的更多相关文章
- Hibernate 命名查询
1.定义 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式被称为命名查询. 2.创建表结构并添加测试数据 create table `student` ( `id` dou ...
- [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 使用Hibernate命名查询
HQL查询支持将查询所用的HQL语句放入配置文件中,而不是代码中,在Hibernate映射文件的<hibernate-mapping>元素中使用<query>子元素来定义命名查 ...
- Hibernate 命名查询NamedQuery (转)
转自:http://blog.163.com/ksm19870304@126/blog/static/374552332011993942391/ 配置方式: static List namedQue ...
- 12.hibernate命名查询
1.创建如下javaweb项目结构 2.在项目的src下创建hibernate.cfg.xml主配置文件 <?xml version="1.0" encoding=" ...
- Hibernate异常之命名查询节点未找到
异常信息: java.lang.IllegalArgumentException: No query defined for that name [salaryEmps] at org.hiberna ...
- Hibernate(十三)命名查询-批量处理和调用存储过程
一.命名查询 HQL语句混杂在代码之间将破坏代码的可读性 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式称为命名查询 二.建立数据表和持久化类 建立数据表 create ...
- Hibernate-ORM:14.Hibernate中的命名查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述命名查询,所谓命名查询是什么呢? Hibernate中允许我们在xml,实体类,甚至注解的方式来编 ...
- Hibernate命名查询
hibernate命名的查询是通过一些有意义的名称来使用查询的方式.就类似于使用别名一样. Hibernate框架提供命名查询的概念,以便应用程序员不需要将查询分散到所有的java代码,进一步提高代码 ...
- hibernate学习系列-----(5)hibernate基本查询下篇:hibernate聚合函数、分组查询及命名查询
在上一篇中,大致学习了hibernate的基本查询:HQL基本查询,今天,继续昨天的步伐,继续学习hibernate的基本查询..... 1.hql聚合函数,先大致列一下hql的聚合函数有哪些吧: 在 ...
随机推荐
- ASP.NET Core 发布
ASP.NET Core 发布,asp.netcore发布 第一步:运行 dotnet restore 命令,以还原项目中指定的依赖项 dotnet restore 第二步:使用 dotnet bui ...
- 无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失
在使用windows2012 的服务器或云主机时,服务器安装不了iis服务. 提示 “无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失”. 这个问题可能的原因是您的机器未设置虚拟内存,可 ...
- SharePoint PowerShell 修改母版页
前言 最近在群里帮忙回答问题,碰到这么一个尴尬的问题,有人创建了一个新母版页,然后引用了新的母版页,不知道怎么的母版页有问题了,再也进不去站点了,希望修改回旧的母版页. 看到问题,想了一下,其实两种方 ...
- Caffe-SSD相关源码说明和调试记录
1 对Blob的理解及其操作: Blob是一个四维的数组.维度从高到低分别是: (num_,channels_,height_,width_) 对于图像数据来说就是:图片个数,彩色通道个数, ...
- Mysql中DDL, DML, DCL, 和TCL是什么?
在一些公司中提交给测试团队的SQL脚本会划分为DDL.DML等,但这些概念到底是如何定义的呢? SQL(Structure Query Language)是数据库操作的的核心语言,接下来我们通过一张图 ...
- MySQL性能调优的10个方法 - mysql数据库栏目
摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...
- python接口自动化测试(一)-环境准备
接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当 ...
- 说说erlang tuple和record结构
erlang有两种复合结构.tuple和list,两者的区别是tuple子元素的个数是固定不变的.声明后就不能改变了.而list是可变的,能够通过[H|T]来取出或插入新元素. record有点像C/ ...
- OC 与 js 界面JSBridge交互
// 1.新建WebView self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; [self.view addSubv ...
- C#中,重新排列panel中的按钮
https://www.cnblogs.com/hfzsjz/archive/2010/08/13/1799068.html void ArrangeButtons(Panel pn) { , y = ...