zoukankan      html  css  js  c++  java
  • [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)的支持;

     

  • 相关阅读:
    像素画
    随机世界生成2
    随机世界的生成
    unity2018使用tileMap生成地图 类似泰拉瑞亚创建和销毁地图块
    游戏反编译工具dnSpy
    unity物理学材质Physic Material
    bzoj3261: 最大异或和
    bzoj3524: [Poi2014]Couriers
    hdu2457:DNA repair
    poj2778:DNA Sequence
  • 原文地址:https://www.cnblogs.com/vickylinj/p/9481019.html
Copyright © 2011-2022 走看看