一般大家习惯的用法如下:

    public List<Map<String, Object>> queryByFundid(int fundId) {        
        String sql = "SELECT * FROM t_freeze_detail WHERE fund_id = ? AND flag = ? AND freeze_state = ?";
        return jt.queryForList(sql, new Object[]{fundId, Const.FLAG_NORMAL, FreezeDetailBean.FREEZE_STATUS_FROZEN});

通过问号的顺序,在jt(JdbcTemplate).queryForList后将参数对号入座。避免程序被注入。

但是当我们使用in的时候,这种方法就不好用了,相信你想过,用List匹配问号。你会发现出现这种的SQL:

select * from user where id in ([1,2])

执行报错。

下面是正确的用法:
参考资料:
https://codedump.io/share/wiR37rEpCp2X/1/how-to-pass-list-parameter-in-in-clause-using-jdbctemplate
http://www.technicalkeeda.com/spring-tutorials/spring-jdbctemplate-in-clause-example

* 根据条件删除 * @author GaoPeng * @param freezeTypeList * @return public int deleteRaiseRiskByCondition(int fundId, List<Integer> freezeTypeList) { NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jt.getDataSource()); Map<String, Object> params = new HashMap<String, Object>(); params.put("fundId", fundId); params.put("freezeType", freezeTypeList); String sql = "delete from t_freeze_detail where fund_id=:fundId and freeze_type in (:freezeType)"; return namedParameterJdbcTemplate.update(sql, params);

这我用了一个delete的例子,其他的类似,大家举一反三。
程序中用了NamedParameterJdbcTemplate类,然后通过:freezeType方式进行参数的匹配。

一般大家习惯的用法如下: public List<Map<String, Object>> queryByFundid(int fundId) { String sql = "SELECT * FROM t_freeze_detail WHERE fund_id = ? AND flag = ? AND freeze_state = ?"; re
jdbcTemplate in()传参1.JdbcTemplate2.NamedParameterJdbcTemplate3.传参 1.JdbcTemplate 传统的jdbc模板,这里jdbctemplate 的in语句传参没有搞出来,建议更换为or,如果非要用jdbcTemplate的话。 2.NamedParameterJdbcTemplate 看类名也知道,具体的名字参数的jdbcTemp...
@Override public int updateSolveByIds(String ids) { System.out.println("ids = " + ids); // ids = 3,4,2 //字符串根据逗号切割成数
试了半天,终于找到了JdbcTemplate中in的用法,JdbcTemplate自己不能使用in,借助NamedParameterJdbcTemplate 能实现in的用法 @Autowired private DataSource dataSource; //数据源注入即可使用 public void assignBatch(List todoIds, String teamMem
JdbcTemplate带in参数的写法  好吧。几种带in参数的预编译SQL(绑定变量)方法马上补全了。   Hibernate带in参数套路   Oracle存过带in参数套路   终于遇到JdbcTemplate带in参数的绑定变量问题了,果然又是坑[捂脸]。先吐槽一下:spring的这个JdbcTemplate真不好用。 来一段代码:String sql="update a set
最近在使用Spring jdbcTemplate时,使用in作为条件查询时,碰到一点问题。直接使用jdbcTemplate进行查询会将集合类型的参数解析成多个问号?拼接成的占位符,这不是我们想要的。 试过多种处理方案后,发现可以借助org.springframework.jdbc.core.namedparam... 1.1、门面型日志框架: JCL:Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging SLF4J:是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j) 1.2、记录型日志框架: JUL:JDK中的日志...
JdbcTemplate进行带in条件SQL语句查询返回集合 在使用Spring jdbcTemplate时,使用in作为条件查询时,碰到一点问题。直接使用jdbcTemplate进行查询会将集合类型的参数解析成多个问号?拼接成的占位符,将集合变成字符串的话,MySQL会报错提示Truncated incorrect DOUBLE value。 试过多种处理方案后,发现可以借助org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplat
JdbcTemplate中向in语句传参 spring jdbc包提供了JdbcTemplate和它的两个兄弟SimpleJdbcTemplate和NamedParameterJdbcTemplate,我们先从JdbcTemplate入手, 引入问题,领略一下类NamedParameterJdbcTemplate在处理where中包含in时的便利和优雅。 首先创建实体类Employee:...
jdbcTemplate中in的用法与其他的用法不同,不能用?占位符传参,需要直接将参赛拼接到sql,并且字符串要用两个''号引起来,这样跟数据库查询方式相同 @Test public void testJdbcTemplateIn() throws Exception{ String mobile = "'15097016348','17607180718'"; String
Spring Boot 接入支付宝,实战来了! 支付宝推出了新的转账接口alipay.fund.trans.uni.transfer(升级后安全性更高,功能更加强大) ,老转账接口alipay.fund.trans.toaccount.transfer将不再维护,新老接口的一个区别就是新接口采用的证书验签方式。 使用新接口要将sdk版本升级到最新版本。 接下来看集成步骤。 1.将支付宝开放平台里下载的3个证书放在resources下面 2.写支付宝支付的配置文件 alipay.properti