zoukankan      html  css  js  c++  java
  • hibernate 中HQL查询

    由于比较简单,在此处只写一些HQL语言。

    表关系,多对一。

    CREATE TABLE `user` (
       `id` int(11) NOT NULL AUTO_INCREMENT,
       `uname` varchar(255) ,
       PRIMARY KEY (`id`)
     ) 
    CREATE TABLE `idcard` (
       `id` INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
       `addr` VARCHAR(255),
       `uid` INT(11) ,
       FOREIGN KEY (`uid`) REFERENCES `user` (`id`)
     )

    其中每张表都有对应的类,分别是User,IdCard

    1 查询全部

    Query q = session.createQuery("from User");
    List list = q.list();

    2 查询指定列

    Query q = session.createQuery("select u.uname, u.id from User u");

    3 条件查询,and,or,between,模糊查询

    Query q = session.createQuery("from User u where u.id between ? and ?");
    q.setParameter(0, 2);
    q.setParameter(1, 4);

    4 聚合函数,count;分组,group by

    Query q = session.createQuery("select i.iaddr,count(*) from User u, IdCard i where u.id=i.id group by i.iaddr ");
    List list = q.list();

    5 分页查询

    Query q = session.createQuery("from User");
    q.setFirstResult(2);
    q.setMaxResults(3);

    6 获取总记录数

    方法一:使用聚合函数COUNT(*)

    Query q = session.createQuery("select count(*) from User");
    Long result = (Long) q.uniqueResult();

    方法二:使用scroll(),首先滚动到最后,然后获取索引值

    Query q = session.createQuery("from User");
            
    ScrollableResults scrollResult = q.scroll();  //得到滚动的结果集
    scrollResult.last();                          //滚动到最后一行
    int result = scrollResult.getRowNumber() + 1; //获取当前值的索引值,因为是从0开始的,所以需要加1

    7 hibernate对数据库连接C3P0连接池的支持,配置参数,可以到hibrenate.properties文件中找到

    hibernate.cfg.xml配置文件如下

        <property name="hibernate.connection.driver_class">org.hibernate.connection.C3P0ConnectionProvider</property>
           <property name="hibernate.c3p0.min_size">2</property>
           <property name="hibernate.c3p0.max_size">10</property>
           <property name="hibernate.c3p0.max_statements">10</property>
           <property name="hibernate.c3p0.timeout">60</property>
           <property name="hibernate.c3p0.idle_test_period">10000</property>
           <property name="hibernate.c3p0.acquire_increment">3</property>

    在mysql中使用如下语句可以查看连接

    SHOW PROCESSLIST;
  • 相关阅读:
    转载 轻松搞定面试中的二叉树题目
    关于AVplayer 缓冲问题的处理
    关于iOS接收到推送消息后跳转问题
    iOS 黑魔法
    UITableView的优化
    OC是动态运行时语言是什么意思?什么是动态识别,动态绑定?
    iOS深复制和浅复制
    iOS内存管理(ARC,MRC)
    iOS数据持久化
    详解KVO,KVC
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6781687.html
Copyright © 2011-2022 走看看