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;

    }    

  

你可能感兴趣的:(Spring JDBC)