ibatis 非查询标签(只有输入,没有输出。)

本文深入探讨了SQL映射的基本概念,包括自动参数映射、内联参数映射、外联参数映射以及如何使用<insert>、<update>、<delete>等API进行数据操作。同时,介绍了如何通过<selectKey>标签获取自动生成的键,以及如何调用存储过程和进行批处理操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



<insert><update><delete>
公共属性:id,parameterClass,parameterMap
三个SqlMap API:
1 public int insert(String statementName,ObjectparameterObject)
 throws SQLException
 
2 public int update(String statementName,ObjectparameterObject)
 throws SQLException 
 
3 public int delete(String statementName,ObjectparameterObject)
 throws SQLException
 
参数映射:(3个标签的格式一致,只用insert举例。)
1 自动参数映射
<!-- 自动参数映射 -->
XML-mapping部分
<insert id="insertOne1"parameterClass="com.air.Account">
INSERT INTO USER_ACCOUNT
{
USERNAME,PASSWORD,GROUPNAME
}
VALUES
{
#username#,#password#,#groupname#
}
</insert>
class部分:
实例化javabean
Account iac = new Account();
iac.setUsername("PETER");
iac.setPassword("444444");
iac.setGroupname("MS");
 
Integer returnValue =(Integer)sqlMap.insert("XML里insert的id",实例化的BEAN);
 
2 内联参数映射
<insert id="insertOne2"parameterClass="com.air.Account">
INSERT INTO USER_ACCOUNT
{
USERNAME,PASSWORD,GROUPNAME
}
VALUES
{
#username:VARCHAR#,
#password:VARCHAR#,
#groupname:VARCHAR#
}
</insert>
3 外联参数映射
<parameterMap id="parameterMapEx"class="com.air.Account">
<parameter property="username"jdbcType="VARCHAR" />
<parameter property="password"jdbcType="VARCHAR" />
<parameter property="groupname"jdbcType="VARCHAR" />
</parameterMap>
<insert id="insertOne3"parameterMap="parameterMapEx">
INSERT INTO USER_ACCOUNT
{
USERNAME,PASSWORD,GROUPNAME
}
VALUES
{
?,?,?
}
</insert>
获取自动生成的键:
<selectKey>标签:
XML部分:
<insert id="insertOne2"parameterClass="com.air.Account">
INSERT INTO USER_ACCOUNT
{
USERNAME,PASSWORD,GROUPNAME
}
VALUES
{
#username:VARCHAR#,
#password:VARCHAR#,
#groupname:VARCHAR#
}
<selectKey
keyProperty="userid" //指明哪个是主键
resultClass="int"> //主键类型
SELECT LAST_INSERT_ID()//不同的数据库有不同的方法,需要查询API文档。这个是对应mysql数据库的。
</selectKey>
</insert>
存储过程:
XML部分:
<parameterMap id="pro"class="java.util.Map">
<parameter property="name"jdbcType="VARCHAR"
javaType="string" mode="IN"/>
</parameterMap>
<procdeure id="pro_insert"parameterMap="pro">
{call new_proc(?)} //存储过程有几个参数就有几个"?"
</procedure>
存储过程调用,class部分:
Map m = new HashMap(1); //一个参数的一个map
m.put("name",new String("LISI"));
sqlMap.update("pro_insert",m);
批处理:(有利于提高效率和性能)
XML部分:
sqlMap.startBatch();
sqlMap.insert("",c1); //要执行的第一条操作
sqlMap.insert("",c2); //要执行的第二条操作
sqlMap.executeBatch(); //开始执行,批处理只和数据库做一次交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值