下面我们来学习一下SpringBoot如何整合SpringMVC,这对后面的项目比较重要。要好好看一下。
目录
一、新键一个工程。
二、整合springMVC
三、整合数据源
四、整合Mybatis
五、整合事务
六、测试项目
七、SpringBoot实战总结
实战之前,我们先将需要用到的数据库导入。
将下列sql语句全部复制过去执行就可以了。
/*
SQLyog Ultimate v10.00 Beta1
MySQL - 5.5.15 : Database - yuanxion
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`yuanxion` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `yuanxion`;
/*Table structure for table `tbuser1` */
DROP TABLE IF EXISTS `tbuser1`;
CREATE TABLE `tbuser1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` char(1) NOT NULL,
`password` int(11) NOT NULL,
`name` char(1) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`created` date DEFAULT NULL,
`updated` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/*Data for the table `tbuser1` */
insert into `tbuser1`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`created`,`updated`) values (1,'y',1024,'猿',12,1,'2019-10-24','2019-11-07','2019-11-07');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
配置依赖。
org.springframework.boot
spring-boot-starter-parent
2.0.6.RELEASE
org.springframework.boot
spring-boot-starter-web
测试一下工程。
@Controller
@RequestMapping("user")
public class UserController {
@GetMapping("test")
@ResponseBody
public String test(){
return "hello user!";
}
}
在引导类中,启动运行测试。
启动运行成功之后,访问http://localhost:8888/user/test
访问成功了,结果也显示正确。
说明我们项目成功搭建起来了。
(以后搭建项目过程,以及测试新项目过程,就不截图了。)
接下来进入实战:
1.SpringBoot如何访问静态资源文件?
在SpringBoot中,静态资源文件,一般会 在 resources下 创建一个 static 文件夹 来存放。
这里面可以放一下静态的js、图片等文件。
例如,我们放入一张图片,然后运行项目,看看 能不能访问到。
访问成功!
2.SpringBoot中如何配置拦截器?
先创建一个类,实现 HandlerInterceptor 接口,并重写它的三个方法。
@Component
public class MyInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("前置方法执行中。。。");
return true; //返回值是true,拦截。
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("后置方法执行中。。。");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("完成方法执行中。。。");
}
}
3.写好了拦截器类,接下来我们要去 配置拦截器。
写一个Java配置类。
在这个配置类里,我们要注入MyInterceptor类,
所以需要在开始的MyInterceptor类上加上@Component注解,将MyInterceptor放到spring容器中。
4. 然后我们来启动项目,访问http://localhost:8888/user/test,看看拦截器有没有生效。
拦截器生效了!配置拦截器成功了!
不过我们貌似看不到全部的日志信息,不知道拦截器是什么时候生效的。
那我们可以去 application.properties 里覆盖日志的默认配置。
# 设置org.springframework包的日志级别为debug
logging.level.org.springframework=debug
再运行测试一次,
我们发现,现在就能看到更完整的日志信息了:
那么SpringMVC我们就整合完了。
1.引入jdbc启动器,并选择数据库驱动。
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
2.在application.properties中配置连接属性
#spring.datasource.url=jdbc:mysql://loaclhost:3306/yuanxion 可以简写为下面的
spring.datasource.url=jdbc:mysql:///yuanxion
spring.datasource.username=root
spring.datasource.password=1024
这样,我们就整合完数据源了。(这里就不测试了,等写完后面的再测试。)
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
2.覆盖默认配置。 在application.properties中。
# mybatis 别名扫描
mybatis.type-aliases-package=cn.yuanxion.pojo
# mapper.xml文件位置,如果没有映射文件,请注释掉
mybatis.mapper-locations=classpath:mybatis/mappers/**/*.xml
3.创建别名扫描的包pojo,并创建一个User类。
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "tbuser1")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String password;
private String name;
private Integer age;
private Integer sex;
private Date birthday;
private Date created;
private Date updated;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
", birthday=" + birthday +
", created=" + created +
", updated=" + updated +
'}';
}
}
4.引入通用mapper启动器 (引入之后,你会发现之前的User类就没有报错了。)
tk.mybatis
mapper-spring-boot-starter
2.0.2
5.创建一个mapper接口 并 继承刚刚引入的通用mapper
@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper{
}
这样,我们就整合好了 mybatis 了。
相关依赖由之前的依赖已经传递过来了。
@Service
public class UserService {
@Autowired
private UserMapper userMapper; //这个报错是idea误报。忽略即可。
public User queryById(Long id){
return this.userMapper.selectByPrimaryKey(id);
}
@Transactional //开启事务
public void deleteUserById(Long id){
this.userMapper.deleteByPrimaryKey(id);
}
}
事务就这么整合好了。(是不是很快,很简单?)
在UserController中
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("{id}")
@ResponseBody
public User queryUserById(@PathVariable("id")Long id){
return this.userService.queryById(id);
}
@GetMapping("test")
@ResponseBody
public String test(){
return "hello user!";
}
}
然后启动项目(记得将之前的项目关闭,不然会端口占用)
启动成功后,访问http://localhost:8888/user/1,查询id为1的user的信息。
可以看到,返回成功了!
到这里,我们的springboot实战就完成了!
整合SpringMVC:
整合数据源:
整合mybatis:
整合通用mapper:
整合事务:
我们实战就到这里了!