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;
  • 相关阅读:
    L2TP协议
    PPP协议
    centos 更新linux内核
    关于GRUB2
    误删除libc.so.6 恢复
    LVS DR模式 负载均衡服务搭建
    进程地址空间分布和可执行文件分布
    centos 开机启动服务
    【netcore基础】ConcurrentDictionary 使用字符串作为key给代码加锁且使用EF事物防止并发调用数据混乱的问题
    【年终总结】个人的2018年年终总结
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6781687.html
Copyright © 2011-2022 走看看