ibatis参数传递小技巧 - 疯狂的菠菜 - ITeye技术网站

body
{
font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif;
font-size: 10.5pt;
line-height: 1.5;
}
html, body
{

}
h1 {
font-size:1.5em;
font-weight:bold;
}
h2 {
font-size:1.4em;
font-weight:bold;
}
h3 {
font-size:1.3em;
font-weight:bold;
}
h4 {
font-size:1.2em;
font-weight:bold;
}
h5 {
font-size:1.1em;
font-weight:bold;
}
h6 {
font-size:1.0em;
font-weight:bold;
}
img {
border:0;
max-width: 100%;
}
blockquote {
margin-top:0px;
margin-bottom:0px;
}
table {
border-collapse:collapse;
border:1px solid #bbbbbb;
}
td {
border-collapse:collapse;
border:1px solid #bbbbbb;
}

ibatis参数传递小技巧 - 疯狂的菠菜 - ITeye技术网站使用ibatis操作数据库的时候, 如果这个操作需要一些参数, 一般我们会使用map将这些参数封装起来,
然后调用SqlMapClient或者SqlMapClientTemplate的update, insert, queryForXxx方法.
每次构造这个map, 重复性的东东比较多, 于是改进了一下. 在基类DAO中构建了一个内部类:

  1. /** 
  2. * 用来封装多个参数, 并实现连接操作 
  3. *  
  4.  */  
  5. protected static class Parameter extends HashMap<String, Object> {  
  6.     private static final long serialVersionUID = -1756000414146772526L;  
  7.   
  8.     public Parameter addParameter(String key, Object value) {  
  9.         this.put(key, value);  
  10.         return this;  
  11.     }  
  12. }  
    /**
* 用来封装多个参数, 并实现连接操作
*
*/
protected static class Parameter extends HashMap<String, Object> {
private static final long serialVersionUID = -1756000414146772526L; public Parameter addParameter(String key, Object value) {
this.put(key, value);
return this;
}
}

然后在基类中加一个createParameter()方法用来给子类调用, 添加key-value的参数:

  1. /** 
  2.  * 用于支持连写 
  3.  * @param key 
  4.  * @param value 
  5.  * @return 
  6.  */  
  7. protected static Parameter createParameter(String key, Object value) {  
  8.     return new Parameter().addParameter(key, value);  
  9. }  
    /**
* 用于支持连写
* @param key
* @param value
* @return
*/
protected static Parameter createParameter(String key, Object value) {
return new Parameter().addParameter(key, value);
}

具体使用:

  1. public int update(String id, int quantity) throws DAOException {  
  2.     Parameter parameter = createParameter("id", id)  
  3.             .addParameter("quantity", quantity);  
  4.     return executeUpdate(getSqlId("update"), parameter);  
  5. }  
    public int update(String id, int quantity) throws DAOException {
Parameter parameter = createParameter("id", id)
.addParameter("quantity", quantity);
return executeUpdate(getSqlId("update"), parameter);
}

如果是原来的话, 需要这样写:

  1. public int update(String id, int quantity) throws DAOException {  
  2.     Map<String, Object> parameter = new HashMap<String, Object>();  
  3.             parameter.put("id", id);  
  4.             parameter.put("quantity", quantity);  
  5.     return executeUpdate(getSqlId("update"), parameter);  
  6. }  
    public int update(String id, int quantity) throws DAOException {
Map<String, Object> parameter = new HashMap<String, Object>();
parameter.put("id", id);
parameter.put("quantity", quantity);
return executeUpdate(getSqlId("update"), parameter);
}

其实也没什么, 只是有时候我这个人比较懒, 少打了几个字而已.

上一篇:使用Eclipse创建模板并格式化代码


下一篇:MySQL删除数据库时的错误(errno: 39)