Fork me on GitHub

mybatis存储过程中select标签属性详解

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

posted @ 2020-12-23 10:46  叶语婷  阅读(3009)  评论(0编辑  收藏  举报