hql大全

 

package xy.Test;

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

import xy.Utility.HibernateAnnotationUtil;
import xy.model.Category;
import xy.model.Msg;
import xy.model.Topic;

public class TestClass
{

 public static void Insert()
 {
  Session session = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();
  
  // 设置10个板块
  for(int i = 0;i<10;i++)
  {
   Category c = new Category();
   c.setName("c" + i);
   session.save(c);
  }
  
  // 给第一个板块设置10个主题
  for(int i = 0;i<10;i++)
  {
   Category c = (Category)session.get(Category.class, 1);
   Topic t = new Topic();
   t.setCategory(c);
   t.setTitle("t" + i);
   t.setCreateTime(new Date());
   session.save(t);
  }
  
  // 给第一个板块设置10条回复
  for(int i = 0;i<10;i++)
  {
   Topic t = (Topic)session.get(Topic.class, 1);
   Msg m = new Msg();
   m.setContent("m"+i);
   m.setTopic(t);
   session.save(m);
  }
  session.getTransaction().commit();
 }
 
 public static void GetList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c from Category c");
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  s.getTransaction().commit();
 }
 
 
 public static void GetList1()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c from Category c where c.name > 'c5'");
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  s.getTransaction().commit();
 }
 
 public static void GetOrderedList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c from Category c order by c.name desc");
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  s.getTransaction().commit();
 }
 
 public static void GetOrderedList2()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select distinct c from Category c order by c.name desc");
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  s.getTransaction().commit();
 }
 
 public static void GetOrderedList3()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c from Category c where c.id > :min and c.id< :max");
  //q.setParameter("min", 2);
  //q.setParameter("max", 8);
  q.setInteger("min", 2);
  q.setInteger("max", 8);
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  s.getTransaction().commit();
 }
 
 // 可以用于分页
 public static void GetOrderedListPage()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c from Category c");
  q.setMaxResults(5);
  q.setFirstResult(2);
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  s.getTransaction().commit();
 }
 
 public static void GetNameList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c.name from Category c");
  List<String> list = (List<String>)q.list();
  for(String str : list)
  {
   System.out.println(str);
  }
  s.getTransaction().commit();
 }
 
 public static void GetIdAndNameList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c.id, c.name from Category c");
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] o : list)
  {
   System.out.println(o[0] + "........" + o[1]);
  }
  s.getTransaction().commit();
 }
 
 // 体现了对象之间的关联
 public static void GetTopic()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.title from Topic t where t.category.id = 1");
  List<String> list = (List<String>)q.list();
  for(String str : list)
  {
   System.out.println(str);
  }
  s.getTransaction().commit();
 }
 
 
 // 体现了对象之间的关联
 public static void GetMsg()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select m from Msg m where m.topic.category.id = 1");
  List<Msg> list = (List<Msg>)q.list();
  for(Msg m : list)
  {
   System.out.println(m.getContent());
  }
  s.getTransaction().commit();
 }
 
 public static void Join()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select c.name,t.title from Topic t join t.category c");
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0]+ "...."+m[1]);
  }
  s.getTransaction().commit();
 }
 
 
 public static void UniqueResult()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select m from Msg m where m = :MsgResult");
  Msg m = new Msg();
  m.setId(1);
  q.setParameter("MsgResult", m);
  
  // 会使用UniqueResult
  Msg msg = (Msg)q.uniqueResult();
  System.out.println(msg.getContent());
  s.getTransaction().commit();
  
 }
 
 public static void GetCount()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select count(*) from Msg");
  long count = (Long)q.uniqueResult();
  System.out.println(count);
 }
 
 public static void MinOrMaxList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select max(m.id),min(m.id),avg(m.id),sum(m.id) from Msg m");
  Object[] o = (Object[])q.uniqueResult();
  System.out.println(o[0] + "-" + o[1] + "-" + o[2] + "-" + o[3]);
 }
 
 
 public static void BetweenList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select m from Msg m where m.id between 3 and 5");
  
  List<Msg> list = (List<Msg>)q.list();
  for(Msg m : list)
  {
   System.out.println(m.getContent());
  }
  s.getTransaction().commit();
 }
 
 public static void InList()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select m from Msg m where m.id in (3,4,5)");
  
  List<Msg> list = (List<Msg>)q.list();
  for(Msg m : list)
  {
   System.out.println(m.getContent());
  }
  s.getTransaction().commit();
 }
 
 public static void IsNotNull()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select m from Msg m where m.content is not null");
  
  List<Msg> list = (List<Msg>)q.list();
  for(Msg m : list)
  {
   System.out.println(m.getContent());
  }
  s.getTransaction().commit();
 }
 
 // is not empty针对集合
 public static void IsNotEmpty()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t from Topic t where t.listMsg is not empty");
  
  List<Topic> list = (List<Topic>)q.list();
  for(Topic m : list)
  {
   System.out.println(m.getId());
  }
  s.getTransaction().commit();
 }
 
 //  %表示多个匹配
 //  _表示一个匹配
 public static void Like1()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t from Topic t where t.title like '%5'");
  
  List<Topic> list = (List<Topic>)q.list();
  for(Topic m : list)
  {
   System.out.println(m.getId());
  }
  s.getTransaction().commit();
 }
 
 
 public static void Like2()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t from Topic t where t.title like '_5'");
  
  List<Topic> list = (List<Topic>)q.list();
  for(Topic m : list)
  {
   System.out.println(m.getId());
  }
  s.getTransaction().commit();
 }
 
 public static void SomeMethods()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select lower(t.title),"
        +"upper(t.title),"
        +"trim(t.title),"
        +"concat(t.title,'***'),"
        +"length(t.title)"
        +" from Topic t");
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1] + "....." +m[3]);
  }
  s.getTransaction().commit();
 }
 
 // 取数据库服务器时间
 // 为什么要取数据库时间呢?因为可能多台服务器围绕一个数据库服务器
 public static void DateMethods()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select current_date,current_time,current_timestamp,t.id from Topic t");
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1] + "....." +m[2] + "......." + m[3]);
  }
  s.getTransaction().commit();
 }
 
 
 // 取数据库服务器时间
 // 为什么要取数据库时间呢?因为可能多台服务器围绕一个数据库服务器
 public static void DateMethods2()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.id,t.title from Topic t where t.createTime <= :Date");
  q.setParameter("Date", new Date());
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1]);
  }
  s.getTransaction().commit();
 }
 
 // Group by 后面必须出现在select里面
 public static void GroupBy()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.title,count(*) from Topic t group by t.title");
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1]);
  }
  s.getTransaction().commit();
 }
 
 // having后面跟的是函数,否则的话用where就行了
 public static void HavingMehtods()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.title,count(*) from Topic t group by t.title having count(*) >= 1");
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1]);
  }
  s.getTransaction().commit();
 }
 
 // 查询语句嵌套
 public static void Embedded()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.title,t.id from Topic t where t.id < (select avg(t.id) from Topic t)");
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1]);
  }
  s.getTransaction().commit();
 }
 
 
 // All指的是取到的所有值
 // < All指的是小于取到的所有值,也就是取最小的值
 public static void AllMethods()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.title,t.id from Topic t where t.id < ALL(select t.id from Topic t)");
  
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1]);
  }
  s.getTransaction().commit();
 }
 
 // exsit方法的用法
 // 查找没有回复的主题
 // 与IsNotEmpty()效果一样
 // exists比in效率高
 public static void ExistOrNot()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("select t.title,t.id from Topic t where not exists (select m.id from Msg m where m.topic.id = t.id)");
  List<Object[]> list = (List<Object[]>)q.list();
  for(Object[] m : list)
  {
   System.out.println(m[0] + "...." + m[1]);
  }
  s.getTransaction().commit();
 }
 
 
 public static void Update()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("update Topic t set t.title = upper(t.title)");
  q.executeUpdate();
  s.getTransaction().commit();
 }
 
 
 public static void Delete()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.createQuery("delete Msg m where m.id = 1");
  q.executeUpdate();
  s.getTransaction().commit();
 }
 
 public static void GetQueryWithQueryName()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  Query q = s.getNamedQuery("select.certainTopic");
  q.setParameter("id", 5);
  Topic t = (Topic)q.uniqueResult();
  System.out.println(t.getTitle());
  s.getTransaction().commit();
 }
 
 // NativeSQL
 // 这里from的是表名,不是对象名
 public static void NativeSQL()
 {
  Session s = HibernateAnnotationUtil.getSessionFactory().getCurrentSession();
  s.beginTransaction();
  SQLQuery q = s.createSQLQuery("select * from category limit 2,5").addEntity(Category.class);
  List<Category> list = (List<Category>)q.list();
  for(Category c : list)
  {
   System.out.println(c.getName());
  }
  
  s.getTransaction().commit();
 }
 

}

时间: 2024-10-21 11:10:07

hql大全的相关文章

Mac实用快捷键有哪些 mac快捷键大全

  之前我们已经介绍过MacBook入门基础内容,以及mac的一些小工具技巧,还有新手必看mac系统常见疑问解答.今天,跟安下小编来跟更深入的了解Mac的用途以及更多Mac超实用使用技巧,mac快捷键大全就在这里. 有需要的朋友可以查看: 新手必看:mac系统常见疑问解答; Mac系统入门基本知识; 不多说,马上进入Mac实用快捷键教程. Mac中实用快捷键有哪些 Mac实用快捷键快速上手教程最常用的按键介绍: 1.win键,也称为"苹果键",也有人成为"花键" 2

Oracle错误代码大全

Oracle错误代码大全--最新.最全的Oracle错误代码 对快速查找oracle数据库错误原因很有帮助 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 OR

重要资料、软件、平台等网址大全

重要资料.软件.平台等网址大全 HHI之HEVC:http://www.hevc.info/ JTC-VC:http://phenix.int-evry.fr/jct/ JTC-VC会议:http://phenix.int-evry.fr/jct/    http://wftp3.itu.int/av-arch/jctvc-site/ FFmpeg官网:http://ffmpeg.org/ HEVC官方测试模型HM平台下载地址:https://hevc.hhi.fraunhofer.de/svn

hql语句查询实体类News的属性category为“生活类新闻”的LIST,HQL语句怎么写?

问题描述 hql语句查询实体类News的属性category为"生活类新闻"的LIST,HQL语句怎么写? 用SSH框架,写一个实现类,查询实体类News的属性category为"生活类新闻"的LIST 返回一个LIST,该怎么写???????????????????? 实体类为News 属性为category 数据库中表名为t_news category为属性 import java.util.List; import org.springframework.st

DotNet 资源大全

原文:DotNet 资源大全 转自:http://blog.jobbole.com/96676/ API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台. ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备. ServiceStack :架构缜密.速度飞快.令人愉悦的 web 服务. Nelibur:Nelibur 是一个使用纯 WCF 构建的基于消息

DotNet 资源大全中文版

原文:DotNet 资源大全中文版 转自:https://github.com/jobbole/awesome-dotnet-cn 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大.这

HTTP协议返回状态码大全

2014年腾讯招聘题中有这样一道题  浏览器访问某页面,HTTP协议返回状态码为403时表示:(B) A 找不到该页面 B 禁止访问 C 内部服务器访问 D 服务器繁忙 处于兴趣,网络搜集了状态返回码大全,属于计算机网络的知识[都说了是搜集的,非原创] HTTP返回状态代码 当用户试图通过HTTP或FTP协议访问一台运行主机上的内容时,Web服务器返回一个表示该请求的状态的数字代码.该状态代码记录在服务器日志中,同时也可能在 Web 浏览器或 FTP客户端显示.也就是我们打开页面发生错误时浏览器

Word2003/2007常用快捷键大全

Word对于我们办公来说,是不可缺少的办公软件,因为没有它我们可能无法进行许多任务.所以现在的文员和办公室工作的人,最基础的就是会熟悉 的使用Office办公软件.在此,为提高大家Word使用水平,为大家提供word2003和word2007所有的常用快捷键大全. 常用快捷键 快捷键 作用 Ctrl+Shift+Spacebar 创建不间断空格 Ctrl+ -(连字符) 创建不间断连字符 Ctrl+B 使字符变为粗体 Ctrl+I 使字符变为斜体 Ctrl+U 为字符添加下划线 Ctrl+Shi

Word2007/2003常用快捷键大全

常用快捷键 快捷键 作用 Ctrl+Shift+Spacebar 创建不间断空格 Ctrl+ -(连字符) 创建不间断连字符 Ctrl+B 使字符变为粗体 Ctrl+I 使字符变为斜体 Ctrl+U 为字符添加下划线 Ctrl+Shift+ 缩小字号 Ctrl+Shift+> 增大字号 Ctrl+Q 删除段落格式 Ctrl+Spacebar 删除字符格式 Ctrl+C 复制所选文本或对象 Ctrl+X 剪切所选文本或对象 Ctrl+V 粘贴文本或对象 Ctrl+Z 撤消上一操作 Ctrl+Y 重