zoukankan      html  css  js  c++  java
  • HQL语句

    public class TestHibernate {
        Session session;
        Transaction tx;
        
        
        @After
        public void afterTest(){
            tx.commit();
            HibernateUtil.closeSession();
        }
        
        
        
        @Before
        public void initDate(){
            session=HibernateUtil.getSession();
            tx = session.beginTransaction();
        }
        
        /**
         * HQL检索所有Student表中的学生姓名
         * List<Student>
         * 
         */
        @Test
        public void selectTest(){
            Query query = session.createQuery("from Student");
            List<Student> list = query.list();
            for (Student item : list) {
                System.out.println(item.getName());
            }
        }
        
        /**
         * 检索Student表中一列
         * List<String>
         * 
         */
        @Test
        public void selectOnTest(){
            Query query = session.createQuery("select name from Student");
            List<String> list = query.list();
            for (String item : list) {
                System.out.println(item);
            }
        }
        
        
        /**
         * 检索Student表中多个列
         * List<Object[]>
         */
        @Test
        public void selectSomeTest1(){
            Query query = session.createQuery("select name,age from Student");
            List<Object[]> list = query.list();
            for (Object[] item : list) {
                
                System.out.println("姓名:"+item[0]+"	年龄:"+item[1]);
            }
        }
        
        /**
         * 检索Student表中多个列,有构造植入,返回的是强类型对象
         * 
         */
        @Test
        public void selectSomeTest2(){
            Query query = session.createQuery("select new Student(age,name,sid) from Student");
            List<Student> list = query.list();
            for (Student item : list) {
                System.out.println("ID:"+item.getSid()+"	姓名:"+item.getName()+"	年龄:"+item.getAge());
            }
        }
        
        
        /**
         * 匿名占位符   查找名称是 小明 的学生
         * 
         */
        @Test
        public void anonymousTest(){
            Query query = session.createQuery(" from Student where name=?");
            query.setParameter(0, "小明");
            List<Student> list = query.list();
            for (Student item : list) {
                System.out.println(item.getName());
            }
        }
        
        
        /**
         * 名称占位符   查找名称是 小明 的学生
         * 
         */
        @Test
        public void nameTest(){
            Query query = session.createQuery("from Student where name=:name");
            query.setParameter("name","小明");
            List<Student> list = query.list();
            for (Student item : list) {
                System.out.println(item.getName());
            }
        }
        
        
        /**
         * 绑定命名参数于一个对象的属性值   姓名是 小明 的学生
         * 名称占位符name必须和实体类里的一致
         */
        @Test
        public void bindNameTest(){
            StudentCondition stu=new StudentCondition();
            stu.setName("小明");
            
            Query query = session.createQuery("from Student where name=:name");
            query.setProperties(stu);
            List<Student> list = query.list();
            for (Student item : list) {
                System.out.println(item.getName());
            }
        }
        
        
        /**
         * 动态查询
         * 
         */
        @Test
        public void dynamicTest(){
            StudentCondition stu=new StudentCondition();
            stu.setName("小明");
            stu.setAge(17);
            
            StringBuilder sb=new StringBuilder();
            sb.append("from Student where 1=1");
            
            Student stu1=new Student();
            
            if (stu.getName()!=null) {
                sb.append(" and name=:name ");
                stu1.setName(stu.getName());
            }
            if (stu.getAge()!=null) {
                sb.append(" and age=:age ");
                stu1.setAge(stu.getAge());
            }
            
            Query query = session.createQuery(sb.toString());
            query.setProperties(stu);
            
            List<Student> list = query.list();
            for (Student item : list) {
                System.out.println(item.getName());
            }
        } 
        
    }
  • 相关阅读:
    在win2003中sql server2005的安装及配置
    excel多行以逗号拼接为一行
    git删除分支
    IeXglEvEyH
    excel为某列数据加双引号和逗号,用于拼接成json列表
    where 1=1 的作用
    ThreadLocal 定义、使用场景、案例、原理、注意事项
    gitlab第一次开发项目步骤
    git切回旧版本代码后再切回最新代码
    CountDownLatch与CyclicBarrier与Semaphore的区别
  • 原文地址:https://www.cnblogs.com/qingzhi/p/5825052.html
Copyright © 2011-2022 走看看