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

 

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

 

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


Java代码

ibatis非查询标签1_iBATIS


1. public int
2. Object parameterObject)   
3. throws
4. public int
5. Object parameterObject)   
6. throws
7. public int
8. Object parameterObject)   
9. throws

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代码

ibatis非查询标签1_iBATIS



    1. 自动参数映射   
    2.   
    3.   
    4.   
    5. "insertUser" parameterClass="User">    
    6.   
    7.   insert into user(username,password,department)   
    8.   
    9. values(#username#,#password#,#department#)   
    10.   
    11. </insert>   
    12.   
    13. 内敛参数映射   
    14. "insertUser2" parameterClass="User">    
    15.   
    16.   insert into user(username,password,department)   
    17.   
    18. values(#username:VARCHAR#,#password:VARCHAR#,#department:VARCHAR#)   
    19. </insert>   
    20. 外联参数映射   
    21. "userMap" class="User">    
    22. "username" jdbcType="VARCHAR"/>    
    23. "password" jdbcType="VARCHAR"/>    
    24. "department" jdbcType="VARCHAR"/>    
    25.     </parameterMap>   
    26. "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代码

    ibatis非查询标签1_iBATIS



    1. 测试类的使用:   
    2.   
    3. new
    4. "zhangsan");    
    5. "123");    
    6. "Service");    
    7.       
    8. "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代码

    ibatis非查询标签1_iBATIS


    1. <statement>  
    2.   <statement id=“droptable”>
    3.  DROP TABLE User CASCADE   
    4.   </statement>


    <statement>
     <statement id=“droptable”>
     DROP TABLE User CASCADE
     </statement>


      


    Java代码

    ibatis非查询标签1_iBATIS


    1. sqlMap.update(“droptable”,null); api调用语句  


    sqlMap.update(“droptable”,null); api调用语句

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

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


    Xml代码

    ibatis非查询标签1_iBATIS



    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 是数据库里已经定义好的存储过程,直接调用传入参数就可以了