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的聚合函数有哪些吧: 在 ...
随机推荐
- win10下搭建storm环境
原文:https://blog.csdn.net/lu_wei_wei/article/details/80843365 1.下载storm; http://mirror.bit.edu.cn/apa ...
- 搭建memcached使用:/usr/bin/phpize 安装memcached扩展的时候报错
Can't find PHP headers in /usr/include/phpThe php-devel package is required for use of this command ...
- SpringCloud无废话入门02:Ribbon负载均衡
1.白话负载均衡 在上一篇的介绍中,我们创建了两个一模一样的服务提供者:Provider1和Provider2,然后它们提供的服务也一模一样,都叫Hello-Service.为什么一样的服务我们要部署 ...
- 20170814 新鲜:EChart新增了日历图,要想办法用起来
比如我可以用下面这个图来展示某个电站的年报,看他之后一年每一天的发电量. 或者是在月报的时候看这个月每天的发电量.这个最妙的时候,他可以通过旁边的图例来筛选,从而产生一个动态的效果. 还有可以在 ...
- Switch语句的参数是什么类型的?
在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型. 从Java5开始,java中引入了枚举类型,即enum类型. 从Java7开始,exper还 ...
- 每天一个linux命令(4):mkdir
1.命令简介 mkdir (Make Directory 创建目录): 若指定目录不存在则创建目录.在创建目录时,要求创建目录的用户具有写权限,并应保证新建的目录没有重名. 2.用法 用法:mkdir ...
- git图解
- jetty9.4缓存文件目录自定义
jetty9.4安装包解压之后,有几个修改的地方和jetty7.6有不同,需要单独注意一下: 1. 端口设置 端口设置在${jetty_home}/start.ini中 2. 缓存文件生成目录 项目通 ...
- DES加密解密算法C语言代码实现
代码: #include<stdio.h> #include<string.h> #include<stdlib.h> /*-------------------- ...
- 深入理解linux系统下proc文件系统内容
深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...