在前面已经使用JdbcTemplate操作过数据库,并有增删改查的操作方法add、delete、update等。如果要查询ID为某个序号的Person记录,可以使用传递参数给sql的方法来取出相应的记录。
Java中级教程-8:Spring使用JdbcTemplate操作数据库
public Person getPersonById(String id) throws Exception { Map personrMap = this.getJdbcTemplate().queryForMap("select * from new_table where id=? limit 1", id); Person person = new Person(); person.setId((Integer) personrMap.get("id")); person.setNation((String) personrMap.get("nation")); return person; }
这里把id传给sql,通过sql语句select * from new_table where id=某个序号,就能把记录取出来并返回Person对象,并且限制仅返回一个记录 limit 1。这个方法在PersonDaoImpl.java中,那么页面中如何把想要的ID参数进来呢?这就要在PersonController中增加查询的方法。
@RequestMapping(value = "/getPerson", method = RequestMethod.GET) public Object getPerson(HttpServletRequest request, HttpServletResponse response) { try { String id = request.getParameter("id"); Person person = personService.getPerson(id); request.setAttribute("person", person); } catch (Exception e) { e.printStackTrace(); } return "jsp/person.jsp"; }
同时,在PersonService.java的接口类和实现类中也需要有相应的方法:
public Person findPerson(String id) throws Exception;
@Override
public Person findPerson(String id) throws Exception {
return personDao.getPersonById(id);
}
而在person.jsp中可以加入<%=request.getAttribute("person") %>一句来显示拿到的person对象。访问页面地址http://localhost/calculateWeb/findPerson?id=1可以得到一个记录person: 1,USA;显示出来。
还可以不使用?id=1的方式传参,比如http://localhost/calculateWeb/1这样的访问地址,也可以实现传参。这需要增加如下这样的方法。
@RequestMapping(value = "/{id}", method = RequestMethod.GET) public Object person(HttpServletRequest request, HttpServletResponse response, @PathVariable String id) { try { Person person = personService.findPerson(id); request.setAttribute("person", person); } catch (Exception e) { e.printStackTrace(); } return "jsp/person.jsp"; }
通过/{id}这个参数,并且在方法参数里增加@PathVariable String id这样一个参数,就可以在访问路径里直接加参数值传参。
Java视频教程