【问题标题】:update a row using spring jdbctemplate使用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 映射到控制器。

【问题讨论】:

标签: spring jdbctemplate


【解决方案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 传递到控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多