zoukankan      html  css  js  c++  java
  • Hibernate系列教材 (八)- 基础

    使用Criteria进行数据查询。 
    与HQL和SQL的区别是Criteria 完全是 面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹

    步骤1:先运行,看到效果,再学习
    步骤2:模仿和排错
    步骤3:先看用Criteria 查询的效果
    步骤4:使用Criteria,根据name进行模糊查询

    步骤 1 : 先运行,看到效果,再学习

    老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。

    步骤 2 : 模仿和排错

    在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。 
    模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。 
    采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。 

    推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。 
    这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来 
    这里提供了绿色安装和使用教程:diffmerge 下载和使用教程

    步骤 3 : 先看用Criteria 查询的效果

    和使用HQL 进行查询得到的结果一样

    先看用Criteria 查询的效果

    步骤 4 : 使用Criteria,根据name进行模糊查询

    使用Criteria 查询数据
    1. 通过session的createCriteria创建一个Criteria 对象
    2. Criteria.add 增加约束。 在本例中增加一个对name的模糊查询(like)
    3. 调用list()方法返回查询结果的集合


    除此之外,Criteria 还可以很方便的进行进行分页查询获取总数

    package com.how2java.test;

      

    import java.util.List;

    import org.hibernate.Criteria;

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

    import org.hibernate.cfg.Configuration;

    import org.hibernate.criterion.Restrictions;

    import com.how2java.pojo.Product;

      

    public class TestHibernate {

        public static void main(String[] args) {

            SessionFactory sf = new Configuration().configure().buildSessionFactory();

      

            Session s = sf.openSession();

            s.beginTransaction();

            String name = "iphone";

              

            Criteria c= s.createCriteria(Product.class);

            c.add(Restrictions.like("name""%"+name+"%"));

            List<Product> ps = c.list();

            for (Product p : ps) {

                System.out.println(p.getName());

            }

            s.getTransaction().commit();

            s.close();

            sf.close();

        }

    }

    关注我,每天准时更新Java技术知识
    更多Java全栈内容,点击了解: https://how2j.cn/k/hibernate/hibernate-criterial/38.html

  • 相关阅读:
    (BFS 二叉树) leetcode 515. Find Largest Value in Each Tree Row
    (二叉树 BFS) leetcode513. Find Bottom Left Tree Value
    (二叉树 BFS DFS) leetcode 104. Maximum Depth of Binary Tree
    (二叉树 BFS DFS) leetcode 111. Minimum Depth of Binary Tree
    (BFS) leetcode 690. Employee Importance
    (BFS/DFS) leetcode 200. Number of Islands
    (最长回文子串 线性DP) 51nod 1088 最长回文子串
    (链表 importance) leetcode 2. Add Two Numbers
    (链表 set) leetcode 817. Linked List Components
    (链表 双指针) leetcode 142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789415.html
Copyright © 2011-2022 走看看