<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Calibri; mso-fareast-font-family:宋体; mso-hansi-font-family:Calibri; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:337343904; mso-list-template-ids:-1930547840;} @list l1 {mso-list-id:622343370; mso-list-template-ids:-1064941450;} @list l2 {mso-list-id:768741823; mso-list-template-ids:314239220;} @list l3 {mso-list-id:930310502; mso-list-template-ids:1653253762;} @list l4 {mso-list-id:992946330; mso-list-template-ids:-1942436294;} @list l5 {mso-list-id:1246038259; mso-list-template-ids:719636244;} @list l6 {mso-list-id:1490487529; mso-list-template-ids:612413166;} @list l7 {mso-list-id:2018923177; mso-list-template-ids:-547059332;} @list l8 {mso-list-id:2106655902; mso-list-template-ids:-1446508740;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->
. 查询整个映射对象所有字段
- // 直接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
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){
- System.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());
- }