HQL总结 Select new map()

PID调参避坑指南:为什么你的电机总是震荡?从比例带积分到微分实战解析 本文针对电机控制中常见的震荡问题,提供了一份PID调参实战指南。文章深入解析了比例(P)、积分(I)、微分(D)三个参数对系统稳定性的影响,揭示了比例增益过大是导致震荡的关键原因之一,并给出了从纯比例调试到引入积分、微分的系统化调参流程与避坑要点,帮助工程师快速实现电机平稳、精准的控制。 阅读详情

 

 

以个普通Users表为例:
建表语句:

CREATE DATABASE `interceptor`
CHARACTER SET 'utf8';
USE `interceptor`;
DROP TABLE IF EXISTS `users`;

create table users(
id int auto_increment primary key,
name varchar(10) not null,
passwd varchar(10) not null
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

User.java:
package com.domain;

public class Users implements java.io.Serializable {
private Integer id;
private String name;
private String passwd;
public Users() {
}
public Users(String name, String passwd) {
this.name = name;
this.passwd = passwd;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return this.passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
User.hbm.xml:



<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.domain.Users" table="users" catalog="interceptor">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="10" not-null="true" />
</property>
<property name="passwd" type="java.lang.String">
<column name="passwd" length="10" not-null="true" />
</property>
</class>
</hibernate-mapping>

1. 查询整个映射对象所有字段

//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段

String hql = "from Users";
Query query = session.createQuery(hql);

List<Users> users = query.list();
for(Users user : users){
System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());
}

输出结果为:
name1 : password1 : 1
name2 : password2 : 2
name3 : password3 : 3

2.查询单个字段

//查询单个字段

String hql = " select name from Users";
Query query = session.createQuery(hql);
List<String> list = query.list();
for(String str : list){
System.out.println(str);
}
输出结果为:
name1
name2
name3

3.查询其中几个字段

//查询其中几个字段

String hql = " select name,passwd from Users";
Query query = session.createQuery(hql);
//默认查询出来的list里存放的是一个Object数组
List<Object[]> list = query.list();
for(Object[] object : list){
String name = (String)object[0];
String passwd = (String)object[1];

System.out.println(name + " : " + passwd);
}

输出结果为:
name1 : password1
name2 : password2
name3 : password3

 

<参见http://www.cnblogs.com/tazi/archive/2011/12/19/2293693.html >

4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回

//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了
String hql = " select new list(name,passwd) from Users";
Query query = session.createQuery(hql);
//默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了
List<List> list = query.list();
for(List user : list){

String name = (String)user.get(0);
String passwd = (String)user.get(1);

System.out.println(name + " : " + passwd);
}

/**

输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/

5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回

//查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了
String hql = " select new map(name,passwd) from Users";
Query query = session.createQuery(hql);
//默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了

List<Map> list = query.list();
for(Map user : list){
//一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值
//如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了
String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形
String passwd = (String)user.get("1");
System.out.println(name + " : " + passwd);

}

/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/
6.修改默认查询结果(query.list())不以Object[]数组形式返回,以Set形式返回,但是因为Set里是不允许有重复的元素,所以:username和password的值不能相同。只需将hql改为:String
hql = " select new set(name,passwd) from Users";

7.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回
自定义类:
package com.domain;

public class MyUser {
private String username;
private String password;
//因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数
public MyUser(String username,String password){
this.username = username;
this.password = password;
}

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}




//通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> auto-import默认值为true(所以auto-import属性也可以不写),自动导入了
String hql = " select new  com.domain.MyUser(name,passwd) from Users";
Query query = session.createQuery(hql);
//默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了
List<MyUser> myUsers = query.list();
for(MyUser myUser : myUsers){
String name = myUser.getUsername();
String passwd = myUser.getPassword();
System.out.println(name + " : " + passwd);
}

/**

输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/




8:条件查询

//条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数
String hql = "from Users where name=? and passwd=?";
Query query = session.createQuery(hql);
//第1种方式
// query.setString(0, "name1");
// query.setString(1, "password1");
//第2种方式
query.setParameter(0, "name1",Hibernate.STRING);
query.setParameter(1, "password1",Hibernate.STRING);
List<Users> list = query.list();
for(Users users : list){
System.out.println(users.getId());
}

//条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数
String hql = "from Users where name=:username and passwd=:password";
Query query = session.createQuery(hql);
//第1种方式
// query.setString("username", "name1");
// query.setString("password", "password1");
//第2种方式,第3个参数确定类型
query.setParameter("username", "name1",Hibernate.STRING);
query.setParameter("password", "password1",Hibernate.STRING);
List<Users> list = query.list();
for(Users users : list){
out.println(users.getId());
}


//条件查询,通过setProperties设置参数
String hql = "from Users where name=:username and passwd=:password";
Query query = session.createQuery(hql);
//MyUser类的2个属性必须和:username和:password对应
MyUser myUser = new MyUser("name1","password1");
query.setProperties(myUser);
List<Users> list = query.list();
for(Users users : list){
System.out.println(users.getId());
}

摄像头模组选型避坑指南:如何根据Sensor和Lens参数匹配最佳组合 本文深入解析摄像头模组选型中Sensor与Lens的核心参数匹配要点。重点阐述了主光线角(CRA)匹配对边缘画质的关键影响,并提供了传感器尺寸、像素尺寸、焦距、光圈等参数的协同选型策略与实战避坑指南,帮助工程师在手机、安防、车载等不同应用场景下实现性能与成本的最佳平衡。 阅读详情

相关推荐

别再纠结了!手把手教你根据项目需求选对目标检测框架(MMDetection/Detectron2/YOLOv8实战对比)

本文详细对比了三大目标检测框架MMDetection、Detectron2和YOLOv8的适用场景与实战技巧,帮助开发者根据项目需求精准选型。从毕业设计到工业落地,分析不同场景下的核心需求与框架优势,提供决策树和避坑指南,确保技术选型与项目目标高度匹配。

weixin_30342209的博客 554

JPA的select new map()用法

使用select new map()可以优化查询语句,还能更好的查询一些语句。 传统查询语句: public interface LineRepository extends JpaRepository&lt;Line, String&gt; {     Line findOne(String startNumber);          @Query("selec...

U2133048的博客 6387

SSD盘符漂移导致OSD down场景模拟与恢复

运维团队反馈一个问题,现象是:某个OSD对应的cache分区发生了变化,比如原来cache使用的分区是/dev/sde,后来还是这块盘,但分区信息不知何故,变成了/dev/sdf(产品OSD设备并不是根据分区名称来map,而是根据partlabel),最终的现象是这个OSD down了,没法启动.接到这个现象的反馈后,记录一下这个问题在lab的复现方法。

Gavin Blog 938

HQL总结

以个普通Users表为例: 建表语句: CREATE DATABASE `interceptor` CHARACTER SET 'utf8'; USE `interceptor`; DROP TABLE IF EXISTS `users`; create table users( id int auto_increment primary key, name

Curtain~IT 363

锁定放大器

锁定放大器

qq_46757048的博客 4706

Windows11安装Ubuntu 20.04.3 LTS双系统(详细过程)

一、基础环境 听说BIOS模式的传统MBR模式和新式UEFI模式,会对安装双系统产生影响。Windows11应该都是UEFI吧,可以按win+r输入msinfo32回车确认查看BIOS模式,我的电脑是UEFI+双硬盘 Ubuntu安装准备 1、 官网下载Ubuntu 20.04.3 LTS镜像iso文件:https://ubuntu.com/download/desktop 2、 下载官网推荐的U盘启动制作工具rufus: https://rufus.ie/ 3、制作启动u盘 插入U盘, 运行 rufu

学习随笔 9万+

mysql new map_Hibernate调优之select new map()

Hibernate调优不只是设置一下lazy,调整一下由谁来维护这个字段而已。这次要说的是对查询语句进行优化mdash;mdash;select newHibernate调优之select new map()[日期:2013-12-08]来源:Linux社区作者:jianxin1009[字体:]Hibernate调优不只是设置一下lazy,调整一下由谁来维护这个字段而已。这次要说的是对查询语句进行...

weixin_42625070的博客 594

Vivado XDMA仿真实战:从配置到链路训练全解析

本文深入解析了Vivado中XDMA IP核的仿真实战流程,重点剖析了PCIe链路训练状态机(LTSSM)的工作原理与调试方法。通过搭建仿真环境、解读日志与波形,手把手指导如何从配置、链路训练(LTSSM)到BAR映射与DMA启动进行全流程分析与问题定位,帮助工程师掌握核心调试技能,确保PCIe链路稳定与数据传输正确。

weixin_29197051的博客 154

Hibernate调优之select new map()

Hibernate调优不只是设置一下lazy,调整一下由谁来维护这个字段而已。         这次要说的是对查询语句进行优化——select new map()。         select new map语句结果说明。         语句一:         String hql=“select s.name from Student s”;         Li

曹建新 放飞理想,收获希望 1万+

【CUT&TAG分析-加了spike in的样品】

使用 Bowtie2 或 Subread (subjunc) 来构建大肠杆菌的索引。bowtie2比对时设置参数–local, 局部比对。

weixin_57975238的博客 1400

【Bug—eNSP】华为eNsp路由器设备启动一直是0解决方案!

软件,添加AR设备时启动异常,最开始错误代码是40,最后通过重新安装,又出现了新的问题,启动AR设备一直是0,而且界面卡住。打开控制面板→网络和Internet→网络和共享中心→更改适配器设置,然后再按以下步骤一次操作。重新打开eNsp,然后选择注册设备,注册成功后重新启动一下,这个时候AR设备就可以正常启动啦。打开eNsp→菜单→工具→选项→服务器设置,写入刚刚写的IP地址就可以了。打开VirtualBox,将左侧的文件全部删除(点击删除所有文件)

享你所想 3417

Hibernate中关于hibernate hql select new map的用法详解

使用案例 String queryStr = "select new Map(c.id as id,c.name as name,c.pycode as pycode,c.postcode as postcode," + "c.areacode as areacode,c.sProvince.name as pname) from City c where c.sProvince.nam

4286

【C语言学习疑难杂症】第20期:0x00007FF7F2821964处引发的异常0xC0000005写入位置 0x0000000000000

检查代码中是否存在野指针访问的情况,确保在进行写入操作之前,内存已经被正确分配或初始化,并且在使用完毕后进行了正确的释放。空指针访问:代码尝试在空指针地址(0x0000000000000000)处进行写入操作,导致访问冲突。检查代码中是否存在数组越界的情况,确保在进行写入操作之前,数组的索引值在合法范围内。检查代码中是否存在空指针访问的情况,确保在进行写入操作之前,指针已经被正确初始化。野指针访问:代码尝试在已释放或未初始化的内存地址进行写入操作,导致访问冲突。

学无止境 828

Hibernate之HQL

Hibernate之HQL1 什么是hql2 hql和sql区别/异同3 hql的基本知识4 查询全部and连接查询5 处理返回的结果集6 hql中使用占位符7 创建BookDao.java方法类8 创建测试方法HqlTest.java类9 测试结果 1 什么是hql HQL是Hibernate Query Language的缩写 2 hql和sql区别/异同 HQL SQL 类名...

weixin_45346741的博客 192

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hibernate 的hql语句

1.什么是hql?  HQL是Hibernate Query Language的缩写 2. hql和sql区别/异同  HQL                                           SQL    类名/属性                                     表名/列名    区分大小写,关键字不区分大小写                 不...

qq_43227109的博客 193

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

HQL的select new map ···语法

通常hibernate查询出的结果集是类似于 List&lt;T&gt; 或 List&lt;Object[]&gt; 的类型 类似于下面这个方法 public List&lt;SfJmsfT&gt; getChosePayList(SfJmsfT jmsf) { List list = new ArrayList(); StringBuilder hql...

第一桶金的博客 456

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Hibernate HQL 中的select new map 使用实例 嵌套Map

1.关于select new map 的用法:

climber 1万+

hibernate项目的HQL(SQL区别、Select语句、返回list、map、object数组与单个对象)笔记整理

hibernate项目的HQL(SQL区别、Select语句、返回list、map、object数组与单个对象)笔记整理

渴望飞的鱼的博客 2687

HQL select 总结

阅读更多 1. 查询整个映射对象所有字段 Java代码  //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段             String hql = "fro...

li-zhang-yu的博客 1311

HQL中的select子句

一、select子句简介: 二、以对象数组形式返回选择的属性: public void testSelectClauseObjectArray(){            String hql= "select country.ccode,country.cname from Country as country";            

677

Hibernate查询dto模式/map模式 Hql/Sql

Hql 和sql都能 dto模式存储调用或者map集合接收及调用 Spring 中删除和修改需要注意 @Modifying 在HQL语句删除和修改时使用不然会报错 。还要为其注解事务 @Transactional 创建工厂 需要导入包 spring-orm 该包的路径导入 import org.springframework.orm.jpa.LocalContainerEntity...

marvin 777

hql中select new map的使用

例如tb 中有 pojo Login{String username;String password} 表            Login 字段名    username           password                   xiaoming            123456                  xiaohong              9

codecross的专栏 850

6.4.4:HQL查询的select子句

select子句用于选择指定的属性或直接选择某个实体,当然select选择的属性必须是from后持久化类包含的属性,譬如: select p.name from Person as pselect可以选择任意属性,即不仅可以选择持久化类的直接属性,还可以选择组件属性包含的属性,譬如: select p.name.firstname from Person as p在通常情况下,使用select

confirmAname的专栏 1087

HQL的new map语法(一)

通常hibernate查询出的结果集是类似于 List&lt;T&gt; 或 List&lt;Object[]&gt; 的类型 类似于下面这个方法 public List&lt;SfJmsfT&gt; getChosePayList(SfJmsfT jmsf) { List list = new ArrayList(); StringBuilder hql = new Str...

weixin_42124622的博客 1277

HQL 优化:从低效到高效的蜕变之旅

HQL 优化是一个系统性工程,需要从查询语法、执行计划、数据分布等多个角度进行分析和优化。通过本文介绍的优化策略,你可以显著提高 HQL 查询的性能,降低集群资源消耗。在实际工作中,建议结合具体业务场景,灵活运用这些优化方法,不断探索和实践,以达到最佳的优化效果。

qq_42773076的博客 1240
上一篇: MyEclipse 不常用的组合快捷键
下一篇: java中的内部类总结
java_hch
博客等级 码龄14年 14粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值