sqlmap里的 select标签是用来查询,今天说<insert>,<update>,<delete>标签,这三个基本只有输入没有输出
这三个标签有这样几个共同的属性,parameterClass,ParameterMap,id,参数类型,参数映射,ID
通过sqlMap API里的这三个方法来调用
public int insert(String statementName, Object parameterObject) throws SQLException public int update(String statementName, Object parameterObject) throws SQLException public int delete(String statementName, Object parameterObject) throws SQLException
之前讲了结果的映射,内敛参数映射和外联参数映射,参数映射和结果映射类似
这里以insert标签来学习一下参数映射,另两个类似
自动参数映射 <insert id="insertUser" parameterClass="User"> insert into user(username,password,department) values(#username#,#password#,#department#) </insert> 内敛参数映射 <insert id="insertUser2" parameterClass="User"> insert into user(username,password,department) values(#username:VARCHAR#,#password:VARCHAR#,#department:VARCHAR#) </insert> 外联参数映射 <parameterMap id="userMap" class="User"> <parameter property="username" jdbcType="VARCHAR"/> <parameter property="password" jdbcType="VARCHAR"/> <parameter property="department" jdbcType="VARCHAR"/> </parameterMap> <insert id="insertUser3" parameterMap="userMap"> INSERT INTO USER ( USERNAME, PASSWORD, DEPARTMENT )VALUES( ?,?,? ) </insert> 注:它会自动按map定义好的顺序对应,代替占位符???
测试类的使用: User user=new User(); user.setUsername("zhangsan"); user.setPassword("123"); user.setDepaertment("Service"); Integer returnValue=(Integer)sqlMap.insert("insertUser",user);
建议用外联参数映射,以上三种映射同样适用于update,delete,select.
其他的标签,
1 <statement>,可以放置各类sql语句,举一个简单例子,它可以执行除那四类之外的其他语句
<statement> <statement id=“droptable”> DROP TABLE User CASCADE </statement>
sqlMap.update(“droptable”,null); api调用语句
statement一般用的比较少,前四种就可以基本满足我们的需求,解决我们的问题
2 procedure 存储过程,也可以使用parameterMap属性,用call调用,与数据库有关,简单说一下
<parameterMap id="swapParameters" class="map" > <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> </parameterMap> <procedure id="swapEmailAddresses" parameterMap="swapParameters" > {call swap_email_address (?, ?)} </procedure>
mode有三种,in ,out,inout
swap_email_address 是数据库里已经定义好的存储过程,直接调用传入参数就可以了
转载自:http://crazycat03.iteye.com/blog/549486