Mybatis映射文件的<select>標簽主要幫助我們完成SQL語句查詢功能,<select>標簽它包含了很多屬性,下面簡單對<select>標簽的屬性做一個歸納
一、一般情況下用得到的屬性:
id:唯一指定標簽的名字
resultType:查詢結構返回的數據類型,自動進行封裝操作
parameterType:給SQL語句傳遞參數的數據類型
resultMap:查詢結果返回的數據類型,會根據映射文件中<resultMap>來完成數據封裝
parameterMap:給SQL語句傳遞參數的數據類型,需要和<parameterMap.../>標簽連用
<select id="selectRoleByUserId" resultType="com.example.simple.model.SysRole"> select r.id, r.role_name, r.enabled, r.create_by, r.create_time, u.user_name as "user.userName", u.user_email as "user.userEmail" from sys_user u inner join sys_user_role ur on u.id = ur.user_id INNER JOIN sys_role r on ur.role_id = r.id where u.id = #{userId} </select>
二、mybatis存儲過程中select標簽會用到的屬性
statementType:標記操作SQL的對象,STATEMENT,PREPARED 或 CALLABLE(存儲過程) 的一個。這會讓 MyBatis 分別使用 Statement,PreparedStatement 或 CallableStatement,默認值:PREPARED。
1、STATEMENT:直接操作sql,不進行預編譯,獲取數據:$—Statement —— Statement接口提供了執行語句和獲取結果的基本方法;
2、PREPARED:預處理,參數,進行預編譯,獲取數據:# —– PreparedStatement:默認 —— PreparedStatement接口添加了處理 IN 參數的方法;
3、CALLABLE:執行存儲過程————CallableStatement
plus:
Statement:
普通的不帶參的查詢SQL;支持批量更新,批量刪除; Statement每次執行sql語句,數據庫都要執行sql語句的編譯,最好用於僅執行一次查詢並返回結果的情形,效率高於PreparedStatement。
PreparedStatement:
可變參數的SQL,編譯一次,執行多次,效率高; 安全性好,有效防止Sql注入等問題; 支持批量更新,批量刪除;
CallableStatement:
繼承自PreparedStatement,支持帶參數的SQL操作; 支持調用存儲過程,提供了對輸出和輸入/輸出參數(INOUT)的支持;
轉載自:https://www.cnblogs.com/vickylinj/p/9481019.html