【发布时间】: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 代码中自己做。