黑马程序员技术交流社区

标题: 【上海校区】使用SpingBoot快速构建工程入门 [打印本页]

作者: 阿莱    时间: 2019-9-25 11:45
标题: 【上海校区】使用SpingBoot快速构建工程入门
本帖最后由 阿莱 于 2019-9-25 11:47 编辑

【上海校区】使用SpingBoot快速构建工程入门


一、SpingBoot的概述

Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring.


上面是引自官网的一段话,大概是说: Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。



二、SpringBoot的好处

回顾我们之前的 SSM 项目,搭建过程还是比较繁琐的,需要:

   .....

而使用 Spring Boot 来开发项目则只需要非常少的几个配置就可以搭建起来一个 Web 项目,并且可以避免依赖之间的各种冲突



三、项目的搭建

1、创建数据库和表

创建一个数据库为mybatis的数据库,在该数据库下面创建一张表,建表语句如下:


[SQL] 纯文本查看 复制代码
/*
Navicat Premium Data Transfer

Source Server         : local
Source Server Type    : MySQL
Source Server Version : 50723
Source Host           : localhost:3306
Source Schema         : yun6

Target Server Type    : MySQL
Target Server Version : 50723
File Encoding         : 65001

Date: 08/09/2018 16:33:40
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
  `password` varchar(100) DEFAULT NULL COMMENT '密码',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `age` int(10) DEFAULT NULL COMMENT '年龄',
  `sex` tinyint(1) DEFAULT NULL COMMENT '性别,1男性,2女性',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `note` varchar(255) DEFAULT NULL COMMENT '备注',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_user
-- ----------------------------
BEGIN;
INSERT INTO `tb_user` VALUES (1, 'zhangsan', '123456', '张三', 30, 1, '1964-08-08', '张三同学在学Java', '2014-09-19 16:56:04', '2014-09-21 11:24:59');
INSERT INTO `tb_user` VALUES (2, 'lisi', '123456', '李四', 21, 2, '1995-01-01', '李四同学在传智学Java', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES (3, 'wangwu', '123456', '王五', 22, 2, '1994-01-01', '王五同学在学php', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES (4, 'zhangwei', '123456', '张伟', 20, 1, '1996-09-01', '张伟同学在传智播客学Java', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES (5, 'lina', '123456', '李娜', 28, 1, '1988-01-01', '李娜同学在传智播客学Java', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES (6, 'lilei', '123456', '李磊', 23, 1, '1993-08-08', '李磊同学在传智播客学Java', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES (7, 'hanmeimei', '123456', '韩梅梅', 24, 2, '1992-08-08', '韩梅梅同学在传智播客学php', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES (8, 'liuyan', '123456', '柳岩', 21, 2, '1995-08-08', '柳岩同学在传智播客学表演', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES (9, 'liuyifei', '123456', '刘亦菲', 18, 2, '1998-08-08', '刘亦菲同学在传智播客学唱歌', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES (10, 'fanbingbing', '123456', '范冰冰', 25, 2, '1991-08-08', '范冰冰同学在传智播客学表演', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES (11, 'zhengshuang', '123456', '郑爽', 23, 2, '1993-08-08', '郑爽同学在传智播客学习如何装纯', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES (12, 'tangyan', '123456', '唐嫣', 26, 2, '1990-08-08', '郑爽同学在传智播客学习如何耍酷', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;


2、创建一个maven工程

在pom.xml中导入下面依赖:


[XML] 纯文本查看 复制代码
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mapper.starter.version>2.1.4</mapper.starter.version>
        <mysql.version>5.1.46</mysql.version>
        <pageHelper.starter.version>1.2.5</pageHelper.starter.version>
    </properties>


    <dependencies>

        <!--web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 通用Mapper启动器 -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>${mapper.starter.version}</version>
        </dependency>

        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3、编写启动类

在src下创建包:com.heima.brand,在com.heima.brand包下创建SpringBoot的启动器:


[Java] 纯文本查看 复制代码
@SpringBootApplication
public class BrandApplication {

    public static void main(String[] args) {

        SpringApplication.run(BrandApplication.class, args);
    }
}



4、创建对应的实体

在创建完实体类之后,在对应的类和属性上加上通用mapper和lombok的注解,用来映射表和字段和生成对应的set和get方法:

[Java] 纯文本查看 复制代码
@Data
@Table(name = "tb_brand")
public class Brand {

    @Id
    @KeySql(useGeneratedKeys =true)//开启主键回填
    private Long id;

    private String name;

    private String firstChar;
}



5、编写配置文件

在resources目录下创建application.yml文件:


[XML] 纯文本查看 复制代码
server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/mybatis
    username: root
    password: 123456
mybatis:
  type-aliases-package: com.heima.brand.bean
logging:
  level:
    com.heima.brand: debug

5、创建对应的mapper接口

在mapper包下面创建BrandMapper接口,并且继承通用Mapper的父类:


[Java] 纯文本查看 复制代码
import com.heima.brand.bean.Brand;
import tk.mybatis.mapper.common.Mapper;

public interface BrandMapper extends Mapper<Brand> {

}



6、在启动类上加入借口扫描包

在SpringBoot的启动器中加入通用mapper的扫描包:

[Java] 纯文本查看 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.heima.brand.mapper")
public class BrandApplication {

    public static void main(String[] args) {

        SpringApplication.run(BrandApplication.class, args);
    }
}
7、编写业务层接口和实现

编写业务层的接口和实现:

BrandService:
[Java] 纯文本查看 复制代码
public interface BrandService {

    List<Brand> findAllBrand();
}
BrandServiceImpl:
[Java] 纯文本查看 复制代码
@Service
public class BrandServiceImpl implements BrandService {

    @Autowired
    private BrandMapper brandMapper;

    @Override
    public List<Brand> findAllBrand() {

        return brandMapper.selectByExample(null);
    }
}


8、编写控制层

编写控制层:BrandController


[Java] 纯文本查看 复制代码
@RestController
@RequestMapping("/brand")
public class BrandController {

    @Autowired
    private BrandService brandService;

    @RequestMapping("/findAllBrand")
    public List<Brand> findAllBrand(){

        return brandService.findAllBrand();
    }
}


9、启动进行测试

测试结果:

10、小结
注意:

启动类默认的扫描包为:com.heima.brand,因此controler,service,mapper等包必须要是com.heima.brand的子包。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2