MyBatis帶參查詢
#{}佔位符
類似於jdbc中通過PreparedStatement進行操作的方式, 會將sql語句中需要引數的位置使用?進行佔位,後續由傳進來的引數進行引數的繫結。?處繫結的都是值,不能指定表的列,轉換成sql時表名會被當成字串,會出錯,防止sql注入。
select username,age,password from 'tb_user'
簡單型別引數
簡單型別指的是: 基本資料型別, 包裝型別, String, java.sql.*。當引數是簡單型別時, MyBatis會忽略SQL語句中引數的個數和佔位符的名稱, 然後將引數進行自動繫結. parameterType屬性可以定義引數的型別, 如果定義, 傳參時要求引數型別必須和指定的型別一致, 否則丟擲ClassCastException。
<select id="selBaseType" resultType="pojo.User" parameterType="java.lang.Integer">
select * from tb_users where id=#{id}
</select>
User user=sqlSession.selectOne("selBaseType",1);
Map型別引數
當引數是Map集合時, SQL語句中的#{}裡應該寫Map集合的key值,MyBatis會通過key只找到value然後進行引數繫結。如果key不存在, 不會報錯,會使用null進行引數繫結。
<select id="selByMap" resultType="pojo.User">
select * from tb_users where username=#{username} and password=#{password}
</select>
Map<String,String> map=new HashMap<>();
map.put("username","zhangsan");
map.put("password","123456");
User user=sqlSession.selectOne("selByMap",map);
物件型別引數傳遞
當引數是物件型別時,SQL語句中的#{}裡應該寫物件的getter方法對應的屬性名。當getter方法不存在時, 丟擲異常。
<select id="selByObject" resultType="pojo.User">
select * from tb_users where username=#{username} and password=#{password}
</select>
User user1=new User();
user1.setUsername("lisi");
user1.setPassword("123456");
User user=sqlSession.selectOne("selByObject",user1);
${}
類似於jdbc中通過Statement進行操作的方式, 會直接將傳遞的引數和SQL語句進行字串的拼接。 一般當SQL語句結構不確定時使用。
當表名不確定,條件不確定,排序規則不確定的時候,不能使用#{},應該換做${}。對於簡單資料型別,應儘量使用#{},避免錯誤。
${}需要加’'傳入的引數才能變成字串,不然會被當成列名。
select * from tb_users where username='${username}' and password='${password}'
如果${123}會當成整型數字替換佔位,此時傳入的引數無效。
相關文章
- Mybatis查詢MyBatis
- mybatis查詢列表MyBatis
- Mybatis簡單查詢MyBatis
- 二、mybatis查詢分析MyBatis
- Mybatis延遲查詢MyBatis
- MyBatis關聯查詢MyBatis
- MyBatis模糊查詢LIKEMyBatis
- mybatis - [07] 模糊查詢MyBatis
- Vue查詢傳參Vue
- MyBatis基礎:MyBatis關聯查詢(4)MyBatis
- mybatis-plus 使用In查詢MyBatis
- mybatis做like模糊查詢MyBatis
- Mybatis各種模糊查詢MyBatis
- mybatis like 查詢的例子MyBatis
- MyBatis使用四(查詢詳解)MyBatis
- 【mybatis-plus】條件查詢MyBatis
- Mybatis學習01:利用mybatis查詢資料庫MyBatis資料庫
- 使用mybatis example 和 java 8的特性來實現多表關聯且帶有查詢條件的查詢MyBatisJava
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀
- 實現 MyBatis 流式查詢的方法MyBatis
- mybatis-模糊查詢like CONCATMyBatis
- Mybatis中Oracle的拼接模糊查詢MyBatisOracle
- Mybatis模糊查詢結果為空MyBatis
- mybatis 對特殊字元的模糊查詢MyBatis字元
- mybatis配置:map查詢空值返回MyBatis
- MyBatis Like查詢處理%_符號MyBatis符號
- 兩表關聯查詢:sql、mybatisSQLMyBatis
- Mybatis騷操作-通用查詢工具類MyBatis
- Mybatis【15】-- Mybatis一對一多表關聯查詢MyBatis
- Mybatis學習筆記 3:Mybatis 多種條件查詢MyBatis筆記
- 強大:MyBatis ,三種流式查詢方法MyBatis
- mybatis xml 檔案中like模糊查詢MyBatisXML
- mybatis學習 - 多表查詢的實現MyBatis
- spring和Mybatis的各種查詢SpringMyBatis
- mybatis多表聯合查詢的寫法MyBatis
- 帶你玩玩轉 MySQL 查詢MySql
- 查詢硬碟序列號的參考方案硬碟
- 流式查詢1. mybatis的遊標Cursor,分頁大資料查詢MyBatis大資料