zoukankan      html  css  js  c++  java
  • hibernate HQL和Criteria

    package com.test;
    
    import java.util.Date;
    import java.util.List;
    
    import org.hibernate.Query;
    import org.hibernate.Session;
    
    import com.entity.User;
    import com.hibernate.HibernateUtil;
    
    public class QueryTest 
    {
        public static void main(String[] args)
        {
            User user = new User();
            user.setName("name");
            user.setBirthday(new Date());
            HibernateUtil.addUser(user);
            query(user.getName());
        }
        static void query(String name)
        {
            Session s = null;
            try
            {
                s = HibernateUtil.getSession();
                String hql = "from User as user where user.name = ?";
                Query query = s.createQuery(hql);
                query.setString(0, name);
                List<User> list = query.list();
                for(User user:list)
                {
                    System.out.println(user.getId() + "  " + user.getName());
                }
            }
            finally
            {
                if(s != null)
                {
                    s.close();
                }
            }
        }
    }

    这段代码中,HibernateUtil是自己写的工具类,封装了一些方法。

    上面代码中,先add一个新的user。然后使用query运行hql语句。

    除了query.list();
    还有常用的query.uniqueResult();

     另外就是分页要用的方法:

    query.setFirstResult(1);
    query.setMaxResults(10);

    package com.test;
    
    import java.util.Date;
    import java.util.List;
    
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.Restrictions;
    
    import com.entity.User;
    import com.hibernate.HibernateUtil;
    
    public class Cri 
    {
        public static void main(String[] args)
        {
            User user = new User();
            user.setName("xiaoy");
            user.setBirthday(new Date());
            HibernateUtil.addUser(user);
            cri(user.getName());
        }
        static void cri(String name)
        {
            Session s = null;
            try
            {
                s = HibernateUtil.getSession();
                Criteria cri = s.createCriteria(User.class);
                cri.add(Restrictions.eq("name", name));
                List<User> list = cri.list();
                for(User u:list)
                {
                    System.out.print(u.getName() + " ");
                }
            }
            finally
            {
                if(s != null)
                {
                    s.close();
                }
            }
        }
    }

    Criteria使用方法也很简单,主要看调用Restrictions来设置查询条件。

  • 相关阅读:
    剑指offer23-二叉搜索树的后序遍历序列
    剑指offer24-二叉树中和为某一值的路径
    剑指offer-复杂链表的复制
    剑指offer-二叉搜索树与双向链表
    剑指offer-字符串的排序
    剑指offer-数组中出现次数超过一半的数字
    剑指offer-最小的k个数
    c++中参数加&与不加的区别
    第九届蓝桥杯(A组填空题)
    基于优先级的多道程序系统作业调度——基于优先级
  • 原文地址:https://www.cnblogs.com/rixiang/p/5365346.html
Copyright © 2011-2022 走看看