springboot 入门

80 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

SpringBoot

1. 自动构建boot

目标:

1.构建springboot项目

2.编写HelloController返回hello world

步骤:

  • 使用idea创建空项目
  • new model--->spring init(maven上面就是)
  • 填写项目基本信息
  • 选择依赖,版本(boot)
  • 编写HelloController返回hello world

详情:

  • 填写基本信息

image-20200918091501071.png

  • 选择依赖

image-20200918091855537.png

  • 编写HelloController返回hello world

image-20200918092319570.png

三、SpringBoot配置文件

springboot支持两种类型的配置文件,一种是properties(key=val),另一种是yaml(yml),更加容易识别,读取更加方便。

1. 修改端口号

properties

server.port=8081

yml

server:
  port: 8082

注意:

如果properties和yml中同时配置了端口号,那么以properties中为准。

2. yml支持数据类型
#基本数据类型 格式 key+ : + 空格 + val
personName: 张三
#对象类型数据
person:
  name: 于谦
  age: 50
  sex: 
  #数组
  likes:
    - 抽烟
    - 喝酒
    - 烫头
  #集合
  books:
    - name: 葵花宝典
      writer: 郑和
    - name: 金瓶梅
      writer: 兰陵笑笑生
3. 获取yml配置文件内容
@Value
@RestController
public class HelloController {
​
    @Value("${personName}")
    private String name;
​
    @RequestMapping("hello")
    public String hello(){
        return "hello world " + name;
    }
}
@ConfigurationProperties
@Component //注入spring容器
@ConfigurationProperties(prefix = "person") //可以根据前缀注入配置文件中的val
public class Person {
​
    private String name;
    private Integer age;
    private String sex;
    private String likes [];
    private List<Booke> books;
​
   //省略set get toString
}
4. 多环境配置文件使用

properties

image-20200918110559664.png

需要在总配置文件中指定使用哪个配置文件

spring.profiles.active=dev

四、SpringBoot整合其他技术

1. boot整合mybatis

目标:

  • 要求使用boot整合mybatis完成查询所有用户的功能

步骤:

  • 创建spring-boot-mybatis项目
  • 选择版本2.1.X版本(如果选择错误,删除重建)
  • 选择依赖:web/lombok/mybatis框架/mysql驱动
  • 编写三层架构
  • 修改配置文件db配置、mybatis配置
  • 测试访问

过程:

  • sql文件

    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(50) DEFAULT NULL,
    `password` varchar(50) DEFAULT NULL,
    `name` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三');
    INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
    SELECT * FROM user;
    
  • 选择版本+依赖

image-20200918115007368.png

  • 三层架构

image-20200918115056789.png

```
@RestController
@RequestMapping("user")
public class UserController {
​
    @Autowired
    private UserService userService;
​
    /**
     * @Author: guobuyi
     * @Date: 11:28 2020/9/18
     * @Params []
     * @ReturnType: List<User>
     * @Description: 查询所有用户
     */
    @RequestMapping("findAll")
    public List<User> findAll(){
        return userService.findAll();
    }
}
​
public interface UserService {
    /**
     * @Author: guobuyi
     * @Date: 11:28 2020/9/18
     * @Params []
     * @ReturnType: List<User>
     * @Description: 查询所有用户
     */
    List<User> findAll();
}
​
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    /**
     * @Author: guobuyi
     * @Date: 11:28 2020/9/18
     * @Params []
     * @ReturnType: List<User>
     * @Description: 查询所有用户
     */
    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }
}
​
@Mapper //声明是一个mapper接口
@Repository //注入到spring容器中
public interface UserDao {
    /**
     * @Author: guobuyi
     * @Date: 11:28 2020/9/18
     * @Params []
     * @ReturnType: List<User>
     * @Description: 查询所有用户
     */
    List<User> findAll();
}
```
  • mapper.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.itheima.dao.UserDao">
        <select id="findAll" resultType="user">
            select * from user
        </select>
    </mapper>
    
  • 配置文件

    #db配置
    spring:
      datasource:
        #serverTimezone=UTC 时区必须添加
        url: jdbc:mysql://127.0.0.1/itheima?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: root
    #mybatis
    mybatis:
      mapper-locations: classpath:mapper/*.xml #mapper.xml位置
      type-aliases-package: com.itheima.pojo #实体位置
    
    
  • 访问

    http://localhost:8080/user/findAll

image-20200918115332166.png