Pojo:
Mapper:
xml
service和implement类:
Controller:
@Controller
@RequestMapping("")
public class UsersController {
@Autowired
UsersService usersService;
@RequestMapping("listUsers")
public ModelAndView listUsers(Page page){
ModelAndView mav = new ModelAndView();
List<Users> cs= usersService.list(page);
int total=usersService.total();
page.caculateLast(total);
mav.addObject("cs", cs);
mav.setViewName("listUsers");
return mav;
}
@RequestMapping("addUsers")
public ModelAndView addUsers(Users users){
usersService.add(users);
ModelAndView mav = new ModelAndView("redirect:/listUsers");
return mav;
}
@RequestMapping("deleteUsers")
public ModelAndView deleteUsers(Users users){
usersService.delete(users);
ModelAndView mav = new ModelAndView("redirect:/listUsers");
return mav;
}
@RequestMapping("editUsers")
public ModelAndView editUsers(Users users){
Users c= usersService.get(users.getuId());
ModelAndView mav = new ModelAndView("editUsers");
mav.addObject("c", c);
return mav;
}
@RequestMapping("updateUsers")
public ModelAndView updateUsers(Users users){
usersService.update(users);
ModelAndView mav = new ModelAndView("redirect:/listUsers");
return mav;
}
JSP:
运行效果:
疑问:ssm框架整合中为什么control要通过调用service类再进一步调用mapper类呢?为什么不是直接调用呢,这样有什么好处
总结:
在SSM框架中,Controller调用Service类再进一步调用Mapper类的设计模式被称为“三层架构”或“MVC架构”。
这种设计模式的好处有以下几点:
1. 分离关注点:将Controller、Service和Mapper分离,每个层次都有自己的职责和关注点。Controller层主要负责接收请求和响应,Service层负责处理业务逻辑,Mapper层负责与数据库交互。这样,每个层次都可以专注于自己的任务,提高了代码的可读性和可维护性。
2. 降低耦合性:每个层次都是相对独立的,它们通过接口进行通信。这样,每个层次都可以独立开发和测试,降低了耦合性,提高了代码的可扩展性和可重用性。
3. 易于测试:每个层次都可以独立测试,这样可以更容易地发现和解决问题。
4. 提高安全性:通过将Mapper层隐藏在Service层后面,可以防止直接访问数据库,提高了系统的安全性。
因此,虽然直接调用Mapper类也是可以实现功能的,但是采用三层架构的方式可以提高代码的可读性、可维护性、可扩展性和安全性,是一种更优秀的设计模式。