//HQL查询
// auto-import要设置true,如果是false,写HQL时要指定类的全名
//查询全部列
Query query = session.createQuery("from Dept");
System.out.println(query.list()); //查询指定列
Query query = session.createQuery("select d.depId,d.depName from Dept d");
System.out.println(query.list()); //查询指定列,并封装为对象,必须提供带参数的构造器
Query query = session.createQuery("select new Dept(d.depId,d.depName) from Dept d");
System.out.println(query.list()); //条件查询 一个条件、多个条件、and or between 模糊查询
Query query = session.createQuery("from Dept d where depName=?");
query.setString(0,"人事部");
query.setParameter(0,"人事部");
//条件查询,命名参数
Query query = session.createQuery("from Dept d where depId =:myid and depName=:name");
query.setParameter("myid",1);
query.setParameter("name","人事部");
//条件查询,between and查询
Query query = session.createQuery("from Dept d where depId between ? and ?");
query.setParameter(0,1);
query.setParameter(1,5);
//模糊查询
Query query = session.createQuery("from Dept d where depName like ?");
query.setParameter(0,"%部%");
System.out.println(query.list()); //集合函数统计,不支持count(1),uniqueResult()返回结果的第一行第一列中的值
Query query = session.createQuery("select count(*) from Dept");
System.out.println(query.uniqueResult()); //分组查询,查询employ表,统计每个部门的人数
Query query = session.createQuery("select e.dept, count(*) from Employee e group by e.dept");
//统计部门人数大于1的部门
Query query = session.createQuery("select e.dept, count(*) from Employee e group by e.dept having count(*) >1");
System.out.println(query.list()); //连接查询,内连接、左外连接、右外连接
//内连接,映射已经配置好了关系,关联的时候直接写对象的属性即可
//返回员工和部门组成的对象数组,写在前面的元素在结果集中也在前面
// SELECT e.empName, e.salary, d.deptName FROM t_employee e INNER JOIN t_dept d ON d.depId = e.dept_id
Query query = session.createQuery("select e.empName,e.salary,e.dept.depName from Employee e inner join e.dept");
List<Object[]> list = query.list();
for(int i=0;i<list.size();i++){
Object[] obj = list.get(i);
Employee employee = (Employee) obj[0];
Dept dept = (Dept) obj[1];
System.out.println(employee);
System.out.println(dept);
}
System.out.println(query.list());
//左外连接
// SELECT e.empName, e.salary, d.deptName FROM t_employee e LEFT JOIN t_dept d ON d.depId = e.dept_id
Query query = session.createQuery(" from Employee e left join e.dept");
List<Object[]> list = query.list();
for(int i=0;i<list.size();i++){
Object[] obj = list.get(i);
Employee employee = (Employee) obj[0];
Dept dept = (Dept) obj[1];
System.out.println(employee);
System.out.println(dept);
}//迫切内连接,将右表的对象填充到左表当中
Query query = session.createQuery("from Dept d inner join fetch d.emps");

将HQL查询语句放到映射文件中:

    <query name="getDept">
from Dept d where depName=?
</query>
<query name="getDept2">
<![CDATA[
from Dept d where depId < ?
]]>
</query>

使用查询语句

        Query query = session.getNamedQuery("getDept");
query.setParameter(0,"人事部");
Query query = session.getNamedQuery("getDept2");
query.setParameter(0, 4);
System.out.println(query.list());

使用c3p0连接池

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<!-- 通常,一个session-factory节点代表一个数据库 -->
<session-factory> <!-- 1. 数据库连接配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">juaner767</property>
<!-- 【连接池配置】 -->
<!--
数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 2. 其他相关配置 -->
<!-- 2.1 显示hibernate在运行时候执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 2.2 格式化sql
<property name="hibernate.format_sql">true</property> -->
<!-- 2.3 自动建表 -->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置连接驱动管理类 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 配置连接池参数信息 -->
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.max_size">4</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">10</property>
<property name="hibernate.c3p0.idle_test_period">30000</property>
<property name="hibernate.c3p0.acquire_increment">2</property> <!-- 3. 加载所有映射 -->
<mapping resource="com/juaner/hibernate/address/User.hbm.xml"/>
<!--<mapping resource="com/juaner/hibernate/department/Dept.hbm.xml"/>-->
<!--<mapping resource="com/juaner/hibernate/department/Employee.hbm.xml"/>-->
<!--<mapping resource="com/juaner/hibernate/project/Developer.hbm.xml"/>-->
<!--<mapping resource="com/juaner/hibernate/project/Project.hbm.xml"/>-->
<!--<mapping resource="com/juaner/hibernate/extendMap/Animal.hbm.xml"/>-->
</session-factory>
</hibernate-configuration>

HQL查询及Hibernate对c3p0连接池的支持的更多相关文章

  1. Hibernate配置C3P0连接池

    引入C3PO包 在hibernate.cfg.xml文件中配置 <!-- 数据库连接池的使用 --> <!-- 选择使用C3P0连接池 --> <property nam ...

  2. Hibernate -- 配置c3p0连接池, 事务隔离级别, 管理session

    知识点1:配置c3p0连接池(了解) * 引入c3p0-0.9.1.jar * 在hibernate.cfg.xml文件中增加如下配置 <!-- C3P0连接池设定--> <!-- ...

  3. (30)java web的hibernate使用-c3p0连接池配置

    hibernate支持c3p0连接池 需要导入c3p0的jar包 <!-- 配置连接驱动管理类 --> <property name="hibernate.connecti ...

  4. Hibernate 配置C3P0 连接池

    第一步在hibernate.cfg.xml配置 <!-- 连接池 --> <property name="hibernate.connection.provider_cla ...

  5. Hibernate的查询,二级缓存,连接池

    Hibernate的查询,二级缓存,连接池 1.Hibernate查询数据 Hibernate中的查询方法有5中: 1.1.Get/Load主键查询 使用get或者load方法来查询,两者之间的区别在 ...

  6. hibernate对连接池的支持和HQL查询

    hibernate对连接池的支持 连接池, 作用: 管理连接:提升连接的利用效率! 常用的连接池: C3P0连接池 Hibernate 自带的也有一个连接池,且对C3P0连接池也有支持! 只维护一个连 ...

  7. hibernate 查询、二级缓存、连接池

    hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept =  (Dept) session.get(Dept.class, 12); Dept dept =  (Dep ...

  8. C3P0连接池在hibernate和spring中的配置

    首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...

  9. Hibernate的配置中,c3p0连接池相关配置

    一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...

随机推荐

  1. (四)C语言柔性数组、指针赋值

    一.柔性数组 今天看了公司的代码,发现一个很奇怪的问题,后来自己写了类似代码,我先把代码贴出来吧. #include<stdio.h> #include<string.h> # ...

  2. Java异常与运行时异常,以及与线程的关系

    具体可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6171103.html 都写在里面了,为了避免更新不一致,这里就不再写一遍了.只给个链接. 注意Java和 ...

  3. git使用技巧

    git使用技巧 转载自:http://172.17.144.8/iceway.zhang/shares/201604/201604_git_tips.md.html 我们在工作中几乎每天都会用到git ...

  4. 【linux】设置 tomcat 开机启动

    方法一: linux 下tomcat开机自启动修改Tomcat/bin/startup.sh 为: export JAVA_HOME=/usr/java/j2sdk1.4.2_08 export CL ...

  5. OpenGL的视图变换、模型变换、投影变换、视口变换

    产生目标场景的过程类似于用照相机进行拍照: (1) 把照相机固定在三角架上,并让他对准场景从不同位置观察场景(视图变换) gluLookAt (2) 对场景进行安排,使各个物体在照片中的位置是我们所希 ...

  6. map each 工具函数

    工具函数  即全局性的函数作用主要是提供比如字符串,数组,对象等方面的遍历 字符串工具 $.trim(str)  去除字符串两边的空格 遍历机制 map函数(function (obj,index){ ...

  7. 合并Excel文件

    //合并Excel文件 private void MargeExcelFile(string destFile, string dirPath) { DirectoryInfo dir = new D ...

  8. H5网页播放器播不了服务器上的mp4视频文件

    打开IIS,在功能视图里找到MIME类型菜单,打开该菜单后鼠标右键添加.mp4扩展名的MIME类型video/mp4 其他视频文件播放不了估计也得在IIS里添加对应的MIME类型(从服务器下载文件时也 ...

  9. hdu 1710 二叉树的遍历

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1710 大意:给出一个二叉树的前序和中序,求其后序遍历 ps:1.在写链表时,需要写明typedef str ...

  10. jmeter笔记3

     1. 使用JMeter做性能测试(Windows) 1.1. 启动JMeter 下载JMeter的安装包,点击安装包\jakarta-jmeter-2.3RC4\bin下的jmeter.bat文件即 ...