查询方法:由于带有条件查询参数太多没有封装hibernate参数paramlist
public List<MMSTable> listAll(Map<Object, String> map, int pn, int pageSize) throws Exception { // 定义StringBuffer对象,拼装sql语句 StringBuffer sb = new StringBuffer(); sb.append("select m.* from MMSTable as m "); if (!Global.isEmpty(map.get("mmsReceNo"))) { sb.append(" inner join ReceiptNoInfo as r on m.msgId = r.msgId"); } sb.append(" where 1=1 "); if (!Global.isEmpty(map.get("mmsSubject"))) { sb.append("and m.mmsSubject = '" + map.get("mmsSubject") + "'"); } if (!Global.isEmpty(map.get("startMmsDate"))) { sb.append("and m.mmsDate >= '" + map.get("startMmsDate") + "'"); } if (!Global.isEmpty(map.get("endMmsDate"))) { sb.append("and m.mmsDate <= '" + map.get("endMmsDate") + "'"); } if (!Global.isEmpty(map.get("mmsOrigNo"))) { sb.append("and m.mmsOrigNo = '" + map.get("mmsOrigNo") + "'"); } if (!Global.isEmpty(map.get("mmsReceNo"))) { sb.append(" and r.mmsReceNo like '" + map.get("mmsReceNo") + '%' + "'"); } if (!Global.isEmpty(map.get("mmsStatus"))) { sb.append("and m.mmsStatus = '" + map.get("mmsStatus") + "'"); } sb.append("order by m.mmsDate DESC"); // 获取本地sql语句对象 SQLQuery query = getSession().createSQLQuery(sb.toString()); // 设置将SQL表的别名和实体类联系起来 query.addEntity(MMSTable.class); // 分页代码 if (pn > -1 && pageSize > -1) { query.setMaxResults(pageSize); int start = pn; if (start != 0) { query.setFirstResult(start); } } // 执行查询方法,返回结果 List<MMSTable> mmsList = query.list(); // 返回执行结果 return mmsList; } /** * {@inheritDoc} */ @Override public int countAll(Map<Object, String> map) throws Exception { // 定义StringBuffer对象,拼装sql语句 StringBuffer sb = new StringBuffer(); sb.append("select count(*) from MMSTable as m "); // 如果接受电话号码存在则做内连接 if (!Global.isEmpty(map.get("mmsReceNo"))) { sb.append(" inner join ReceiptNoInfo as r on m.msgId = r.msgId"); } sb.append(" where 1=1 "); if (!Global.isEmpty(map.get("mmsSubject"))) { sb.append("and m.mmsSubject = '" + map.get("mmsSubject") + "'"); } if (!Global.isEmpty(map.get("startMmsDate"))) { sb.append("and m.mmsDate >= '" + map.get("startMmsDate") + "'"); } if (!Global.isEmpty(map.get("endMmsDate"))) { sb.append("and m.mmsDate <= '" + map.get("endMmsDate") + "'"); } if (!Global.isEmpty(map.get("mmsOrigNo"))) { sb.append("and m.mmsOrigNo = '" + map.get("mmsOrigNo") + "'"); } if (!Global.isEmpty(map.get("mmsReceNo"))) { sb.append(" and r.mmsReceNo like '" + map.get("mmsReceNo") + '%' + "'"); } if (!Global.isEmpty(map.get("mmsStatus"))) { sb.append("and m.mmsStatus = '" + map.get("mmsStatus") + "'"); } // 获取本地sql语句对象 SQLQuery query = getSession().createSQLQuery(sb.toString()); // 执行查询方法,返回结果 Integer count = Integer.valueOf(query.uniqueResult().toString()); return count; }
删除方法:
public void deleteMMSTable(String msgId) throws Exception { // 封装参数 Object[] paramlist = new Object[] {msgId}; // 拼装sql语句 String sql = "delete from MMSTable where msgId = ?"; // 执行sql语句 SQLQuery query = getSession().createSQLQuery(sql); setParameters(query, paramlist); query.executeUpdate(); }
相关推荐
"hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...
首先,本地SQL查询(Native SQL)是指直接在Hibernate中使用原生的SQL语句进行查询,而不是使用HQL(Hibernate Query Language)。这允许开发者充分利用SQL的功能,比如进行复杂的统计计算或者处理特定数据库的特性...
- **性能优化**:有时候为了优化查询性能,需要对底层的SQL语句进行精确控制。 - **特定功能支持**:某些数据库特有的功能只能通过原生SQL实现。 #### 二、如何在Hibernate中使用原生SQL? 给定代码示例中的`...
通过上述步骤,我们就可以在Hibernate项目中方便地使用配置文件中的SQL语句了。这种方式提高了代码的可读性和可维护性,特别是在处理复杂SQL时,避免了硬编码SQL到Java代码中。同时,它还支持参数化查询,能够有效...
hibernate.show_sql 参数用于输出所有 SQL 语句到控制台。其取值为 true 或 false。当设置为 true 时,Hibernate 将输出所有 SQL 语句到控制台,方便开发者调试和优化数据库操作。 3. hibernate.format_sql ...
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...
总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...
在开发和调试基于Hibernate的Java应用时,有时我们需要获取到SQL语句的完整形式,而不仅仅是Hibernate默认输出的参数化形式。在这种情况下,P6Spy是一个非常有用的工具。P6Spy是一个开源的JDBC代理库,它允许我们...
4. **调试与日志**: 可以开启Hibernate的SQL日志,观察实际执行的SQL语句,帮助调试和优化查询。 综上所述,通过Myeclipse和Hibernate的结合,开发者可以高效地进行数据库操作,无需关心底层SQL细节,专注于业务...
1. **SQL日志**:p6spy能够详细记录SQL语句的执行,包括查询、更新、插入和删除等,这对于调试和性能分析非常有帮助。 2. **性能分析**:p6spy可以记录每个SQL语句的执行时间,帮助我们找出数据库性能瓶颈。 3. **...
总的来说,Java打印漂亮的SQL语句是一个提高开发效率和代码质量的有效方法,通过使用如"PrettySQLFormatter"这样的工具,可以使得复杂的SQL查询变得更容易理解和维护,这对于大型项目或者涉及大量SQL操作的开发工作...
这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了如何结合这两个工具进行开发。 在早期的Java开发中,XDoclet是基于Javadoc注解的工具,它可以解析Java类中的特定注解,并根据这些注解...
总结来说,"Hibernate SQLQuery 本地查询"这篇博客可能深入介绍了如何在Hibernate中使用SQLQuery执行自定义SQL查询,以及如何通过BaseDaoSupport类来封装这些查询,以提升代码的复用性和项目开发效率。通过对SQL...
在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数值。通常,Hibernate默认输出的SQL语句会用问号(?)作为占位符,这在理解查询逻辑时可能会带来不便。本文将详细介绍...
"Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...
原生SQL查询允许开发者直接执行SQL语句,而HQL则是面向对象的查询语言,类似于SQL但更接近于Java。 4. 封装SQL查询结果为对象: - `Session`接口:执行SQL查询的主要入口点,它是Hibernate的核心接口,提供了打开...
使用问号参数化查询是编写安全、高效SQL语句的关键实践。它不仅可以防范SQL注入,还能优化性能,同时减少因字符串拼接导致的潜在错误。在Java等编程语言中,通过`PreparedStatement`接口,我们可以轻松实现这一功能...
这段代码会执行一个查询所有猫(cats)的SQL语句,并将结果映射到Cat类的实例列表中。 2. **处理字段名冲突** 当查询涉及到多张表时,可能存在同名字段,这可能导致字段映射错误。为了避免这种问题,可以使用别名...