ibatis中update参数为Map的使用方式

使用ibatis,如果要更新表记录,一般常用的做法就是,查找出记录,然后修改部分字段,进行update操作.

例如:

User  user =  userDAO.findById(1);
user .setName("zhangsan");
user DAO.update( user );

 

这种是最常用的方法.在很多应用场景下完全没有问题.
但是,如果user表中存在一个或者多个text(或者blob)字段.难道仅仅为了更新一个name字段,需要重新update那些本不需要更新的text/blob字段吗?

 

人们又想出了一个办法,参数采用map,把需要更新的字段put到map中,

 

应用方法如下: 
ibatis映射文件sqlmap.xml中: 
<update id="update" parameterClass="java.util.HashMap"> 
UPDATE TAB SET EDITION=#ID# WHERE USERID=#USERID# 
</update> 
在我们要调用sql查询语句的java方法中有: 
Map<String, Object> parameter = new HashMap<String, Object>(); 
parameter.put("USERID", userId); 
parameter.put("ID", edition); 
try { 
sqlMapClient.update("mysqlibatis.update", parameter); 
} catch (SQLException e) { 
return false; 


在此处对上面用到的参数作说明,sqlMapClient.update("mysqlibatis.update", parameter);中的"mysqlibatis"是ibatis映射文件的 
名称,"update"是<update>标签的id,而parameter是传入的map参数名称,并且parameter参数中必须要有和 
<update id="update" parameterClass="java.util.HashMap"> 
UPDATE TAB SET EDITION=#ID# WHERE USERID=#USERID# 
</update> 
中对应的key值,如上,就是在parameter中要有ID和USERID。并且,<update>标签的parameterClass的 
一定要是"java.util.HashMap".向上面这样做就减轻了我们的工作量,不用在ibatis中写parameterMap的映射了。

 

 

 

参考:http://duqiangcise.iteye.com/blog/300459

http://www.blogjava.net/stone2083/archive/2008/06/26/210969.html

你可能感兴趣的:(java,ibatis,map,HashMap,update)