SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】
整合SSM
01 基本配置文件的关系
web.xml配置DispatcherServlet
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
<?xml version="1.0" encoding="UTF-8" ?>
02 spring整合配置文件spring-dao.xml
- 关联数据库配置信息,配置连接池
- 配置SqlSessionFactory对象
- 配置扫描Dao接口包,动态实现Dao接口注入到spring容器中
<?xml version="1.0" encoding="UTF-8"?>
- 到这里dao层的数据获取部分已经配置完成,其中获取sqlSession的方式有所不同,之前有两种方式获取sqlSession对象:
- 利用构造器注入
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();
}
}
-
继承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
01 springmvc主要管理的是controller层和service层
- controller层主要负责决定要从dao层获取什么数据,还有这些数据要渲染到什么视图上。
- service层主要负责实现dao层的方法,定义一个新接口,这个接口里的方法来自dao层接口的方法,然后写一个Impl实现这个接口。
spring-mvc.xml整合controller层
- 开启注解支持
- 默认过滤静态资源
- 配置ViewResolver视图解析器
- 扫描controller层的bean完成注入
<?xml version="1.0" encoding="UTF-8"?>
spring-service.xml整合service层
- 扫描service层的bean完成注入
- 把Impl实现方法注入到IOC容器,主要是给参数private BookMapper bookMapper 赋值
- 配置事务管理器
<?xml version="1.0" encoding="UTF-8"?>
三、Spring配置整合文件,applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
四、补充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 完成所有配置文件的整合引入。