我重点写下controller层的代码:
package cn.edu360.controller; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import cn.edu360.pojo.Product; import cn.edu360.pojo.ProductVO; import cn.edu360.service.ProductService; import cn.edu360.service.ProductServiceImpl; /** * 对于商品数据的响应和处理方法 * * @author Administrator * */ @Controller @RequestMapping("/product") public class ProductController { private ProductService productService = new ProductServiceImpl(); /** * 查找所有商品信息,并返回 * * @param model * @return */ @RequestMapping("/findall") public String findall(Model model) { List其中对于session以及SQLSessionFactory等等这一部分代码其实都是套路,所以我将它们封装到一个service中,service是面向接口编程的,也就是在写的时候都是重复其实真正写的代码就是mapper调用相应方法的那几行。list = productService.findAll(); model.addAttribute("plist", list); return "/WEB-INF/jsps/productlist.jsp"; } /** * 跳转至增加商品页面 * * @return */ @RequestMapping("/toadd") public String toadd() { return "/WEB-INF/jsps/toadd.jsp"; } /** * 向数据库中增加商品信息 * * @param product * @return */ @RequestMapping("/add") public String add(Product product) { productService.addProduct(product); return "redirect:/product/findall.do"; } /** * 根据id删除相应商品 * * @param id * @return */ @RequestMapping("/delete") public String delete(Long id) { productService.deleteById(id); return "redirect:/product/findall.do"; } /** * 跳转至更新页面,并回显现有信息 * * @param id * @param model * @return */ @RequestMapping("/toupdate") public String toupdate(Long id, Model model) { Product product = productService.toUpdate(id); model.addAttribute("product", product); return "/WEB-INF/jsps/productupdate.jsp"; } /** * 更新传来的商品信息 * * @param product * @return */ @RequestMapping("/update") public String update(Product product) { productService.update(product); return "redirect:/product/findall.do"; } /** * 批量删除商品信息 * * @param ids * @return */ @RequestMapping("/deletelist") public String deletelist(Long[] ids) { productService.deleteList(ids); return "redirect:/product/findall.do"; } /** * 跳转至批量更新商品页面 * * @return */ @RequestMapping("/toupdatelist") public String toupdatelist(Model model) { List list = productService.findAll(); model.addAttribute("plist", list); return "/WEB-INF/jsps/productall.jsp"; } /** * 批量更新商品信息 * * @return */ @RequestMapping("/updatelist") public String updatelist(ProductVO pvo) { List list = pvo.getList(); productService.updatelist(list); return "redirect:/product/findall.do"; } }
package cn.edu360.service; import java.util.List; import cn.edu360.pojo.Product; public interface ProductService { public ListProductServiceImpl接口实现:findAll(); public void addProduct(Product product); public void deleteById(Long id); public Product toUpdate(Long id); public void update(Product product); public void deleteList(Long[] ids); public void updatelist(List list); }
package cn.edu360.service; import java.util.List; import org.apache.ibatis.session.SqlSession; import cn.edu360.mapper.ProductMapper; import cn.edu360.pojo.Product; import cn.edu360.util.MybatisSessionFactoryUtils; public class ProductServiceImpl implements ProductService { @Override public List其实上面的service,mapper,pojo以及controller层构成了我们web开发的基本框架,这就是mvc设计模式将业务逻辑,控制层,数据处理层,视图,数据库分开,解耦合,可以更好的提高工作效率。findAll() { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); List list = mapper.findAll(); session.close(); return list; } @Override public void addProduct(Product product) { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); try { mapper.save(product); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally { session.close(); } } @Override public void deleteById(Long id) { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); try { mapper.deleteById(id); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally { session.close(); } } @Override public Product toUpdate(Long id) { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); Product product = null; try { product = mapper.getById(id); } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally { session.close(); } return product; } @Override public void update(Product product) { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); try { mapper.update(product); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally { session.close(); } } @Override public void deleteList(Long[] ids) { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); try { mapper.deleteByIds(ids); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally { session.close(); } } @Override public void updatelist(List list) { SqlSession session = MybatisSessionFactoryUtils.getSqlSession(); ProductMapper mapper = session.getMapper(ProductMapper.class); try { for (Product product : list) { mapper.update(product); session.commit(); } } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally { session.close(); } } }