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; }