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