2016-02-04 106 views
1

所以我有一个web应用的第一步,具有一流的医生,我想所有执行类似观点的一些操作,插入,删除等:模板的jdbc CRUD操作

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中查看的下一个方法,查看所有的方法。据推测,我没有正确调用该方法,并尝试重写所有部分多次。帮帮我?!

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

在调试模式下,如果您在'service.insertUpdateDoctor(test);'行放置了一个断点,并进入它,它会发生什么?它显示“服务”是什么类型?它是“DAOImpl”吗? –

+0

当我放置一个断点并按照main中的所有步骤操作时,它会跳过该行。当我检查断点属性时,它的类型是Main App(主参数是) –

+0

使用Spring Data JPA可能会节省很多时间 –

回答

1

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

如果问题是,调用该时:

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

运行时没有内部insertUpdateDoctor得到,只是检查你是如何实例化对象服务

如果问题是,它不是执行正确的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())); 
     } 

希望它可以帮助你。