`

ibatis参数传递小技巧

    博客分类:
  • Java
阅读更多
使用ibatis操作数据库的时候, 如果这个操作需要一些参数, 一般我们会使用map将这些参数封装起来, 然后调用SqlMapClient或者SqlMapClientTemplate的update, insert, queryForXxx方法. 每次构造这个map, 重复性的东东比较多, 于是改进了一下. 在基类DAO中构建了一个内部类:
    /**
    * 用来封装多个参数, 并实现连接操作
    * 
     */
    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的参数:
    /**
     * 用于支持连写
     * @param key
     * @param value
     * @return
     */
    protected static Parameter createParameter(String key, Object value) {
        return new Parameter().addParameter(key, value);
    }

具体使用:
    public int update(String id, int quantity) throws DAOException {
        Parameter parameter = createParameter("id", id)
                .addParameter("quantity", quantity);
        return executeUpdate(getSqlId("update"), parameter);
    }

如果是原来的话, 需要这样写:
    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);
    }

其实也没什么, 只是有时候我这个人比较懒, 少打了几个字而已.
0
0
分享到:
评论
2 楼 macrochen 2009-10-31  
是的, 可读性需要结合合适的排版
引用

如果我要加多个参数就会显的有点难看,再可读性不好!

 Parameter parameter = createParameter("id", id)     
             .addParameter("a", a)      
             .addParameter("b", b)      
             .addParameter("c", c);     
     return executeUpdate(getSqlId("update"), parameter); 
1 楼 pan_java 2009-10-30  
public int update(String id, int quantity) throws DAOException {   
    Parameter parameter = addParameter("id", id)   
            .addParameter("quantity", quantity);   
    return executeUpdate(getSqlId("update"), parameter);   
}  


如果我要加多个参数就会显的有点难看,再可读性不好!

相关推荐

Global site tag (gtag.js) - Google Analytics