ibatis中动态SQL_delete

来源:互联网 发布:泛型编程与stl 编辑:程序博客网 时间:2024/05/21 04:05

其实这个不是动态的,不过要写就把CRUD全写一边了,因为IBATIS很简单,就不放

JAVA代码,直接上XML

Xml代码  收藏代码
  1. <delete id="delete_role_id" parameterClass="java.util.Map">  
  2.     delete myivr_trole where ROLEID in  
  3.     <iterate open="(" close=")" conjunction="," property="ids">  
  4.         #ids[]#  
  5.     </iterate>  
  6. </delete>  

 这样的话,你在DAO中写

Java代码  收藏代码
  1. /** 
  2.  * 根据角色ID删除角色 
  3.  * @param ids 角色ID 
  4.  * @return int 影响行数:如果delete N条就返回N  
  5.  */  
  6. public Integer deleteRoleById(Integer... ids) {  
  7.     Map<String,Object> map = new HashMap<String, Object>();  
  8.     map.put("ids", ids);  
  9.     return (Integer)getSqlMapClientTemplate().delete("role.delete_role_id", map);   
  10. }  
 

用Map传参数那么,iterate里面的property属性一定要和Map中的key相同,但是你还可以有更方便的选择,如下:

Xml代码  收藏代码
  1. <delete id="delete_user_id" parameterClass="java.util.List">  
  2.     delete myivr_tuser where USERID in  
  3.     <iterate open="(" close=")" conjunction=",">  
  4.         #ids[]#  
  5.     </iterate>  
  6. </delete>  

 再看DAO代码

Java代码  收藏代码
  1. public Integer deleteUserById(Integer... ids) {  
  2.     return super.getSqlMapClientTemplate().delete("user.delete_user_id", Arrays.asList(ids));  
  3. }  
 

方便吧,不需要自己构建一个Map里,而且XML里面的#ids[]#名称可以顺便写的,呵呵

不过需要注意一下,这里的parameterClass一定要是java.util.List不能是java.util.ArrayList,因为ibatis内部用了反射机制,他不认Arrays.asList,比较class的出错,但是写List就可以了。

0 0
原创粉丝点击