Spring Jdbc使用like模糊查询

    public List<WfConfigMVO> queryList(WfConfigMVO wfConfig) throws SysException {
        StringBuffer sql = new StringBuffer();
        sql.append("select WF_CONFIG_ID,WF_TEMPL_KEY,TIME_LIMIT,WF_NAME ");
        sql.append("from wf_config ");
        sql.append("where 1=1");

        List<WfConfigMVO> resultList = null;
        List<Object> params = new ArrayList<Object>();
        try {
            if (wfConfig != null) {
                if (isNotBlank(wfConfig.getWfConfigId())) {
                    sql.append(" and WF_CONFIG_ID=?");
                    params.add(wfConfig.getWfConfigId());
                }
                if (isNotBlank(wfConfig.getWfTemplKey())) {
                    sql.append(" and WF_TEMPL_KEY=?");
                    params.add(wfConfig.getWfTemplKey());
                }
                if (isNotBlank(wfConfig.getTimeLimit())) {
                    sql.append(" and TIME_LIMIT=?");
                    params.add(wfConfig.getTimeLimit());
                }
                if (isNotBlank(wfConfig.getWfName())) {
                    //开始我使用了下面的这种方法
                   // sql.append(" and WF_NAME like '%?%'");
                   // params.add(wfConfig.getWfName());  这样做就会报SqlException
                   //sql.append(" and WF_NAME like %?%");这里不要单引号也是会报异常的
                    //正确的方法如下
                    sql.append(" and WF_NAME=?");
                    params.add("%"+wfConfig.getWfName()+"%");//把‘%’放进参数中传递进去OK
                }
            }
            resultList = jdbcTemplate.query(sql.toString(),
                    params.toArray(),
                    new BeanPropertyRowMapper<WfConfigMVO>(WfConfigMVO.class));
        } catch (DataAccessException e) {
            e.printStackTrace();
            logger.error("查询WfConfig错误:{}", e.getMessage());
            throw new SysException("10000", "查询WfConfig错误", e);
        }
        return resultList;
    }    

  

posted @ 2014-12-26 15:35  Manu_xu  阅读(10622)  评论(2编辑  收藏  举报