`
lengchaotian
  • 浏览: 281072 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

hibernate4使用本地sql语句查询、删除

阅读更多

查询方法:由于带有条件查询参数太多没有封装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执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...

    hibernate将本地SQL查询结果封装成对象

    首先,本地SQL查询(Native SQL)是指直接在Hibernate中使用原生的SQL语句进行查询,而不是使用HQL(Hibernate Query Language)。这允许开发者充分利用SQL的功能,比如进行复杂的统计计算或者处理特定数据库的特性...

    Hibernate中Sql语句

    - **性能优化**:有时候为了优化查询性能,需要对底层的SQL语句进行精确控制。 - **特定功能支持**:某些数据库特有的功能只能通过原生SQL实现。 #### 二、如何在Hibernate中使用原生SQL? 给定代码示例中的`...

    Hibernate调用配置文件中的sql语句

    通过上述步骤,我们就可以在Hibernate项目中方便地使用配置文件中的SQL语句了。这种方式提高了代码的可读性和可维护性,特别是在处理复杂SQL时,避免了硬编码SQL到Java代码中。同时,它还支持参数化查询,能够有效...

    让hibernate输出sql语句参数配置.doc

    hibernate.show_sql 参数用于输出所有 SQL 语句到控制台。其取值为 true 或 false。当设置为 true 时,Hibernate 将输出所有 SQL 语句到控制台,方便开发者调试和优化数据库操作。 3. hibernate.format_sql ...

    hibernate将本地SQL查询结果封装成对象(最终)

    使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...

    hibernate实现动态SQL查询

    本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...

    Hibernate生产SQL语句

    总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...

    采用p6spy完整显示hibernate的SQL语句

    在开发和调试基于Hibernate的Java应用时,有时我们需要获取到SQL语句的完整形式,而不仅仅是Hibernate默认输出的参数化形式。在这种情况下,P6Spy是一个非常有用的工具。P6Spy是一个开源的JDBC代理库,它允许我们...

    Hibernate在Myeclipse下SQL语句演示

    4. **调试与日志**: 可以开启Hibernate的SQL日志,观察实际执行的SQL语句,帮助调试和优化查询。 综上所述,通过Myeclipse和Hibernate的结合,开发者可以高效地进行数据库操作,无需关心底层SQL细节,专注于业务...

    使用p6spy完整显示hibernate的SQL语句

    1. **SQL日志**:p6spy能够详细记录SQL语句的执行,包括查询、更新、插入和删除等,这对于调试和性能分析非常有帮助。 2. **性能分析**:p6spy可以记录每个SQL语句的执行时间,帮助我们找出数据库性能瓶颈。 3. **...

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    总的来说,Java打印漂亮的SQL语句是一个提高开发效率和代码质量的有效方法,通过使用如"PrettySQLFormatter"这样的工具,可以使得复杂的SQL查询变得更容易理解和维护,这对于大型项目或者涉及大量SQL操作的开发工作...

    Hibernate使用xdoclet生成映射文件和sql语句

    这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了如何结合这两个工具进行开发。 在早期的Java开发中,XDoclet是基于Javadoc注解的工具,它可以解析Java类中的特定注解,并根据这些注解...

    Hibernate SQLQuery 本地查询

    总结来说,"Hibernate SQLQuery 本地查询"这篇博客可能深入介绍了如何在Hibernate中使用SQLQuery执行自定义SQL查询,以及如何通过BaseDaoSupport类来封装这些查询,以提升代码的复用性和项目开发效率。通过对SQL...

    hibernate显示不带?的完整sql

    在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数值。通常,Hibernate默认输出的SQL语句会用问号(?)作为占位符,这在理解查询逻辑时可能会带来不便。本文将详细介绍...

    Java 使用注解拼接SQL语句

    "Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...

    hibernate将本地SQL查询结果封装成对象(最终).zip

    原生SQL查询允许开发者直接执行SQL语句,而HQL则是面向对象的查询语言,类似于SQL但更接近于Java。 4. 封装SQL查询结果为对象: - `Session`接口:执行SQL查询的主要入口点,它是Hibernate的核心接口,提供了打开...

    sql语句中用问号代替参数

    使用问号参数化查询是编写安全、高效SQL语句的关键实践。它不仅可以防范SQL注入,还能优化性能,同时减少因字符串拼接导致的潜在错误。在Java等编程语言中,通过`PreparedStatement`接口,我们可以轻松实现这一功能...

    Hibernate+本地SQL查询SQLQuery.pdf

    这段代码会执行一个查询所有猫(cats)的SQL语句,并将结果映射到Cat类的实例列表中。 2. **处理字段名冲突** 当查询涉及到多张表时,可能存在同名字段,这可能导致字段映射错误。为了避免这种问题,可以使用别名...

Global site tag (gtag.js) - Google Analytics