使用spring jdbctemplate更新一行

Posted

技术标签:

【中文标题】使用spring jdbctemplate更新一行【英文标题】:update a row using spring jdbctemplate 【发布时间】:2012-08-07 10:09:48 【问题描述】:

我是春天的新手。我正在使用 spring jdbc 模板开发一个 CRUD 应用程序。我完成了插入和选择。但在更新中我面临一些问题。任何人都可以为我提供一个使用 jdbctemplate 进行更新和删除的简单示例。 提前谢谢。

我的控制器-

@RequestMapping(method = RequestMethod.GET)
    public String showUserForm(@ModelAttribute(value="userview")  User user,ModelMap model)
    
        List list=userService.companylist();
        model.addAttribute("list",list);
        return "viewCompany";
    

@RequestMapping( method = RequestMethod.POST)
public String add(@ModelAttribute(value="userview") @Valid User user, BindingResult result) 

    userValidator.validate(user, result);
    if (result.hasErrors()) 
        return "viewCompany";
     else 
        userService.updateCompany(user);
        System.out.println("value updated");
        return "updateSuccess";
    

当我单击更新按钮时,应根据行 ID 在我的数据库中更新已编辑的值,我的问题是如何将行 ID 从 jsp 映射到控制器。

【问题讨论】:

你面临什么问题?请发布一些代码和您遇到的错误。 滚动到更新方法,很多选项static.springsource.org/spring/docs/3.0.x/api/org/… 控制台没有错误但是没有执行更新操作。我在这里分享了我的控制器.. 【参考方案1】:

直接来自the documentation:

以下示例显示了为某个主节点更新的列 钥匙。在此示例中,SQL 语句具有行的占位符 参数。参数值可以作为可变参数或 或者作为对象数组。因此原语应该是 显式包装在原始包装类中或使用 自动装箱。

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

public class ExecuteAnUpdate 

    private JdbcTemplate jdbcTemplate;

    public void setDataSource(DataSource dataSource) 
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    

    public void setName(int id, String name) 
        this.jdbcTemplate.update(
                "update mytable set name = ? where id = ?", 
                name, id);
    

【讨论】:

非常感谢 .. 我忘了提到它应该在 JSP 中完成。我无法将 JSP 值映射到控制器.. JSP 和控制器与您的问题无关。无论您是否在 JSP 中执行此操作,JdbcTemplate API 都是一样的。不,它不应该在 JSP 中完成。 JSP 用于生成 html 标记。更新数据库中的一行与 JSP 无关。 我想做的操作可以在hibernate中轻松完成。但我不知道hibernate,也没有时间学习它。所以我必须在 jdbc 模板中进行。 JSP 对我来说是强制性的,因为它是我的 UI 您在 UI 中使用 JSP 这一事实不应该对您如何使用 JdbcTemplate 产生任何影响。无论您是否使用 JSP,JdbcTemplate 的 API 都是相同的。 JSP 用于UI。 JdbcTemplate是用来访问数据库的,和UI层无关,和数据访问层有关。您不应该在 JSP 中有数据访问代码。我不知道你为什么要把 Hibernate 带到桌面上来。 让我们忘记休眠。我的问题是 - 当我单击提交按钮时,更新操作应该在所选行中完成。如何向控制器提供列 ID?【参考方案2】:

您可以简单地使用request.getParamater()command object 将值从jsp 传递到控制器。

【讨论】:

以上是关于使用spring jdbctemplate更新一行的主要内容,如果未能解决你的问题,请参考以下文章

Spring JdbcTemplate 执行与更新

jdbcTemplate 更新中的 Spring 瞬态数据访问资源异常

关于数据库中字段设置为自增长后,DB表新增一行数据的问题,以及在spring框架中使用jdbcTemplate对象来insert的问题

Spring的JdbcTemplate

Spring Boot:整合JdbcTemplate

阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用