Spring MVC增删改查操作

    技术2023-07-03  89

    案例,完成增删改查综合案列 请求-----DispatcherServlet—HandlerMapping—Controller组件----ViewResolver组件-jsp视图 主控制器 映射器 业务控制器 视图解析器 列表

    list.do请求-----DispatcherServlet—HandlerMapping—userController.list()----ViewResolver组件-user_list.jsp

    编写Dao组件 Controller组件 jsp组件

    Dao接口

    public interface UserDao { public List<User> findAll(); public int delete(int id); public int update(User user); public int save(User user); public User findByID(int id); }

    Dao接口实现类

    @Repository public class UserDaoImpl implements UserDao{ @Autowired private JdbcTemplate template; public List<User> findAll() { String sql="select * from user"; List<User> list=template.query(sql, new BeanPropertyRowMapper<User>(User.class)); return list; } @Override public int delete(int id) { String sql="delete from user where id=?"; return template.update(sql, id); } @Override public int update(User user) { String sql="update user set name=?,pwd=? where id=?"; return template.update(sql,user.getName(),user.getPwd(),user.getId()); } @Override public int save(User user) { String sql="insert into user(id,name,pwd) value(?,?,?)"; return template.update(sql, user.getId(),user.getName(),user.getPwd()); } @Override public User findByID(int id) { String sql="select * from user where id=?"; Object[] params= {id};//使用Object数组接收 User user=template.queryForObject(sql, params, new BeanPropertyRowMapper<User>(User.class)); System.out.print(user);; return user; } }

    service方法,dao满足不了需求,需要添加service方法,复杂业务组件使用service组件 Dao----JdbcTemplate — DataSource 注入

    UserController

    @Controller public class UserController { @Autowired private UserDao userDao; @RequestMapping("toList.do") public String toList() { //重定向 return "redirect:list.do"; } @RequestMapping("list.do") public ModelAndView list() { ModelAndView mav=new ModelAndView(); List<User> list=userDao.findAll(); mav.setViewName("user_list"); mav.getModel().put("users",list); return mav; } @RequestMapping("add.do") public String add(User user) { //ModelMap 也可以进行数据的存储 userDao.save(user); return "redirect:toList.do"; } @RequestMapping("toadd.do") public String toadd() { return "user_add"; } @RequestMapping("delete.do") public String delete(int id) { userDao.delete(id); return "redirect:list.do"; } @RequestMapping("update.do") public String update (User user) { userDao.update(user); return "redirect:list.do" ; }@RequestMapping("toUpdate.do") public String toupdate (int id,ModelMap map) { //返回类型为String 参数使用ModelMap保存 User user=userDao.findByID(id); map.put("user", user); return "user_update"; } @RequestMapping("view.do") public String view (int id,ModelMap map) { //返回类型为String 参数使用ModelMap保存 User user=userDao.findByID(id); map.put("user", user); return "user_view"; } }

    delete.do请求-----DispatcherServlet—HandlerMapping—Controller组件----ViewResolver组件-user_list.jsp 添加 add.do请求-----DispatcherServlet—HandlerMapping—Controller组件----ViewResolver组件-user_list.jsp 更新 update.do请求-----DispatcherServlet—HandlerMapping—userController.update()----ViewResolver组件-user_list.jsp 查看 view.do请求-----DispatcherServlet—HandlerMapping—Controller组件----ViewResolver组件-user_view.jsp

    初始化组件

    <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-*.xml</param-value> </init-param>

    @Repository //持久化组件注入

    @Autowired 可以给构造器/ setter注入 @resource只可以用setter注入

    Mapper映射不匹配问题 Jsp—VO ViewObject DO----Table 一个VO好几个DO 表结构 VO 包含集合 userVo

    //ModelMap modell进行数据存储,返回给界面 相当于ModelAndView

    user_list.jsp

    <h1><a href="toadd.do">新增数据</a></h1> <h1><a href="toList.do">刷新</a></h1> 列表页面 <table> <tr> <td>id</td> <td>name</td> <td>pwd</td> </tr> <c:forEach items="${users}" var="user"> <tr> <td><a href="view.do?id=${user.id}">${user.id}</a></td> <td><a href="view.do?id=${user.id}">${user.name}</a></td> <td>${user.pwd}</td> <td><a href="delete.do?id=${user.id}">删除</a></td> <td><a href="toUpdate.do?id=${user.id}">更新</a></td> </tr> </c:forEach> </table>

    怎么获取id 隐藏id <input type="hidden" name="id" value="${user.id}"/>

    Processed: 0.012, SQL: 9