[mybatis]Mapper XML 文件——statementType


statementTypeSTATEMENTPREPAREDCALLABLE(存儲過程) 的一個。這會讓 MyBatis 分別使用 Statement,PreparedStatement 或 CallableStatement,默認值:PREPARED

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="namespace">
    
    <select id="funName" parameterType="Integer" statementType="CALLABLE" resultType="model"> {call fun(#{id, jdbcType = INTEGER, mode = IN})} </select>
    
</mapper>

1.Statement、PreparedStatement和CallableStatement都是接口(interface)。 

2.Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼承自PreparedStatement。 

3.Statement接口提供了執行語句和獲取結果的基本方法; 
 PreparedStatement接口添加了處理 IN 參數的方法; 
 CallableStatement接口添加了處理 OUT 參數的方法。 

4.Statement: 

普通的不帶參的查詢SQL;支持批量更新,批量刪除; Statement每次執行sql語句,數據庫都要執行sql語句的編譯 , 最好用於僅執行一次查詢並返回結果的情形,效率高於PreparedStatement。 

PreparedStatement: 

可變參數的SQL,編譯一次,執行多次,效率高; 
安全性好,有效防止Sql注入等問題; 
支持批量更新,批量刪除; 
PreparedStatement是預編譯的,使用PreparedStatement有幾個好處:
1. 在執行可變參數的一條SQL時,PreparedStatement比Statement的效率高,因為DBMS預編譯一條SQL當然會比多次編譯一條SQL的效率要高。 
2. 安全性好,有效防止Sql注入等問題。 
3. 對於多次重復執行的語句,使用PreparedStament效率會更高一點,並且在這種情況下也比較適合使用batch; 
4. 代碼的可讀性和可維護性。 

CallableStatement: 

繼承自PreparedStatement,支持帶參數的SQL操作; 
支持調用存儲過程,提供了對輸出和輸入/輸出參數(INOUT)的支持;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM