六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 164|回复: 0

Spring updateByNamedParam方法使用 Spring保存数据返回id SqlUpdate类使用。

[复制链接]

升级  76%

48

主题

48

主题

48

主题

秀才

Rank: 2

积分
164
 楼主| 发表于 2013-2-7 19:31:17 | 显示全部楼层 |阅读模式
前天写了一篇文章也是Spring保存数据返回id SqlUpdate类使用的
地址:hi.baidu.com/%CD%F5%D7%D36%BA%C5/blog/item/e9458e38f63001fab211c7f2.html
但是里面的参数比较少,只有3个。
当出现了10多个参数的时候,明显用链接里的方法是不行的。因为值对应会很麻烦。
改成以下方法后,虽然代码多了,但是更明了清晰,所以插入列值较多的话,推荐大家用此方法。
public int saveMenu(MenuForm menu) throws DataAccessException {        StringBuffer sb = new StringBuffer();        sb                .append("INSERT INTO websys_adminmenu(pid,name,url,title,target,icon,iconOpen,open,`index`,description,`show`,inTime)");        sb                .append("VALUES(:pid,:name,:url,:title,:target,:icon,:iconOpen,:open,:index,:description,:show,now())");        SqlUpdate sqlUpdate = new SqlUpdate(jdbcTemplate.getDataSource(), sb                .toString());        sqlUpdate.declareParameter(new SqlParameter("pid", Types.INTEGER));        sqlUpdate.declareParameter(new SqlParameter("name", Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("url", Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("title", Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("target", Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("icon", Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("iconOpen", Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("open", Types.BIT));        sqlUpdate.declareParameter(new SqlParameter("index", Types.BIT));        sqlUpdate.declareParameter(new SqlParameter("description",                Types.VARCHAR));        sqlUpdate.declareParameter(new SqlParameter("show", Types.BIT));        sqlUpdate.setReturnGeneratedKeys(true);        sqlUpdate.compile();        KeyHolder keyHolder = new GeneratedKeyHolder();        Map paramMap = new HashMap();        paramMap.put("pid", menu.getPid());        paramMap.put("name", menu.getName().replace("'", "\'"));        paramMap.put("url", menu.getUrl().replace("'", "\'"));        paramMap.put("title", menu.getTitle().replace("'", "\'"));        paramMap.put("target", menu.getTarget().replace("'", "\'"));        paramMap.put("icon", menu.getIcon().replace("'", "\'"));        paramMap.put("iconOpen", menu.getIconOpen().replace("'", "\'"));        paramMap.put("open", menu.isOpen());        paramMap.put("index", menu.isIndex());        paramMap.put("description", menu.getDescription().replace("'", "\'"));        paramMap.put("show", menu.isShow());        int i = sqlUpdate.updateByNamedParam(paramMap, keyHolder);        if (i == 0 || null == keyHolder.getKey())// 没有保存成功返回0            return 0;        else {            return keyHolder.getKey().intValue();        }    }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表