SSH学习笔记(8)__Hibernate_查询操作
查询所有记录 条件查询 模糊查询 排序查询 分页查询 投影查询 聚集函数 内连接 左外连接 右外连接 内连接 左外连接 右外连接 迫切内连接 迫切左外连接 立即查询 延迟查询
发布日期:2021-04-30 21:03:31
浏览次数:102
分类:精选文章
本文共 5283 字,大约阅读时间需要 17 分钟。
Day04
目录标题
1. 对象导航查询
查询某个客户里面所有联系人过程,使用对象导航实现。
代码
// 根据cid=1客户,再查询这个客户里面所有联系人Customer customer = session.get(Customer.class, 1);// 直接得到客户里面联系人的set集合Setlinkman = customer.getSetLinkMan();// 发送语句System.out.println(linkman.size());
2. OID查询
根据id查询记录
代码
// 根据cid=1客户,再查询这个客户里面所有联系人Customer customer = session.get(Customer.class, 1);
3. HQL查询
hibernate query language,用于对实体类进行查询操作。
HQL常用语句
查询所有客户
// 创建query对象Query query = session.createQuery("from Customer");// 调用方法得到结果List list = query.list();// 遍历结果for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 条件查询
// 创建query对象Query query = session.createQuery("from Customer c where c.cid=? and c.custName=?");// 设置参数值query.setParameter(0, 1); // cid=1query.setParameter(1, "百度"); // custName=百度// 获取结果List list = query.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 模糊查询
// 创建query对象Query query = session.createQuery("from Customer c where c.custName like ?");// 设置参数值query.setParameter(0, "%百%"); // 模糊查询百度// 获取结果List list = query.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 排序查询
// 创建query对象Query query = session.createQuery("from Customer order by cid desc");// 获取结果List list = query.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 分页查询
// 创建query对象Query query = session.createQuery("from Customer");// 设置分页参数query.setFirstResult(0); // 起始位置query.setMaxResults(3); // 每页显示的记录数// 获取结果List list = query.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 投影查询
// 创建query对象Query query = session.createQuery("select custName from Customer");// 获取结果List 聚集函数
// 查询客户总数Query query = session.createQuery("select count(*) from Customer");Object obj = query.uniqueResult();Long lobj = (Long) obj;int count = lobj.intValue();System.out.println(count); 4. QBC查询
使用Criteria对象实现查询
查询所有
// 创建Criteria对象Criteria criteria = session.createCriteria(Customer.class);// 获取结果Listlist = criteria.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());}
条件查询
// 创建Criteria对象Criteria criteria = session.createCriteria(Customer.class);// 添加条件criteria.add(Restrictions.eq("cid", 1));criteria.add(Restrictions.like("custName", "%百%"));// 获取结果List list = criteria.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 排序查询
// 创建Criteria对象Criteria criteria = session.createCriteria(Customer.class);// 设置排序规则criteria.addOrder(Order.desc("cid"));// 获取结果List list = criteria.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());} 分页查询
// 创建Criteria对象Criteria criteria = session.createCriteria(Customer.class);// 设置分页参数criteria.setFirstResult(0);criteria.setMaxResults(3);// 获取结果Listlist = criteria.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());}
统计查询
// 创建Criteria对象Criteria criteria = session.createCriteria(Customer.class);// 设置投影操作criteria.setProjection(Projections.rowCount());// 获取结果Object obj = criteria.uniqueResult();Long lobj = (Long) obj;int count = lobj.intValue();System.out.println(count);
离线查询
// 创建DetachedCriteria对象DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);// 获取执行的Criteria对象Criteria criteria = detachedCriteria.getExecutableCriteria(session);// 获取结果Listlist = criteria.list();for (Customer customer : list) { System.out.println(customer.getCid() + "::" + customer.getCustName());}
HQL多表查询
Mysql多表查询
HQL多表查询
HQL内连接
// 创建query对象Query query = session.createQuery("from Customer c inner join c.setLinkMan");// 获取结果List list = query.list(); 迫切内连接
// 创建query对象Query query = session.createQuery("from Customer c inner join fetch c.setLinkMan");// 获取结果List list = query.list(); HQL左外连接
// 创建query对象Query query = session.createQuery("from Customer c left outer join c.setLinkMan");// 获取结果List list = query.list(); 迫切左外连接
// 创建query对象Query query = session.createQuery("from Customer c left outer join fetch c.setLinkMan");// 获取结果List list = query.list(); Hibernate检索策略
延迟查询
// 延迟查询客户Customer customer = session.load(Customer.class, 2);// 获取客户信息System.out.println(customer.getCid());System.out.println(customer.getCustName());
关联级别延迟
// 根据cid=1客户,再查询这个客户里面所有联系人Customer customer = session.get(Customer.class, 1);// 获取客户的联系人Setlinkman = customer.getSetLinkMan();// 输出联系人数量System.out.println(linkman.size());
批量抓取
// 查询所有客户Criteria criteria = session.createCriteria(Customer.class);Listlist = criteria.list();// 获取每个客户的联系人for (Customer customer : list) { Set linkman = customer.getSetLinkMan(); for (LinkMan linkMan : linkman) { System.out.println(linkMan.getLkm_id() + "::" + linkMan.getLkm_name()); }}
批量设置
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2026年06月11日 02时49分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Redis入门
2025-05-03
PHP 截取字符串乱码的解决方案
2023-02-28
php 接口类与抽象类的实际作用
2023-02-28
PHP 插入排序 -- 折半查找
2023-02-28
PHP 支持8种基本的数据类型
2023-02-28
php 放大镜,放大镜放大图片效果
2023-02-28
PHP 数据库连接池实现
2023-02-28
php 数组 区别,PHP中数组的区别
2023-02-28
PHP 数组怎么添加一个元素
2023-02-28
PHP 文件操作
2023-02-28
php 文字弹幕效果代码,HTML5文字弹幕效果
2023-02-28
php 时间日期函数,获取今天开始时间,结束时间
2023-02-28
php 标准规范
2023-02-28
PHP 浮点型精度运算相关问题
2023-02-28
php 浮点型计算精度问题
2023-02-28
php 特定时间段统计,jpgraph某个时间段的数据统计
2023-02-28
php 生成csv mac下乱码
2023-02-28
php 生成证书 签名及验签
2023-02-28
PHP 的标准输入与输出
2023-02-28
php 笔记 (早前的,很乱)
2023-02-28