分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

Hibernate相关的查询 --Hibernate框架基础

发布时间:2023-09-06 01:59责任编辑:彭小芳关键词:Hibernate

接着上一篇博文:Hibernate第一个程序(最基础的增删改查) --Hibernate本例是对Hibernate查询的扩展,新建一个类

QueryTest.java:

 ?1 package com.test; ?2 ??3 import java.util.List; ?4 ??5 import org.hibernate.Session; ?6 import org.junit.Test; ?7 ??8 import com.beans.Student; ?9 import com.utils.HbnUtils; 10 ?11 public class QueryTest { 12 ?13 ????/** 14 ?????* 添加测试数据 15 ?????*/ 16 ????@Test 17 ????public void test_01() { 18 ????????Session session = HbnUtils.getSession(); 19 ????????try { 20 ????????????session.beginTransaction(); 21 ????????????Student student1 = new Student("貂蝉", 20, 92); 22 ????????????Student student2 = new Student("王昭君", 22, 93); 23 ????????????Student student3 = new Student("杨玉环", 23, 94); 24 ????????????Student student4 = new Student("李师师", 24, 95); 25 ????????????Student student5 = new Student("苏小小", 25, 96); 26 ????????????Student student6 = new Student("李师师", 28, 96); 27 ????????????Student student7 = new Student("张云云", 20, 91); 28 ????????????session.save(student1); 29 ????????????session.save(student2); 30 ????????????session.save(student3); 31 ????????????session.save(student4); 32 ????????????session.save(student5); 33 ????????????session.save(student6); 34 ????????????session.save(student7); 35 ????????????session.getTransaction().commit(); 36 ????????} catch (Exception e) { 37 ????????????// TODO: handle exception 38 ????????????session.getTransaction().rollback(); 39 ????????????e.printStackTrace(); 40 ????????} 41 ????} 42 ?43 ????/** 44 ?????* 使用SQL语句查询学生信息(作比较) 45 ?????*/ 46 ????@Test 47 ????public void testQuery_SQL() { 48 ????????Session session = HbnUtils.getSession(); 49 ????????try { 50 ????????????session.beginTransaction(); 51 ????????????String sql = "SELECT tid,tname,tage,tscore FROM t_student "; 52 ????????????List<Student> list = session.createSQLQuery(sql) 53 ????????????????????.addEntity(Student.class).list(); 54 ????????????for (Student student : list) { 55 ????????????????System.out.println(student); 56 ????????????} 57 ????????????session.getTransaction().commit(); 58 ????????} catch (Exception e) { 59 ????????????// TODO: handle exception 60 ????????????e.printStackTrace(); 61 ????????????session.getTransaction().rollback(); 62 ????????} 63 ????} 64 ?65 ????/** 66 ?????* 使用HQL查询学生信息 67 ?????*/ 68 ????@Test 69 ????public void testQuery_HQL01() { 70 ????????Session session = HbnUtils.getSession(); 71 ????????try { 72 ????????????session.beginTransaction(); 73 ????????????String hql = "FROM Student ORDER BY tscore DESC"; 74 ????????????List<Student> list = session.createQuery(hql).list(); 75 ????????????for (Student student : list) { 76 ????????????????System.out.println(student); 77 ????????????} 78 ????????????session.getTransaction().commit(); 79 ????????} catch (Exception e) { 80 ????????????// TODO: handle exception 81 ????????????e.printStackTrace(); 82 ????????????session.getTransaction().rollback(); 83 ????????} 84 ????} 85 ?86 ????/** 87 ?????* 查询指定字段的信息 88 ?????*/ 89 ????@Test 90 ????public void testQuery_HQL_02() { 91 ????????Session session = HbnUtils.getSession(); 92 ????????try { 93 ????????????session.beginTransaction(); 94 ????????????String hql = "FROM Student WHERE id=:id";// :后的id:属性名,Studetn:类名 95 ????????????Student student = (Student) session.createQuery(hql) 96 ????????????????????.setInteger("id", 3).uniqueResult(); 97 ????????????System.out.println(student); 98 ????????????session.getTransaction().commit(); 99 ????????} catch (Exception e) {100 ????????????// TODO: handle exception101 ????????????e.printStackTrace();102 ????????????session.getTransaction().rollback();103 ????????}104 ????}105 106 ????/**107 ?????* 简单聚合查询108 ?????*/109 ????@Test110 ????public void testQuery_HQL_03() {111 ????????Session session = HbnUtils.getSession();112 ????????try {113 ????????????session.beginTransaction();114 ????????????String hql = "SELECT COUNT(*) from Student";115 ????????????Long count = (Long) session.createQuery(hql).uniqueResult();116 ????????????System.out.println(count);// 打印有多少条数据117 ????????????session.getTransaction().commit();118 ????????} catch (Exception e) {119 ????????????// TODO: handle exception120 ????????????e.printStackTrace();121 ????????????session.getTransaction().rollback();122 ????????}123 ????}124 125 ????/**126 ?????* 投影查询127 ?????*/128 ????@Test129 ????public void testQuery_HQL04() {130 ????????Session session = HbnUtils.getSession();131 ????????try {132 ????????????session.beginTransaction();133 ????????????String hql = "SELECT new ?Student(name,age) From Student";// 将查询到的字段通过构造方法封装到对象,然后保存在list中134 ????????????List<Student> list = session.createQuery(hql).list();135 ????????????for (Student student : list) {136 ????????????????System.out.println(student);//只查询到name、age信息,其他则为默认137 ????????????}138 ????????????session.getTransaction().commit();139 ????????} catch (Exception e) {140 ????????????// TODO: handle exception141 ????????????e.printStackTrace();142 ????????????session.getTransaction().rollback();143 ????????}144 ????}145 146 ????/**147 ?????* 查每个年龄段的第一个人148 ?????*/149 ????@Test150 ????public void testQuery_HQL05() {151 ????????Session session = HbnUtils.getSession();152 ????????try {153 ????????????session.beginTransaction();154 ????????????String hql = "FROM Student GROUP BY age";155 ????????????List<Student> list = session.createQuery(hql).list();156 ????????????for (Student student : list) {157 ????????????????System.out.println(student);158 ????????????}159 ????????????session.getTransaction().commit();160 ????????} catch (Exception e) {161 ????????????// TODO: handle exception162 ????????????e.printStackTrace();163 ????????????session.getTransaction().rollback();164 ????????}165 ????}166 167 ????/**168 ?????* 查询有几个年龄段169 ?????*/170 ????@Test171 ????public void testQuery_HQL06() {172 ????????Session session = HbnUtils.getSession();173 ????????try {174 ????????????session.beginTransaction();175 ????????????String hql= "select age from Student group by age";176 ????????????List<Integer> list = session.createQuery(hql).list();177 ????????????System.out.println(list);178 ????????????session.getTransaction().commit();179 ????????} catch (Exception e) {180 ????????????// TODO: handle exception181 ????????????e.printStackTrace();182 ????????????session.getTransaction().rollback();183 ????????}184 ????}185 186 ????/**187 ?????* 查询年龄大于1人的年龄段188 ?????*/189 ????@Test190 ????public void testQuery_HQL07() {191 ????????Session session = HbnUtils.getSession();192 ????????try {193 ????????????session.beginTransaction();194 ????????????String hql= "select age from Student group by age having count(age) > 1";195 ????????????List<Integer> list = session.createQuery(hql).list();196 ????????????System.out.println(list);197 ????????????session.getTransaction().commit();198 ????????} catch (Exception e) {199 ????????????// TODO: handle exception200 ????????????e.printStackTrace();201 ????????????session.getTransaction().rollback();202 ????????}203 ????}204 }

附:个人网站www.nxl123.cn(后台采用Python Flask框架搭建,2019年1月1日将升级完成并正式启用。哎,本人是学生狗呢!网站做的不好希望大家多多提意见或建议吧!?别骂我就好!……以后SEO什么的还得多向大家学习……)

Hibernate相关的查询 --Hibernate框架基础

原文地址:https://www.cnblogs.com/qikeyishu/p/9158624.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved