Hibernate将HQL语句转换成SQL语句
来源:互联网 发布:idea中导入hadoop源码 编辑:程序博客网 时间:2024/05/16 08:09
Hibernate已经是不单单是ORM框架了,从Hibernate的社区就能看到其发展前景了。其在Java开发中很是常见.
其特有的HQL语句还是Java开发者必备技能。但是有时间HQL不是很好用或者不确定其转换后的SQL语句形式。亦或
只是为了偷懒,比如利用一条语句完成结果集检索和数量统计。需要将HQL语句转换成SQL语句!
Hibernate本身就提供了其实现类,只是知道的人并不多而已!
org.hibernate.hql.internal.ast.QueryTranslatorImpl;
具体的代码实现。
package app.dao.util;import lombok.Getter;import lombok.Setter;import org.hibernate.SessionFactory;import org.hibernate.hql.internal.ast.QueryTranslatorImpl;import org.hibernate.internal.SessionFactoryImpl;import org.springframework.stereotype.Repository;import javax.annotation.Resource;import java.util.Collections;import java.util.List;@Repository("hibernateUtil")public class HibernateUtil { @Resource(name = "sessionFactory") @Getter @Setter private SessionFactory sessionFactory; /** * 将hql语句转换为sql语句,无参数 * * @param hql 要转换的hql语句 * @return 可执行的sql语句, 当返回null, 可以通过getResultMsg()方法查看处理结果信息 */ public String transHqlToSql(String hql) { // 当hql为null或空时,直接返回null if (hql == null || hql.equals("")) { return ""; } // 获取当前session // 得到session工厂实现类 SessionFactoryImpl sfi = (SessionFactoryImpl) sessionFactory; // 得到Query转换器实现类 QueryTranslatorImpl queryTranslator = new QueryTranslatorImpl(hql, hql, Collections.EMPTY_MAP, sfi); queryTranslator.compile(Collections.EMPTY_MAP, false); // 得到sql String sql = queryTranslator.getSQLString(); return sql; } /** * 将hql语句转换为sql语句,不需要格式化参数的情况 * * @param hql 要转换的hql语句 * @param paramValues hql参数值列表,注意与参数的顺序一致 * @return 可执行的sql语句, 当返回null, 可以通过getResultMsg()方法查看处理结果信息 */ public String transHqlToSql(String hql, List paramValues) { // 要返回的sql语句 String sql = transHqlToSql(hql); // 当为null或空时,返回null if (sql == null || sql.equals("")) { return null; } // 赋参数值 if (paramValues != null && paramValues.size() > 0) { for (int i = 0; i < paramValues.size(); i++) { sql = sql.replaceFirst("\\?", "\\'" + paramValues.get(i).toString() + "\\'"); } } return sql; }}
0 0
- Hibernate将HQL语句转换成SQL语句
- Hibernate将HQL语句转换成SQL语句
- Hibernate的HQL查询语句对比Sql语句学习
- Hibernate的HQL查询语句对比Sql语句学习
- Hibernate的HQL查询语句对比Sql语句学习
- hibernate 的sql语句以及hql语句增删改查
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- Hibernate查询语句+HQL
- hibernate查询语句---HQL
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- hibernate查询HQL语句
- hibernate--HQL查询语句
- Hibernate 中HQL语句
- Hibernate 中HQL语句
- hibernate -- HQL语句总结
- 一台电脑上同时启动两个tomcat http://blog.knowsky.com/188652.htm
- django通过已经存在的数据库建立app对应的model
- 【框架】[Spring]纯Java方式实现AOP拦截-详解ThrowsAdvice异常通知
- pgsql提示启动成功但查不到进程
- seo点击积累一:缺少keywords和description的meta标签
- Hibernate将HQL语句转换成SQL语句
- 自定义控件-下拉刷新
- TOJ 3203.Pay Back
- 南阳理工OJ 题目115 城市平乱
- 流体力学及其工程应用
- 直方图中最大矩形面积
- Unity Shaders 基础篇(二) 基本操作
- 多重json字符串解析
- http问题