maybatis 各種零散知識總結(傳參,返回值,標籤等)
1. MyBatis的傳入引數parameterType型別分兩種
1. ①. 基本資料型別:int,string,long,Date;
1. ②. 複雜資料型別:類和map (parameterType="java.util.HashMap")
③. 如果傳參為 陣列,List (parameterType="java.util.ArrayList" 一般用於for each標籤 下面將會介紹到)
像1。這種基本傳參型別 我就不說了 。下面簡單介紹一下②
一般遇到傳如多個引數的時候 一般會選擇會新建個實體 或者 創個map
1.1 實體傳參 (假設引數的實體為 User 路徑為:
serviceimpl 中 一般用 實體.set 設定屬性就可以了
- User user=new User();
- user.setName('張三');
- user.setAge(18);
- user.setSex('男');
- user.setIdnumber('1888888888');
一般 mapper .xml檔案配置為
- <selectid="queryCarMakerList"resultMap="BaseResultMap"parameterType="com.vanke.Entity.User
- select
- *
- from common_car_make cm
- where 1=1
- <iftest="name!= null">
- and cm.name= #{name,jdbcType=DECIMAL}
- </if>
- <iftest="age!= null">
- and cm.name = #{carDeptName,jdbcType=VARCHAR}
- </if>
- <iftest="sex!= null">
- and cm.sex = #{carMakerName,jdbcType=VARCHAR}
- </if>
- <iftest="idnumber != null">
- and cm.idnumber = #{hotType,jdbcType=number}
- </if>
- ORDER BY cm.id
- </select>
serviceimpl 中
- Map map=new HashMap();
- map.put("name","張三");
- map.put("age","18");
- map.put("sex","男");
- map.put("idnumber","18888888888888");
- <selectid="queryCarMakerList"resultMap="BaseResultMap"parameterType="map">
- select
- *
- from common_car_make cm
- where 1=1
- <iftest="name!= null">
- and cm.name= #{name,jdbcType=DECIMAL}
- </if>
- <iftest="age!= null">
- and cm.name = #{carDeptName,jdbcType=VARCHAR}
- </if>
- <iftest="sex!= null">
- and cm.sex = #{carMakerName,jdbcType=VARCHAR}
- </if>
- <iftest="idnumber != null">
- and cm.idnumber = #{hotType,jdbcType=number}
- </if>
- ORDER BY cm.id
- </select>
2.MyBatis的返回引數型別分兩種
1.1. resultMap :(自己指定返回的引數 )
① 先定義一個<resultMap id 即為 resultMap 的命名>
<resultMap id="HouseResultMap"type="com.vankeHouse"> <id property="id" column="id"/> <result property="dev_code" column="dev_code"/> <result property="dev_name" column="dev_name"/> <result property="pro_code" column="pro_code"/>
② 設定返回型別 resultMap=“HouseResultMap”
<select id="getHouserRoom" parameterType="int" resultType="HouseResultMap"> SELECT <include refid="getHouserR"/> from house where id=#{id} </select>
③ 當返回型別為 map時 (① 返回結果為String)
service:
2. 返回為sum時
*****
原因是,sum() 的結果是作為 java.math.BigDecimal 來處理的, 而他不能直接轉換成 java.lang.Integer,所以報錯。
1.2. resultType :int,string,long,實體
如果有的小夥伴要問 要返回 List 怎麼辦
1. 如果返回 List<String> 返回型別為 String即可
2. 如果返回 List<Entity> 返回型別為 實體 即可
3 . mybatis中#和$繫結引數的區別 以及用途
① #()方式能夠很大程度防止sql注入。
② $方式無法防止Sql注入。
預設情況下,使用#{} 格式的語法會導致MyBatis建立預處理語句屬性並以它為背景設定安全的值(比如?)。這樣做很安全,很迅速也是首選做法,有時你只是想直接在SQL語句中插入一個不改變的字串。比如,像ORDER BY,你可以這樣來使用:
ORDER BY ${columnName}
#{}
將傳入的資料都當成一個字串,會對自動傳入的資料加一個雙引號。如:order by #{id},如果傳入的值是111,那麼解析成sql時的值為order by “111”, 如果傳入的值是id,則解析成的sql為order by “id”。 (sql報錯)${}
將傳入的資料直接顯示生成在sql中。如:order by
${id},如果傳入的值是111,那麼解析成sql時的值為order by 111, 如果傳入的值是id,則解析成的sql為order
by id。
4.Mybatis中 常用的<if><where><foreach><set><choose>等標籤詳解
sql語句where條件中,需要一些安全判斷,例如按性別檢索,如果傳入的引數是空的,此時查詢出的結果很可能是空的,也許我們需要引數為空時,是查出全部的資訊。這是我們可以使用動態sql,增加一個判斷,當引數不符合要求的時候,我們可以不去判斷此查詢條件。一個很普通的查詢:
- <!-- 查詢學生list,姓名 -->
- <selectid="getStudentListLikeName"parameterType="StudentEntity"resultMap="studentResultMap">
- SELECT * from userWHERE name=#{name}
- </select>
一。<if>標籤:
- <selectid=" getStudentListLikeName "parameterType="StudentEntity"resultMap="studentResultMap">
- SELECT * from user
- <iftest="name!=null and name!='' ">
- WHERE name=#{name}
- </
相關推薦
maybatis 各種零散知識總結(傳參,返回值,標籤等)
1. MyBatis的傳入引數parameterType型別分兩種 1. ①. 基本資料型別:int,string,long,Date; 1. ②. 複雜資料型別:類和map (parameterType="java.util.HashMap")③. 如果傳參為
python開發編程基礎:函數定義,返回值,參數
pan span true 調用 odin pwd 括號 問題 pre 一,函數的定義 1,函數mylen叫做函數名 #函數名 #必須由字母下劃線數字組成,不能是關鍵字,不能是數字開頭 #函數名還是要有一定的意義能夠簡單說明函數的功能2,def是關鍵字 (defi
c++ linux 下匯編分析傳參以及返回值
傳遞 {} UNC 而不是 pub x86 target 訪問 開始 註意:都是在沒有優化的情況下編譯的。因為只要開-O1或是-O2,那麽匯編代碼就少的可憐了,都被優化掉了 編譯器版本:x86-64 gcc 5.5 1 POD類型傳參 1.1 一個pod參數,p
初識函數(定義,語法,返回值,參數)
函數傳遞 打包成 定義函數 函數名 賦值 關鍵字參數 動態 初識 def 1.什麽是函數 函數是對代碼塊和功能的封裝和定義 2.函數的語法和定義 使用def關鍵字來定義函數,函數的定義語法是 def 函數名(): 函數體 函數名的命名規則和變量一樣 函數體就是
Effective C++讀書筆記----自定義型別的傳參和返回值問題
對於自定義型別,傳參的時候儘可能的使用傳引用來代替傳值。 看如下這個例子: #include <iostream> using namespace std; #include <string> class Person {
javascript函式的宣告、呼叫、傳參和返回值
在javascript中函式的宣告方法有兩種: function func (){ alert("hello,world"); } var func =new Function (alert("hello,world")); var func = function(
多函式程式的基本使用流程,返回值,引數
一般在實際開發過程中,一個程式往往由多個函式(後面知識中會講解類)組成,並且多個函式共享某些資料,這種場景是經常出現的,因此下面來總結下,多個函式中共享資料的幾種方式 使用全域性變數 g_num = 0 def test1(): global g_num …將處理結
SQL語句MyBatis傳參什麼時候用#,什麼時候用$
程式碼截圖如下: <select id="get_" parameterType="map" resultMap="user"> select * FROM `use
mybatis 呼叫oracle儲存過程,傳參、返回遊標的值獲取--示例
1,dao層程式碼 Integer currentlq_fsx = getSqlSession().selectOne("lqMapper.maxscore"); Map<String,Object> map = new HashMap<String,O
使用Get方法傳參到Action中,出現中文亂碼的問題
優化一個簡單的功能,通過BJUI 自帶的jQuery 方法 ,使用get 方式傳遞引數。控制檯headers 處看到傳遞的是中文字元,而debug進入Action後卻是亂碼。 嘗試和檢查了以下幾項: 1. jsp頁面已經設定了全域性的編碼。 Myecli
vue.js路由的幾種傳參方式及特點,包括router-link,$router.push,動態路由匹配,params和query
最近vue用的比較多,就想對各種知識做一個小結,比如這個就是路由導航的一個小總結。具體內容如下: 一、<router-link> <router-link>標籤中的to屬性用來指定路由路徑。 to的型別:string | Location
傳參為0時,查詢語句失效的原因
如下圖,當選擇的貨幣型別為人民幣(value為0)時,模糊查詢語句失效! 之前也遇到這個問題不知道什麼原因,只知道把判斷條件<if>刪掉就可以,這次問了同事後知道了,記錄一下! 原因如下: Mybatis判斷int是否為空只要!=null就行了,如果
node.js傳參給PHP失敗,headers加上'Content-Length': Buffer.byteLength(content)
node.js需要傳參給PHP,執行計劃任務 var events = require('events'); start_cron("gc","www.y.com",80,"/cron.php",30000,{"auth":"7wElqW6vG2FcjnhomEckLg1W2t6uP5ZE0Vl
定義一個帶參帶返回值的方法,實現輸出隨機數數組
publicpublic class mains { public static void main(String[] args) { // 創建對象,對象名為hello mains hello = new mains(); // 調用方法並將返回值保存在變量中
推薦的MyBatis傳參方式List、數組等
word www rom open 方式 item log 詳細 batis MyBatis 推薦的傳參方式 如果要詳細的學習 MyBatis,推薦看這個教程:https://www.w3cschool.cn/mybatis/ 1. 單個參數 //接口方法 int getA
js函式傳參是按值傳遞還是按引用傳遞?
基本型別、引用型別 閒扯完了,開始寫今天要總結的基礎知識。 基本型別: undefined、Null、Boolean、Number、String五種 (簡單的資料段); 引用型別: object (由多個值構成)。 兩種型別在使用上的區別: 複製變數 這塊好理解,看一
重寫Math 中sin cos asin acos 方法,將其入參或者返回值 從弧度改為角度
Math 中sin cos 方法的入參 單位是弧度,而我們在數學公式中填寫的都是角度; Math 中asin acos 方法的返回值 單位是弧度,而我們在數學公式中arcsin arccos返回
4. 陣列int[] intArr = new int[]{5,9,3,7,2,6},寫出一個函式可根據傳參(引數為需要獲取的陣列型別:1:正序排序陣列;2:倒序排序陣列;)來進行排序,返回值為int
4. 陣列int[] intArr = new int[]{5,9,3,7,2,6},寫出一個函式可根據傳參(引數為需要獲取的陣列型別:1:正序排序陣列;2:倒序排序陣列;)來進行排序,返回值為int陣
python練習:編寫一個函數isIn,接受兩個字符串作為參數,如果一個字符串是另一個字符串的一部分,返回True,否則返回False。
code pri 兩個 find int 字符 字符串 return 輸出 python練習:編寫一個函數isIn,接受兩個字符串作為參數,如果一個字符串是另一個字符串的一部分,返回True,否則返回False。 重難點:定義函數的方法。使用str類型的find()函數,可
C++基礎知識(八)---函式返回值(返回值,返回指標,返回物件,返回引用)---引用---複製建構函式(拷貝建構函式)
一、函式返回值 1.返回值: int test () { int a=1; return a; } 返回值時最簡單的方式,它的操作主要在棧上,變數a在函式結束後會刪除,為了返回a的值,系統會在內部建立一個臨時變數儲存a的值,以返回給呼叫該函式的表示式,呼叫結束後變數便