1. 程式人生 > >JdbcTemplate條件in的SQL寫法

JdbcTemplate條件in的SQL寫法

一般大家習慣的用法如下:

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

執行報錯。

    /**
     * 根據條件刪除
     * 
     * @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方式進行引數的匹配。

相關推薦

JdbcTemplate條件in的SQL寫法

一般大家習慣的用法如下: public List<Map<String, Object>> queryByFundid(int fundId) { String sql = "SELECT *

sql語句多條件簡單寫法

inner 寫法 color clas alt ren .cn log != 比如用戶可以按姓名跟添加時間任意情況搜索 拼接sql語句可以這樣寫 string sql1 = @"SELECT dbo.RenYuan.Name,

JPA常用查詢條件寫法

一對多 **predicates.add(root.join(root.getModel().getSet("libarySet", Libary.class)).get("id").in(ids));** 布林型別 pre

css :not的多個條件寫法

:not 偽類選擇器可以篩選不符合表示式的元素 例子 table tbody tr:not(:first-child):not(:last-child) td { text-align:

C標籤和s標籤的對比,特別是裡面的if判斷條件寫法

struts2標籤有if…..else <s:if></if> <s:else></s:else> 如果要用c標籤來表示if…..else 的效果 <c:choose>

sql-case,when的多條件組合寫法

1.decode 寫法簡介,只能寫表示式。 例:decode(表示式,條件1,值1,條件2,值2··· 預設值)  無法滿足多條件的寫法,比如,我要a-b = 0 且a !=0 用decode沒法實現 2.case when 能寫多條件 寫法一:case 表示式 wh

thinkphp中查詢,where條件集合寫法

1、字串模式查詢(_string)查詢多個“與”條件中巢狀“與”條件陣列條件可以和字串條件(採用_string 作為查詢條件)混合使用,例如:$User = M("User");// 例項化User物件$map['id']= array('neq',1);$map['name

資料庫查詢語句,追加條件寫法

本篇完全為專案中摘抄下來的,僅為本人記錄之用。外人看到,僅做參考。  @Override public PagedResult<InspPointResultDto> getPointPaged(PointCretiria tQuery) {

mysql 以查詢結果作為查詢條件sql寫法

SELECT dor.DEVICE_UUID AS deviceUuid, dor.OUTAGE_START AS outageStart, dor.OUTAGE_END AS outageEnd, dor.outageTime AS outageTime FROM ( S

sql查詢條件為空的另類寫法o( ̄▽ ̄)d

getx 不為 發現 語句 level nbsp lena type bsp 簡單描述:今天看老大提交的代碼,發現了一個有意思的事情,一條sql中判斷條件是空,老大的寫法,讓我眼前一亮。直接上代碼 代碼: <select id="getxxxs" resultMap=

根據查詢條件搜尋商品sql語句的寫法

問題: 在使用者使用查詢功能的時候,從前端傳送給我們後端的資訊(如下圖4個資訊),有可能不是4個都填上的,所以導致我們Dao層的sql語句不能夠寫死,那麼我們該如何新增這個變化的變數進去sql語句呢? 解決程式碼: 首先,我們將從前端獲取的資料在web

條件語句的另一種寫法

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> extern int g_a; //可以呼叫其他檔案中的定義;此為申明 main() { int a,b; scanf("%d",

python 寫函式在一定條件下需要呼叫自身時的寫法

例如以下這個函式: state = 1 def set_state(state): while state: set = int(input('請輸入9或5,顯示"hello world"\n')) if set == 9 or set == 5:

以checked選中作為判斷條件的各種寫法

<input type="radio" name="choice" id="ipt1"> <label for="ipt1">彈出1</label> <input type="radio" name="choice" id="ip

jdbcTemplate.update()的幾種寫法 以及NamedParameterJdbcTemplate

api提供了update的幾種呼叫寫法 //方法一直接在sql中拼接好了引數之後呼叫即可 @Override public int update(final String sql) throws DataAccessException { Assert.notNull(s

oracle資料庫使用時間作為查詢條件時的寫法

select 目標列 from 表名 where 時間列=to_date('時間','yyyy-mm-dd hh24:mi:ss');比如select name from birth_info whe

thinkphp 條件陣列的寫法

參考文件    http://www.thinkphp.cn/topic/7951.html 表示式 含義EQ 等於(=)NEQ 不等於(<>)GT 大於(>)EGT 大於等於(>=)LT 小於(<)ELT 小於等於(<=)LIKE 模糊

SQL Server 儲存過程中處理多個查詢條件的幾種常見寫法分析,我們該用那種寫法

最近發現還有不少做開發的小夥伴,在寫儲存過程的時候,在參考已有的不同的寫法時,往往很迷茫, 不知道各種寫法孰優孰劣,該選用那種寫法,以及各種寫法優缺點,本文以一個簡單的查詢儲存過程為例,簡單說一下各種寫法的區別,以及該用那種寫法 專業DBA以及熟悉資料庫的同學請無視。

mybatis針對Oracle資料庫進行(單個或多個條件)批量操作(新增、修改、刪除)的sql寫法--mysql

1、批量新增:   <insert id="addMonthDutyIntoDB" parameterType="java.util.List"> insert into TB_D

05、react之 條件判斷的四種寫法

條件判斷的四種寫法         1、三元表示式?: 2、使用變數,通過函式使用條件判斷語句,返回一個字串 3、直接在{}中呼叫函式 4、使用比較運算子&&   ||  ! 說明: