乐优商场项目day01——SringBoot实战

下面我们来学习一下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 */;

一、新键一个工程。
 

乐优商场项目day01——SringBoot实战_第1张图片

乐优商场项目day01——SringBoot实战_第2张图片

 

乐优商场项目day01——SringBoot实战_第3张图片

 

乐优商场项目day01——SringBoot实战_第4张图片

配置依赖。

乐优商场项目day01——SringBoot实战_第5张图片


    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.6.RELEASE
    

    
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

测试一下工程。

乐优商场项目day01——SringBoot实战_第6张图片

@Controller
@RequestMapping("user")
public class UserController {

    @GetMapping("test")
    @ResponseBody
    public String test(){
        return "hello user!";
    }
}

乐优商场项目day01——SringBoot实战_第7张图片

乐优商场项目day01——SringBoot实战_第8张图片

 

在引导类中,启动运行测试。

乐优商场项目day01——SringBoot实战_第9张图片

启动运行成功之后,访问http://localhost:8888/user/test
乐优商场项目day01——SringBoot实战_第10张图片

 

访问成功了,结果也显示正确。
说明我们项目成功搭建起来了。

(以后搭建项目过程,以及测试新项目过程,就不截图了。)

 

接下来进入实战:

 

二、整合springMVC


1.SpringBoot如何访问静态资源文件?
在SpringBoot中,静态资源文件,一般会 在 resources下 创建一个 static 文件夹 来存放。
乐优商场项目day01——SringBoot实战_第11张图片

乐优商场项目day01——SringBoot实战_第12张图片

这里面可以放一下静态的js、图片等文件。
例如,我们放入一张图片,然后运行项目,看看 能不能访问到。
乐优商场项目day01——SringBoot实战_第13张图片

 

乐优商场项目day01——SringBoot实战_第14张图片

访问成功!

 

2.SpringBoot中如何配置拦截器?

先创建一个类,实现 HandlerInterceptor 接口,并重写它的三个方法。
乐优商场项目day01——SringBoot实战_第15张图片

 

@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容器中。

乐优商场项目day01——SringBoot实战_第16张图片

 

4. 然后我们来启动项目,访问http://localhost:8888/user/test,看看拦截器有没有生效。
乐优商场项目day01——SringBoot实战_第17张图片

 

拦截器生效了!配置拦截器成功了!

不过我们貌似看不到全部的日志信息,不知道拦截器是什么时候生效的。
那我们可以去 application.properties 里覆盖日志的默认配置。
 

# 设置org.springframework包的日志级别为debug
logging.level.org.springframework=debug

乐优商场项目day01——SringBoot实战_第18张图片

 

再运行测试一次,
我们发现,现在就能看到更完整的日志信息了:
乐优商场项目day01——SringBoot实战_第19张图片

 

那么SpringMVC我们就整合完了。


三、整合数据源

1.引入jdbc启动器,并选择数据库驱动。

乐优商场项目day01——SringBoot实战_第20张图片
 

        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            mysql
            mysql-connector-java
        

 

2.在application.properties中配置连接属性

乐优商场项目day01——SringBoot实战_第21张图片

#spring.datasource.url=jdbc:mysql://loaclhost:3306/yuanxion 可以简写为下面的
spring.datasource.url=jdbc:mysql:///yuanxion
spring.datasource.username=root
spring.datasource.password=1024

这样,我们就整合完数据源了。(这里就不测试了,等写完后面的再测试。)

 

四、整合Mybatis

1.引入mybatis启动器。
乐优商场项目day01——SringBoot实战_第22张图片

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        

 

2.覆盖默认配置。 在application.properties中。
乐优商场项目day01——SringBoot实战_第23张图片

# mybatis 别名扫描
mybatis.type-aliases-package=cn.yuanxion.pojo
# mapper.xml文件位置,如果没有映射文件,请注释掉
mybatis.mapper-locations=classpath:mybatis/mappers/**/*.xml

3.创建别名扫描的包pojo,并创建一个User类。

乐优商场项目day01——SringBoot实战_第24张图片

 

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类就没有报错了。)

乐优商场项目day01——SringBoot实战_第25张图片

        
        
            tk.mybatis
            mapper-spring-boot-starter
            2.0.2
        

 

5.创建一个mapper接口 并 继承刚刚引入的通用mapper

 乐优商场项目day01——SringBoot实战_第26张图片

@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper{
}

这样,我们就整合好了 mybatis 了。

 

五、整合事务

相关依赖由之前的依赖已经传递过来了。

乐优商场项目day01——SringBoot实战_第27张图片

 

@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中

乐优商场项目day01——SringBoot实战_第28张图片

@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的信息。
可以看到,返回成功了!

乐优商场项目day01——SringBoot实战_第29张图片

 

到这里,我们的springboot实战就完成了!

 

七、SpringBoot实战总结

整合SpringMVC:

  1. 修改端口(server.port=8888)
  2. 访问静态资源(classpath:META/resources  classpath:resources  classpath:static(最常用)  classpath:public)
  3. 拦截器:
    ①自定义拦截器:实现HandlerInterceptor接口
    ②配置拦截器:自定义一个java配置类(@Configuration),实现WebMvcConfigurer接口

整合数据源:

  1. 引入jdbc启动器,mysql驱动
  2. 添加配置

整合mybatis:

  1. 引入启动器
  2. 覆盖默认配置
  3. 代码:定义一个接口,在接口上添加@Mapper注解

整合通用mapper:

  1. 引入启动器
  2. 代码:接口继承Mapper

整合事务:

  1. 添加@Transactional

 

我们实战就到这里了!

 

 

 

 

你可能感兴趣的:(乐优商城,SpringBoot)