其他编程

    今日:1918| 主题:304
收藏本版 (8)
发表新帖
打印 上一主题 下一主题

[百度网盘]hibernate — HQL语句总结

[复制链接]
跳转到指定楼层
楼主
admin 发表于 2017-10-2 07:35:33
3736 0

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,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

3.修改默认查询结果(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

4.修改默认查询结果(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

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

6.条件查询


  • //条件查询,参数索引值从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());
  •         }

7.update 数据

执行SQL语句(为什么要用SQL语句,我想是为了执行某些复杂的SQL语句吧)


  • String sql="update Table set field = 'test'"
  • Session session = HibernateSessionFactory.getSession();
  • session.createSQLQuery(sql).executeUpdate();
  • ts.commit();

执行HQL语句


  • String hql="update Table set field = 'test'"
  • Session session = HiberanteSessionFactory.getSession();
  • Transaction ts = session.beginTransaction();
  • Query query = session.createQuery(hql);
  • query.executeUpdate();
  • ts.commit();


吾爱编程网 - 免责声明
1、吾爱编程网为非营利性网站,全站所有资料仅供网友个人学习使用,禁止商用
2、本站所有文档、视频、书籍等资料均由网友分享,本站只负责收集不承担任何技术及版权问题
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除下载链接并致以最深的歉意
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、一经注册为本站会员,一律视为同意网站规定,本站管理员及版主有权禁止违规用户
6、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和吾爱编程网的同意
7、吾爱编程网管理员和版主有权不事先通知发贴者而删除本文




上一篇:使用 Fiddler 自定义百度云分享提取码
下一篇:Project configuration is not up-to-date with pom.xml
收藏
收藏
支持
支持
反对
反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表

平台简介

吾爱编程网:http://www.52pg.net/是IT技能学习交流平台,我们提供了丰富的移动端开发、php开发、web前端开发、android开发、Java开发、Python开发、大数据开发、区块链开发、人工智能开发以及html5等大量的实战视频教程资源。(如果我们有侵犯了您权益的资源请联系我们删除)

点击这里给我发消息|Archiver|手机版|小黑屋|站点地图|吾爱编程  |网站地图

Powered by Discuz! X3.2??? 2017-2020 Comsenz Inc.??吾爱编程网