SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】

整合SSM

SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】_第1张图片

SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】_第2张图片


01 基本配置文件的关系

SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】_第3张图片

web.xml配置DispatcherServlet

SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】_第4张图片


02 需要的maven依赖



    
    
        log4j
        log4j
        1.2.17
    
    
    
    
        org.projectlombok
        lombok
        1.16.10
    
    
    
        junit
        junit
        4.12
    
    
    
        mysql
        mysql-connector-java
        5.1.47
    
    
    
        com.mchange
        c3p0
        0.9.5.2
    
    
    
        javax.servlet
        servlet-api
        2.5
    
    
        javax.servlet.jsp
        jsp-api
        2.2
    
    
        javax.servlet
        jstl
        1.2
    
    
    
        org.mybatis
        mybatis
        3.5.2
    
    
        org.mybatis
        mybatis-spring
        2.0.2
    
    
    
        org.springframework
        spring-webmvc
        5.1.9.RELEASE
    
    
        org.springframework
        spring-jdbc
        5.1.9.RELEASE
    



    
        
            src/main/java
            
                **/*.properties
                **/*.xml
            
            false
        
        
            src/main/resources
            
                **/*.properties
                **/*.xml
            
            false
        
    

一、spring整合mybatis配置

01 mybatis核心配置文件mybatis-config.xml

  • 起别名
  • 添加mapper映射
  • 添加setting



    
        
    
    
        
    

02 spring整合配置文件spring-dao.xml

  • 关联数据库配置信息,配置连接池
  • 配置SqlSessionFactory对象
  • 配置扫描Dao接口包,动态实现Dao接口注入到spring容器中


    
    
    
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
    
    
        
        
        
        
    

    
    
    
        
        
        
        
    

  • 到这里dao层的数据获取部分已经配置完成,其中获取sqlSession的方式有所不同,之前有两种方式获取sqlSession对象:
  1. 利用构造器注入
package com.kuang.dao;

import com.kuang.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

public class UserMapperImpl implements  UserMapper {
	//sqlSession不用我们自己创建了,Spring来管理
	private SqlSessionTemplate sqlSession;
	public void setSqlSession(SqlSessionTemplate sqlSession) {
		this.sqlSession = sqlSession;
	}
	public List selectUser() {
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		return mapper.selectUser();
	}
}


 
 
     
 


    
    

  1. 继承SqlSessionDaoSupport,直接使用getSqlSession().getMapper(UserMapper.class);获取

    引用spring-dao.xml的sqlSessionFactory,代理生成sqlSession对象



    
    
    
    

package com.kuang.dao;

import com.kuang.pojo.User;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import java.util.List;

public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper  {
	public List selectUser() {
		UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
		return mapper.selectUser();
	}
}


    

  • 现在配置的方法是最简单的,不需要再手动获取sqlSession对象,由Spring动态生成并执行sql语句!

二、spring-mybatis-springmvc

SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】_第5张图片

01 springmvc主要管理的是controller层和service层

  • controller层主要负责决定要从dao层获取什么数据,还有这些数据要渲染到什么视图上。
  • service层主要负责实现dao层的方法,定义一个新接口,这个接口里的方法来自dao层接口的方法,然后写一个Impl实现这个接口。

spring-mvc.xml整合controller层

  • 开启注解支持
  • 默认过滤静态资源
  • 配置ViewResolver视图解析器
  • 扫描controller层的bean完成注入


    
    
    
    
    
    
    
        
        
        
    
    
    

spring-service.xml整合service层

  • 扫描service层的bean完成注入
  • 把Impl实现方法注入到IOC容器,主要是给参数private BookMapper bookMapper 赋值
  • 配置事务管理器


    
    
    
    
        
    
    
    
        
        
    


三、Spring配置整合文件,applicationContext.xml



    
    
    


四、补充service层的实现方法

package com.kuang.service;
import com.kuang.dao.BookMapper;
import com.kuang.pojo.Books;
import java.util.List;

public class BookServiceImpl implements BookService {
   //调用dao层的操作,设置一个set接口,方便Spring管理
   private BookMapper bookMapper;
   public void setBookMapper(BookMapper bookMapper) {
      this.bookMapper = bookMapper;
   }
   public int addBook(Books book) {
      return bookMapper.addBook(book);
   }
   public int deleteBookById(int id) {
      return bookMapper.deleteBookById(id);
   }
   public int updateBook(Books books) {
      return bookMapper.updateBook(books);
   }
   public Books queryBookById(int id) {
      return bookMapper.queryBookById(id);
   }
   public List queryAllBook() {
      return bookMapper.queryAllBook();
   }
}
  • //调用dao层的操作,设置一个set接口,方便Spring管理
    private BookMapper bookMapper;

在spring-service.xml中的



    

五、补充controller层的方法

package com.kuang.controller;

import com.kuang.pojo.Books;
import com.kuang.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/book")
public class BookController {
   @Autowired
   @Qualifier("BookServiceImpl")
   private BookService bookService;
   @RequestMapping("/allBook")
   public String list(Model model) {
      List list = bookService.queryAllBook();
      model.addAttribute("list", list);
      return "allBook";
   }

   @RequestMapping("/toAddBook")
   public String toAddPaper() {
      return "addBook";
   }
   @RequestMapping("/addBook")
   public String addPaper(Books books) {
      System.out.println(books);
      bookService.addBook(books);
      return "redirect:/book/allBook";
   }

   @RequestMapping("/toUpdateBook")
   public String toUpdateBook(Model model, int id) {
      Books books = bookService.queryBookById(id);
      System.out.println(books);
      model.addAttribute("book",books );
      return "updateBook";
   }
   @RequestMapping("/updateBook")
   public String updateBook(Model model, Books book) {
      System.out.println(book);
      bookService.updateBook(book);
      Books books = bookService.queryBookById(book.getBookID());
      model.addAttribute("books", books);
      return "redirect:/book/allBook";
   }

   @RequestMapping("/del/{bookId}")
   public String deleteBook(@PathVariable("bookId") int id) {
      bookService.deleteBookById(id);
      return "redirect:/book/allBook";
   }
}

六、总结

  • mybatis-config.xml 完成dao层的mapper和mapper.xml的映射(扫描这个包并配置mapper)
  • spring-dao.xml 帮助mybatis整合到spring中,主要完成获取数据库连接以及获取sqlSession对象并完成dao层mapper的自动注入。
  • spring-mvc.xml 完成controller层的配置,扫描controller层的bean扫描,完成视图解析。
  • spring-service.xml 把service层的方法注入到IOC容器中,完成配置事务管理。
  • web.xml 完成DispatcherServlet的配置以及字符编码过滤(UTF-8)。
  • applicationContext.xml 完成所有配置文件的整合引入。

你可能感兴趣的:(SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】)