【问题标题】:Spring + JSP - How to set value from database as default input text value?Spring + JSP - 如何将数据库中的值设置为默认输入文本值?
【发布时间】:2023-03-22 17:21:01
【问题描述】:

我正在编写一个应用程序,但在显示数据库中的最后一个 ID 时遇到了一些问题(递增 +1),我希望 JSP 中的输入字段有一个默认值,该值将是数据库中的最后一个 ID。我尝试了一些选项,例如value="id" or value "${patient.id}",但它从来没有奏效。我应该如何正确地做到这一点?这是一个代码:

RegistrationPatient.jsp:

<p style="font-size: 26">
        ID<input style="font-family: Century Gothic; font-size: 26"
            type="text" value="id" name="id" disabled="disabled" />

控制器:

    @RequestMapping(value="/registration.html", method = RequestMethod.GET)
public ModelAndView registrationPatient(@ModelAttribute("patient") Patient patient){

    setAppContext();

    clinicService.getNextId(patient);

    ModelAndView reg = new ModelAndView("RegistrationPatient");
    return reg;

}

诊所服务:

     public void getNextId(Patient patient){
     ClassPathXmlApplicationContext ctx = new  ClassPathXmlApplicationContext("clinicconfig.xml");
     patientDAO = ctx.getBean("patientDAO", PatientDAOImpl.class);

     patient.setId(patient.getId());

    patientDAO.getNextId(patient);
    }

PatientDAOImpl:

public void getNextId(Patient patient) {
    String query = "SELECT idpatient FROM virtualclinic.patient ORDER BY idpatient DESC LIMIT 1";
    Connection con = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try{
        con = dataSource.getConnection();
        ps = con.prepareStatement(query);
        rs = ps.executeQuery();

        while (rs.next()){
            int PID;
            PID = Integer.parseInt(rs.getString(1));
            int nextPID = PID + 1;
            patient.setId(String.valueOf(nextPID));
        }
       patient.getId();

    }catch(SQLException e){
        e.printStackTrace();
    }

【问题讨论】:

  • 不能只允许数据库提供自动递增的 id 吗?
  • 它是自动递增的,但我需要将 ID 从上一个 ID 递增 +1,因为当我添加患者时,ID 字段中应该是下一个患者的 ID,我即将添加.
  • 您的代码在多个级别上都是错误的。首先生成一个这样的 id 是个坏主意,如果 5 个人同时进入一个病人,他们都得到相同的 id,那么哪个是正确的呢?其次,您正在创建一个应用程序上下文来获取 bean 永远不要这样做(除非您想要内存问题、性能问题、奇怪的事务问题)。您应该为患者 ID 使用序列或自动生成的 ID 字段,不要依赖像这样在 java 代码中自己做。

标签: java mysql spring jsp


【解决方案1】:

当您使用 jdbc 持久化记录时,您可以这样做:

//assuming connection is setup
PreparedStatement ps = connection.prepareStatement(QUERY,
    new String[] { "patient_id" }); 
Long patientID= null;
if (ps.executeUpdate() > 0) {  
ResultSet generatedKeys = ps.getGeneratedKeys();    
if (null != generatedKeys && generatedKeys.next()) {        
    patientID = generatedKeys.getLong(1);
}

注意传递给 prepareStatement() 方法的第二个参数传递主键列的名称,在这种情况下,患者 ID 是从序列生成的

现在 patientID 具有最后插入的患者记录的 id。您可以将其递增 1,然后将其显示在 jsp 中。 我希望这很有用。

【讨论】:

    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 2021-04-07
    • 2021-09-27
    • 2015-06-28
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多