Hibernate将HQL语句转换成SQL语句
来源:互联网 发布:淘宝差评如何巧妙回复 编辑:程序博客网 时间:2024/06/11 03:37
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;
- }
- }
阅读全文
1 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语句总结
- 23种设计模式之命令模式
- JQuery效果-6.6
- 动态www服务器的请求流程原理
- JQuey淡入淡出,滑动方法-6.7
- 设计模式详解——迭代器模式
- Hibernate将HQL语句转换成SQL语句
- 需要获得一组具有相同的ID和name的input的几种尝试
- [js点击]JavaScript之Ajax技术01
- 只给出先序遍历和后序遍历不能唯一确定二叉树的例子
- 【代码笔记】iOS-NSJSONSerializationDemo
- 在线预览PDF/SWF
- [转] HBase-1.2.4LruBlockCache实现分析
- 设计模式详解——工厂模式(一)
- 【WEB开发技术】apache-tomcat-7.0.30的安装、配置、发布项目、教程说明