博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring - JdbcTemplate条件in的SQL写法
阅读量:6083 次
发布时间:2019-06-20

本文共 1304 字,大约阅读时间需要 4 分钟。

hot3.png

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

    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])

1
执行报错。

下面是正确的用法: 

参考资料: 
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

    /**

     * 根据条件删除
     * 
     * GaoPeng
     * freezeTypeList
     *
     */
    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方式进行参数的匹配。

 

转载于:https://my.oschina.net/xiaominmin/blog/3012855

你可能感兴趣的文章
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>
Qt多线程
查看>>
我的友情链接
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>