一、非查询(增删改)语句
1、自动生成的键
--oracle&postgresql
<insert id="insert">
<selectKey
keyProperty="accountid"
resultClass = "int">
SELECT nextVal('account_accountid_seq')
</selectKey>
INSERT INTO Account(
accountId, username, password
)VALUES(
#accountId#, #username#, #password#
)
</insert>
</pre><p>--Microsoft sql server</p><p></p><pre name="code" class="html"><insert id="insert">
INSERT INTO Account(
username, password
)VALUES(
#username#, #password#
)
<selectKey
keyProperty="accountId"
resultClass="int">
SELECT SCOPE_IDENTITY()
<selectKey>
</insert>
2、调用存储过程
IN、OUT、INOUT参数
in--传参数
inout--传递给存储过程并且可以被修改的参数
out---它们和返回结果(例如resultMap结果)很相似,但是又可以像参数那样被传递给存储过程。被传递给存储过程的值将被忽略,然后被程序所返回的值所替代。
create or replace procedure maximum
(a in integer, b in integer, c out integer) as
begin
if(a > b) then c:=a; end if;
if(b>=a) then c:=b; end if;
end;
xml里面进行调用:
<parameterMap id="maxOutProcddureMap" class="java.util.Map">
<parameter property="a" mode="IN"/>
<parameter property="b" mode="IN"/>
<parameter property="c" mode="OUT"/>
</parameterMap>
<procedure id="maxOutProcddure"
parameterMap="maxOutProcedureMap">
{ call maximum (?,?,?) }
</procedure>
// call maximum function
Map m = new HahsMap(2);
m.put("a", new Integer(7));
m.put("b", new Integer(5));
sqlMap.queryForObject("Account.maxOutProcedure", m);
// m.get("c") should be 7 now.