ibatis非查询标签1

sqlmap里的 select标签是用来查询,今天说<insert>,<update>,<delete>标签,这三个基本只有输入没有输出

 

这三个标签有这样几个共同的属性,parameterClass,ParameterMap,id,参数类型,参数映射,ID

 

通过sqlMap API里的这三个方法来调用

Java代码 复制代码
  1. public int insert(String statementName,   
  2. Object parameterObject)   
  3. throws SQLException   
  4. public int update(String statementName,   
  5. Object parameterObject)   
  6. throws SQLException   
  7. public int delete(String statementName,   
  8. Object parameterObject)   
  9. throws SQLException  
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标签来学习一下参数映射,另两个类似

Java代码 复制代码
  1. 自动参数映射   
  2.   
  3.   
  4.   
  5. <insert id="insertUser" parameterClass="User">   
  6.   
  7.   insert into user(username,password,department)   
  8.   
  9. values(#username#,#password#,#department#)   
  10.   
  11. </insert>   
  12.   
  13. 内敛参数映射   
  14. <insert id="insertUser2" parameterClass="User">   
  15.   
  16.   insert into user(username,password,department)   
  17.   
  18. values(#username:VARCHAR#,#password:VARCHAR#,#department:VARCHAR#)   
  19. </insert>   
  20. 外联参数映射   
  21. <parameterMap  id="userMap" class="User">   
  22.         <parameter property="username" jdbcType="VARCHAR"/>   
  23.         <parameter property="password" jdbcType="VARCHAR"/>   
  24.         <parameter property="department" jdbcType="VARCHAR"/>   
  25.     </parameterMap>   
  26.     <insert id="insertUser3" parameterMap="userMap">   
  27.         INSERT INTO USER   
  28.         (    
  29.             USERNAME, PASSWORD, DEPARTMENT   
  30.         )VALUES(   
  31.             ?,?,?    
  32.         )   
  33.     </insert>   
  34. 注:它会自动按map定义好的顺序对应,代替占位符???  
自动参数映射



<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定义好的顺序对应,代替占位符???
Java代码 复制代码
  1. 测试类的使用:   
  2.   
  3. User user=new User();   
  4.    user.setUsername("zhangsan");   
  5.    user.setPassword("123");   
  6.    user.setDepaertment("Service");   
  7.       
  8.    Integer returnValue=(Integer)sqlMap.insert("insertUser",user);  
测试类的使用:

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语句,举一个简单例子,它可以执行除那四类之外的其他语句

Xml代码 复制代码
  1. <statement>  
  2.  <statement id=“droptable”>  
  3.  DROP TABLE User CASCADE   
  4.  </statement>  
<statement>
 <statement id=“droptable”>
 DROP TABLE User CASCADE
 </statement>

  

Java代码 复制代码
  1. sqlMap.update(“droptable”,null); api调用语句  
sqlMap.update(“droptable”,null); api调用语句

 statement一般用的比较少,前四种就可以基本满足我们的需求,解决我们的问题

2 procedure 存储过程,也可以使用parameterMap属性,用call调用,与数据库有关,简单说一下

Xml代码 复制代码
  1. <parameterMap id="swapParameters" class="map" >  
  2. <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>  
  3. <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>  
  4. </parameterMap>  
  5. <procedure id="swapEmailAddresses" parameterMap="swapParameters" >  
  6. {call swap_email_address (?, ?)}   
  7. </procedure>  
<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

 

 

你可能感兴趣的:(sql,xml,ibatis,Blog)