ITKeyword,专注技术干货聚合推荐

注册 | 登录

ibatis动态获取执行SQL和参数

Ctrain 分享于 2016-05-19

推荐:iBatis动态SQL标签用法

1、动态SQL片段 通过SQL片段达到代码复用         <!-- 动态条件分页查询 -->          < sql id ="sql_count" >                 select count(*)          </

2018阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=82lei0yp

动态SQL的最好做法是在日志中记录一下执行的SQL,如下为在执行过程中获取SQL和参数的方案

    /** * 查询总条数 */
    public int queryCountByScriptSQL(Map<String, String> parmMap)
            throws LasBusinessException {
        try {
            // debug("queryCountByScriptSQL in");
            List res = getSqlMapClientTemplate().queryForList(
                    "valAdded.queryCountByScriptSQL", parmMap);
            SqlMapExecutorDelegate delegate = ((ExtendedSqlMapClient) (getSqlMapClientTemplate()
                    .getSqlMapClient())).getDelegate();
            MappedStatement ms = delegate
                    .getMappedStatement("valAdded.queryCountByScriptSQL");
            Sql sql = ms.getSql();
            RequestScope requestScope = new RequestScope();
            requestScope.setStatement(ms);
            String sqlStr = sql.getSql(requestScope, parmMap);
            // ParameterMap p = sql.getParameterMap(requestScope, parmMap);
            Object[] sqlParam = sql.getParameterMap(requestScope, parmMap)
                    .getParameterObjectValues(requestScope, parmMap);
            System.out.println("----------->" + sqlStr);
            for (int i = 0; i < sqlParam.length; i++) {
                System.out.println("----参数[" + (i + 1) + "]------->" + sqlParam[i]);
            }
            // System.out.println("----------->"+p.toString());
            return Integer.parseInt(res.get(0).toString());
        } catch (DataAccessException e) {
            if (e.getErrorCode().equals(DB_LOCK_NOWAIT_CODE)) {
                throw new LasBusinessException(DB_LOCK_NOWAIT_MESSAGE, e);
            } else {
                throw new LasAppException("ElisLas系统异常", e);
            }
        } catch (Exception e) {
            throw new LasAppException("ElisLas系统异常", e);
        }
    }

推荐:ibatis 动态查询SQL的写法:

动态SQL的写法: 开始 <dynamic 条件成立时前面要加的字符串 prepend ="字符串"> <属性关键字 (见下表) prepend="字符串" 判断条件的对象属性名 property="字符

动态SQL的最好做法是在日志中记录一下执行的SQL,如下为在执行过程中获取SQL和参数的方案 /** * 查询总条数 */ public int queryCountByScriptSQL(Map<String, String> parmMap)

相关阅读排行


用户评论

游客

相关内容推荐

阿里云RDS

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。