statement 概述
<!--添加部门-->
<select id="addDep" statementType="">
</select>
作用: Statement 对象用于将 SQL 语句发送到数据库中。
三个对象:
Statement:Statement 对象用于执行不带参数的简单 SQL 语句。接口提供了执行语句和获取结果的基本方法。
典型应用:
建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法createStatement 创建,如下列代码段中所示:
Connection con = DriverManager.getConnection(url, "sunny","");
Statement stmt = con.createStatement();
Prepared: Prepared对象用于执行带或不带输入参数的预编译 SQL 语句。接口添加了处理 IN 参数的方法。(默认状态)
Callable: Callable对象用于执行对数据库已存储过程的调用。添加了处理 输出参数的方法。
典型作用:调用数据库写好的存储过程
<select id="addDep" statementType="CALLABLE">
call addDep(#{depName, mode=IN,jdbcType=VARCHAR},#{parentId, mode=IN, jdbcType=INTEGER},
#{enabled, mode=IN, jdbcType=BOOLEAN}, #{result1, mode=OUT, jdbcType=INTEGER},
#{result2, mode=OUT, jdbcType=INTEGER})
</select>
数据库函数:
CREATE DEFINER=`root`@`localhost` PROCEDURE `addDep`(in depName varchar(32),in parentId int,in enabled boolean,out result int,out result2 int)
begin
declare did int;
declare pDepPath varchar(64);
insert into t_department set name=depName,parentId=parentId,enabled=enabled;
select row_count() into result;
select last_insert_id() into did;
set result2=did;
select depPath into pDepPath from t_department where id=parentId;
update t_department set depPath=concat(pDepPath,'.',did) where id=did;
update t_department set isParent=true where id=parentId;
end
sql语句中 call + 函数名称 + (输入输出参数定义) * 输出参数需要在实体类中定义*。
此种用法主要用于实现某个功能存在较多的数据库操作。