批量查詢時出現的小問題 總結(注意一下即可,可繞路!!!)
業務需求: 前端傳入批量查詢的陣列引數,後端接收並處理(兩個小知識點隨記,注意一下即可,可繞路!!!)
過程再現:
$(function(){ alert(); var arr = new Array(2); arr[0] = "1100456324"; arr[1] = "1100456304"; console.info(arr.toString()); console.info(String(arr)); console.info(arr.join(",")); console.info(JSON.stringify(arr)); $.ajax({ url: "/domestic/registerExpandController/findCYInfosOfService.do", data: { userIds: String(arr), userIds2:JSON.stringify(arr) }, dataType: "json", type: "post", success: function (data) { } }) })
此處轉Json字串,後臺陣列接收引數有誤,多了箇中括號"[ ]";正確的引數傳入應該是如userIds接收的一樣,總結如下:
前臺引數傳入如格式 "1100456321,1100456326",在後臺用 陣列/List集合 型別進行引數接收時 可自動識別將其按
索引接收;所以此處進行批量刪除、批量查詢時無需如上轉Json後再剔除中括號"[ ]"。
在前臺可將陣列Array通過String()、toString()或join(",")來將 js 的陣列Array轉字串"1100456321,1100456326"
以應對後臺的接收:
全域性函式String():將物件的值轉換為字串;
Array.toString():把陣列轉換為字串,並返回結果;
Array.join():把陣列的所有元素放入一個字串。元素通過指定的分隔符進行分隔;
在對應的mapper.xml中:
<select id="findCYInfosOfService" resultType="map"> SELECT ZC.R2 r2,IFNULL(SUPPLY.R4,'') as head_img, ZC.USER_ID userId FROM usermanage.GCX_WS_USER_ZC ZC LEFT JOIN usermanage.GCX_WS_USER_SUPPLY SUPPLY ON ZC.USER_ID = SUPPLY.USER_ID WHERE 1=1 AND ZC.USER_ID IN (${temp.userIds}) AND ZC.DELETE_FLAG != 1 AND ZC.STATE='1' AND SUPPLY.DELETE_FLAG != 1 AND SUPPLY.FINDINGS_OF_AUDIT='已通過' <if test="end != -1"> limit #{start}, #{end} </if> </select>
使用 (${temp.userIds}) 與 (#{temp.userIds,jdbcType=VARCHAR})的區別:
使用前者,
使用後者,
使用前者$時查詢結果正確,而使用後#時不正確,後經分析可能是因為IN之後的 (1100456324,1100456304) 被認
為是一個整體,而使用#後進行了預編譯處理,用?進行了佔位,將1100456324,1100456304獨立成了一個整體,
改變了本身 (1100456324,1100456304) 在sql語句中原本所表達的含義,所以查詢失敗。
在Mybatis中#{ }與${ }的區別:
1. #{}能夠很大程度上防止sql注入,因為一個 #{ }將解析為一個 JDBC 預編譯語句(prepared statement)
的引數標記符, 即被解析為一個?引數佔位符,而${}不能;
2. ${}中間的變數就是直接替換成字串值,相當於字串拼接,而#{}相當於是某種型別的變數;
相關推薦
批量查詢時出現的小問題 總結(注意一下即可,可繞路!!!)
業務需求: 前端傳入批量查詢的陣列引數,後端接收並處理(兩個小知識點隨記,注意一下即可,可繞路!!!) 過程再現: $(function(){ alert(); var arr = new Array(2); arr[0] = "1100456324"; ar
微服務寫的最全的一篇文章(內容較多,可先收藏後慢慢研磨)
今年有人提出了2018年微服務將瘋狂至死,可見微服務的爭論從未停止過。在這我將自己對微服務的理解整理了一下,希望對大家有所幫助。 1.什麼是微服務 1)一組小的服務(大小沒有特別的標準,只要同一團隊的工程師理解服務的標識一致即可) 2)獨立的
salesforce零基礎學習(七十二)項目中的零碎知識點小總結(一)
gin 不同 grant dmi ima -m ron 角色 com 項目終於告一段落,雖然比較苦逼,不過也學到了好多知識,總結一下,以後當作參考。 一.visualforce標簽中使用html相關的屬性使用 曾經看文檔沒有看得仔細,導致開發的時候走了一些彎路。還好得到
c++的const小總結(2)
通過 con 其他 綁定 strong col 指針和引用 兩個 tle c++的const小總結(1) http://www.cnblogs.com/MyNameIsPc/p/7091631.html 頂層const和底層cnost 先憑經驗區分一下兩者的區別?
Mycat查詢時出現:Error Code: 1064. can't find any valid datanode
arc mysql查詢 根據 .cn .com pos log archive 理解 說明:這個錯誤是查詢時條件字段超過了範圍導致的。 解釋: 為什麽會出現範圍問題? 一般在MySQL查詢時不會因為字段的值超過了範圍而導致的,但是在Mycat中卻不是這樣認為的,Myc
Yii 訪問 Gii(腳手架)時出現 403 錯誤(非本地訪問)
Yii 訪問 Gii(腳手架)403錯誤今天配置好了服務器(win server + upupw(nginx+mysql))內的 Yii framework 2,測試項目的Gii設置,結果出現#403錯誤頁面: Error 403 You are not allowed to access this pag
linux4.11內核設備編譯時出現的問題(參考博客並更改的)
作文 成了 內核啟動參數 inf 編譯 下載 bin span console AllWinnerH3 linux4.11版本的bsp下載: https://pan.baidu.com/s/1mhU4a8K 密碼: b375 H3-linux4.11_bsp目錄就是所需
C++ 在容器A中查詢最後出現的容器B中的元素,並返回iterator(find_end)
#include <iostream> // cout #include <algorithm> // find_end #include <vector> // vector using namespace std; bo
【java專案】mybatis中的mapper查詢時返回其他實體(多用於多表查詢)
<select id="selectUserorder" resultType="com.pojo.Orderdetail" parameterType="java.lang.Integer"> SELECT a.o_status, a.o_no, a.uid,
caffe 安裝問題小總結(make pycaffe
caffe 安裝問題小總結(make pycaffe) 1\ Make pycaffe -j8編譯報錯 gedit ~/.bashrc開啟檔案,最後面加入 自己的路徑 export PYTHONPATH=/home/hyhuang/下載/caffe/python source ~/.ba
salesforce零基礎學習(九十)專案中的零碎知識點小總結(三)
本次的內容其實大部分人都遇到過,也知道解決方案。但是因為沒有牢記於心,導致問題再次出現還是花費了一點時間去排查了原因。在此記錄下來,好記性不如爛筆頭,爭取下次發現類似的現象可以直接就知道原因。廢話少說,進入正題。 我們在Goods__c表中有一個欄位型別為Picklist,欄位值有以下內容: 我們想要
python學習小總結(列表、元組、字典、集合、字符串)
添加列 xtend 16px 指定 替換 需要 isa utf-8 head ---恢復內容開始--- 一、列表(list) 1.添加 append():追加,在列表末尾添加元素。 列表名.append(添加的元素) extend():擴展,在列表末尾添加元素。 列表名.e
性能測試小總結(二) 需求、設計
很快 頻繁 響應時間 定律 圖片 常用功能 inf com 其余 二、性能測試的需求 1.1 確定性能測試點 1)用戶常用功能 2)系統業務邏輯復雜、數據流轉頻繁的功能 3)與外部系統的接口處 2.2 確定性能指標 1.響應時間,2/5/8s 很快 還可以 很慢 ,
######SQL多count查詢(不用子查詢,條件加對了就行)(注意:條件位置可變化。)》分析領導的實現過程。心得筆記。
===》分析領導的實現過程。心得筆記。 #業務場景:不同企業下有各自的角色。角色下有許可權(角色:許可權=多對多,有中間表)和使用者(角色:使用者=一對多,使用者表有個角色id) #表結構:看檔案。 #需求:登入使用者所屬企業id, #1 SELECT a.PB_R
stm32串列埠通訊的一個小總結(從底層進行理解)
從底層理解stm32USART串列埠通訊 以前學串列埠通訊踩過很多坑,過了一段時間又有些忘了,現在問了幾個很強很強的人差不多弄懂了,現在寫一寫總結,免得以後又忘了。 基本知識: 1、TDR和RDR都是USART_DR暫存器的緩衝區,指的是USART_DR的0到8位,TD
maven匯入包時出現的異常(pom檔案中project處紅線)
在pom檔案中新增依賴的時候,不小心斷網了,然後就在pom檔案中project處紅線---異常; 可能是先前下載的標記存入了本地庫的一個位置,阻止了重新匯入的過程; 找到本地倉庫的包的位置,檢視對應匯入失敗的包的位置,發現果然已經有一個檔案被建立...但是裡面沒有相應
各種集合如:Vector & ArrayList 等,小總結(小區別)
Vector & ArrayList 的主要區別 1) 同步性:Vector是執行緒安全的,也就是說是同步的 ,而ArrayList 是執行緒序不安全的,不是同步的 數2。 2)資料增長:當需要增長時,Vector預設增長為原來一倍 ,而ArrayList卻
python庫os的小總結(保持更新...)
os庫裡面提供了豐富的方法來處理檔案和目錄,自己在進行一些專案時經常用到,故記錄在下: 1. 返回當前的工作目錄 使用os.getcwd()函式,返回的是絕對路徑 2. 返回指定的資料夾包含的檔案或資料夾的名字的列表,這個列
自學JAVA程式設計的小總結(三)
本節主要寫的是陣列的定義及其陣列的簡單基本操作。 class ArrayDemo { //獲取陣列最大值 static int getMax(int[] nums) { int max = nums[0]; for (int in
自學JAVA程式設計的小總結(二)
本節主要寫如何定義方法,方法的過載和方法的遞迴操作 class WayDemo { //共同的200行程式碼的方法 static void doWork () { System.out.println("共同的200行程式碼"); }