<insert><update><delete>
公共属性:id,parameterClass,parameterMap
三个SqlMap API:
1 public int insert(String statementName,ObjectparameterObject)
2 public int update(String statementName,ObjectparameterObject)
3 public int delete(String statementName,ObjectparameterObject)
参数映射:(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(); //开始执行,批处理只和数据库做一次交互