• 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;
  • 相关阅读:
    Asp Net Core Fro MongoDB Part1
    Word 离线发布bolg测试
    Word 2016问题导致无法创建其他博客账号
    字符集工具
    人工智能笔摘
    js数组去重
    ##react-native学习笔记(windows android)##第4天,分析下目录结构
    ##react-native学习笔记(windows android)##第3天,解决白屏闪退问题
    ##react-native学习笔记(windows android)##第2天, Hello world !
    ##react-native学习笔记(windows android)##第1天,搭建开发环境
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6781687.html
Copyright © 2020-2023  润新知