MyBatis + SpringMVC 总结


一. MyBatis 环境的搭建

  1. 创建 MyBatis 的主配置文件(mybatis-config.xml):环境,事务管理,数据源

  2. 给类取别名

    
    	
    	
    
  3. 配置支持懒加载

    
    	
    	
    	
    	
    
    
  4. 创建接口以及接口的映射文件(UserMapper,UserMapper.xml)

  5. 接口的全路径和映射文件中 mapper 标签的 namespace 属性保持一致

  6. 接口的方法名和映射文件中具体的标签名(insert,select,update,delete) ID 值保持一致

  7. 读取new SqlSessionFactoryBuilder().build(is)配置文件创建 SqlSessionFactory,从而创建SqlSession.openSession()方法

  8. 通过 SqlSession 来调用具体的方法

  9. sqlSession.getMapper(UserMapper.class).addUser();

  10. 提交事务,关闭 sqlSession

二. MyBatis 关系的配置

  • 多对一:association
  • 一对多:collection
  • 一对一:association
  • 多对多:collection

三. MyBatis 懒加载的配置

  1. 正常关联查询:

    
    	
    	
    	
    	
    
    
    
    
    	
    	
    
    
  2. 懒加载

    
    	
    	
    	
    	
    
    
  3. 只有一条 SQL 查询语句

    
    
  4. 查询学生时,有两条 SQL 语句

    
    
    
    
  5. 动态 SQL
    if、where、set、forEach、trim

四. SpringMVC 环境的搭建

  1. web.xml中配置 SpringMVC 的中央控制器 dispatcherServlet 拦截所有匹配的请求路径,配置读取 SpringMVC 核心配置文件的路径

  2. 配置 SpringMVC 核心配置文件

    
    
      
    
    
      
    
    
    	
        
    	
    		/
    	
    	
        
    	
    		.jsp
    	
    	
        
    	
       		org.springframework.web.servlet.view.JstlView
    	
    
    
    
    
    
    
    
    	
    		
    		
    		
    		
    		
    	
    
    
    
      
    	
       	  
    	   	10485760  
       	  
       	
        
       	
    	   	UTF-8
        
    
    
  3. 创建 Controller,UserController(创建方法method,addUser)

    @Controller、@RequestMapping、@RequestParam、@ResponseBody

五. SpringMVC 组件

  • DispatcherServlet:中央控制器
  • HandleMapping:映射处理器
  • Controller:控制器
  • ViewResolver:视图解析器
  • ModelAndView:模型和视图对象

六. SpringMVC 工作原理

  1. Tomcat 启动时会读取web.xml,加载 DispatcherServlet,并实例化中央控制器
  2. 客户端发送一个请求到服务器,Tomcat 会接收这个请求
  3. 判断请求是否符合 DispatcherServlet 的请求路径
  4. 若符合,则 DispatcherServlet 会调用 HandleMapping 把请求交给对应的 Controller 处理
  5. Controller 处理完请求之后,会返回一个 ModelAndView 对象给 DispatcherServlet
  6. DispatcherServlet 调用 ViewResolver 把 ModelAndView 解析成视图页面