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

本文介绍了一种使用Spring框架进行数据库插入操作时处理大量参数的有效方法。通过具体实例展示了如何声明参数类型并使用KeyHolder获取自动生成的主键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前天写了一篇文章也是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();
        }
    }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值