【问题标题】:Jdbc template crud operationsJdbc 模板 crud 操作
【发布时间】:2016-02-04 19:29:47
【问题描述】:

所以我有一个 webapp 的第一步,有类 Doctor,我想执行一些操作,如查看全部、插入、删除等:

public class Doctor {
public String firstName;
public String lastName;
public int id;

public Doctor(){
}
public Doctor(int id, String first, String last){
setId(id); 
setFirstName(first);
setLastName(last);
}
// getters and setters

这是我的接口服务中一种方法的实现。它们与适当的 sql 查询几乎相同。我尝试了几个不同的教程。

public class DAOImpl implements DAO{

public void insertUpdateDoctor(Doctor doctor){ 

    String sql = "INSERT INTO doc_flight.docflight_doctors(id, first_name,last_name)" + "Values(?,?,?)";             



    jdbcTemplateObject.update(sql,new Object[]{doctor.getId(),doctor.getFirstName(),doctor.getLastName()});

这是我尝试调用它的 main 部分。该程序甚至没有尝试进入该方法,它没有出现在调试中并移动到我在 main 中尝试的下一个方法,查看全部,它有效。据推测,我没有正确调用该方法并尝试多次重写所有部分。救命?!

  Doctor test = new Doctor(17,"jack", "sparrow"); 
service.insertUpdateDoctor(test);

【问题讨论】:

  • 在调试模式下,如果您在service.insertUpdateDoctor(test); 行上放置一个断点,然后单步执行,它会去哪里?它显示service 是什么类型?是DAOImpl吗?
  • 当我放置一个断点并按照 main 中的所有步骤进行操作时,它会跳过该行。当我检查断点属性时,它的类型是 Main App(主要参数在哪里)
  • 使用 Spring Data JPA 可能会节省大量时间

标签: java spring-mvc jdbc


【解决方案1】:

问题本身对我来说不是很清楚。

如果问题出在调用这个的时候:

Doctor test = new Doctor(17,"jack", "sparrow"); 
service.insertUpdateDoctor(test);

运行时没有进入 insertUpdateDoctor,只需检查您如何实例化对象 service

如果问题是它没有正确执行 sql 语句,请尝试使用 PreparedStatement(这是一个很好的做法),方法如下:

        String connectionStr = StringUtils.format("INSERT INTO %s.docflight_doctors(id, first_name,last_name) Values(?,?,?)", this.databaseName);
        try (Connection connection = this.dataSource.getConnection();
             PreparedStatement preparedStatement = connection.prepareStatement(connectionStr)) {
            preparedStatement.setInt(1, doctor.getId());
            preparedStatement.setString(2, doctor.getFirstName());
            preparedStatement.setString(3, doctor.getLastName());
            preparedStatement.execute();
            connection.commit();
        } catch (Exception ex) {
            this.logger.error(String.format("Error when inserting: %s", ex.toString()));
        }

希望对你有帮助。

【讨论】:

    【解决方案2】:

    对我来说,我不会从头开始编写这个类,我希望通过几次点击生成它并使用云向导节省我的时间:

    1. 转到https://codegen.cloud-wizard.com
    2. 点击Java
    3. 来自 Java SE 技术部分的新闻
    4. 选择 JDBC 类转换器。
    5. 在元数据部分输入 JDBC 类的名称,例如(道博士)
    6. 添加一些字段,例如名字和姓氏
    7. 按下生成代码,您将准备好您的课程并按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2015-02-02
      • 2018-09-11
      相关资源
      最近更新 更多