赞
踩
1、SpringBoot框架的选择和原理
本项目是民航大数据平台的缩影,本系统数据量大并涉及大数据的处理,需要进行后端的分离,并且后端选择分布式的成熟框架。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来建行新Spring应用的初始搭建及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不需要定义样板化的配置。
SpringBoot所具备的特征:
2、MyBatis-Plus
官网地址:https://mp.baomidou.com/
MyBatis-Plus 特性:https://baomidou.com/pages/24112f/#%E7%89%B9%E6%80%A7
3、使用IDEA创建SpringBoot项目
注意,这里Spring Boot选择任意版本即可,例如:在图中使用的是2.7.11,但是在实际环境中Spring Boot的版本是动态变化的,请根据自己当前的环境进行设置,一般来说选择一个2.7.x的任意版本都可以。
依次点击 File --> Settings,在打开的面板中选择 Plugins,搜索 MyBatisX并安装即可:
1)从官方网站下载最新版本即可,中文网下载地址: https://maven.org.cn/download.html ,注意,Maven 3.9+ requires JDK 8 or above to execute. It still allows you to build against 1.3 and other JDK versions by using toolchains。当前项目环境已经提供了安装文件,存放在Client节点的/opt/software目录下。
2)进入/opt/software目录,解压安装Maven到/opt/目录下
- [root@client ~]# cd /opt/software
- [root@client software]# tar -zxvf apache-maven-3.9.1-bin.tar.gz -C /opt/
3)配置Maven使用国内源,进入Maven配置目录 (例如:/opt/apache-maven-3.9.1/conf)
- [root@client software]# cd /opt/apache-maven-3.9.1/conf
- [root@client conf]# vim settings.xml
4)修改settings.xml文件,在<mirrors></mirrors>标签内将其他的<mirror>标签注释掉或删除掉,然后添加如下内容:
- <mirror>
- <id>huaweicloud</id>
- <mirrorOf>*</mirrorOf>
- <url>https://mirrors.huaweicloud.com/repository/maven/</url>
- </mirror>
1)依次点击 “File”->"Settings",打开设置面板,然后找到“Build,Execution,Deployment”->“Build Tools”->“Maven”
2)设置如下内容,来配置Maven插件
为了支持MyBatis-Plus需要在<dependencies> </dependencies>标签内添加MyBatis-Plus的相关依赖:
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.4.1</version>
- </dependency>
还需添加MySQL相关依赖,为了简化代码,引入 lombok 依赖(减少 getter、setter 等方法):
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.18</version>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.10</version>
- </dependency>
点击如下图所示图标,更新Maven引用:
替换启动类(DemoApplication.java)头部声明
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
启动项目:
启动成功后显示访问端口8080。
停止项目:
4、实现REST请求
首先我们在com.example.demo包下,分别创建model包(用于存放model)、dao包(用于存放数据访问文件)、controller包(用于存放控制器)、service包(用于存放主要的程序逻辑代码)。
右键com.example.demo选择New-->Package创建包
创建com.example.demo.model包
按照上述方式继续创建dao包、controller包、service包,项目结构如下:
在model包中创建一个Java Class文件,名为Test.java,并写入以下内容:
- package com.example.demo.model;
-
- public class Test {
- private final long id;
- private final String content;
- public Test(long id,String content) {
- this.id = id;
- this.content = content;
- }
- public long getId() {
- return id;
- }
- public String getContent() {
- return content;
- }
- }
在controller包中创建一个Java Class文件,名为TestController.java,并写入以下内容:
- package com.example.demo.controller;
-
- import java.util.concurrent.atomic.AtomicLong;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import com.example.demo.model.Test;
-
- @RestController
- public class TestController {
- private static final String template = "Hello,%s!";
- private final AtomicLong counter = new AtomicLong();
- @RequestMapping("/test")
- public Test dealTest(@RequestParam(value="name", defaultValue="World") String name) {
- return new Test(counter.incrementAndGet(),String.format(template, name));
- }
- }
控制台选项卡会打印运行日志,如下我们可以看到监听到本地8080端口。
刷新页面,可以看到计数器加1后的效果:
5、创建定时器
使用SpringBoot基于注解来创建定时任务非常简单,代码如下。
- package com.example.demo.task;
-
- import org.springframework.context.annotation.Configuration;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.scheduling.annotation.Scheduled;
-
- @Configuration //1.主要用于标记配置类,兼备Component的效果。
- @EnableScheduling // 2.开启定时任务
- public class StaticScheduleTask {
- //3.添加定时任务,每隔5秒打印一次“Schedule Task”
- @Scheduled(cron = "0/5 * * * * ?")
- private void testTask() {
- System.out.println("Schedule Task");
- }
- }
- package com.example.demo;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-
- @EnableScheduling //开启定时任务
- @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
- public class DemoApplication {
- public static void main(String[] args) {
- SpringApplication.run(DemoApplication.class, args);
- }
- }
6、测试MyBatis-Plus的使用
[root@node3 ~]# mysql -uroot -p123456
- DROP DATABASE IF EXISTS testMyBatisPlus;
-
- CREATE DATABASE testMyBatisPlus;
-
- USE testMyBatisPlus;
-
- DROP TABLE IF EXISTS user;
-
- CREATE TABLE user
- (
- id BIGINT(20) NOT NULL COMMENT '主键ID',
- name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
- age INT(11) NULL DEFAULT NULL COMMENT '年龄',
- email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
- PRIMARY KEY (id)
- );
-
- INSERT INTO user (id, name, age, email) VALUES
- (1, 'Jone', 18, 'test1@baomidou.com'),
- (2, 'Jack', 20, 'test2@baomidou.com'),
- (3, 'Tom', 28, 'test3@baomidou.com'),
- (4, 'Sandy', 21, 'test4@baomidou.com'),
- (5, 'Billie', 24, 'test5@baomidou.com');
- spring:
- datasource:
- driver-class-name: com.mysql.cj.jdbc.Driver
- username: root
- password: 123456
- url: jdbc:mysql://node3:3306/testMyBatisPlus?autoReconnect=true&autoReconnectForPools=true&failOverReadOnly=false&serverTimezone=UTC
如上url中的node3不建议修改为IP地址,在真实开发过程中测试环境与生产环境的IP地址不一样。
- package com.example.demo.entity;
-
- import lombok.Data;
-
- @Data
- public class User {
- private Long id;
- private String name;
- private int age;
- private String email;
- }
- package com.example.demo.mapper;
-
- import com.example.demo.entity.User;
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
- public interface UserMapper extends BaseMapper<User> {
- }
BaseMapper里封装了一些常用的CRUD方法:
- package com.example.demo;
-
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-
- @MapperScan("com.example.demo.mapper")
- @SpringBootApplication
- public class DemoApplication {
-
- public static void main(String[] args) {
-
- SpringApplication.run(DemoApplication.class, args);
- }
- }
- package com.example.demo;
-
- import com.example.demo.entity.User;
- import com.example.demo.mapper.UserMapper;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
-
- import java.util.List;
-
- @SpringBootTest
- class TestMybatisPlusApplicationTests {
-
- @Autowired
- private UserMapper userMapper;
-
- @Test
- public void testSelect() {
- System.out.println(("----- selectAll method test ------"));
- List<User> userList = userMapper.selectList(null);
- for(User user:userList) {
- System.out.println(user);
- }
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.4.5</version>
-
- </parent>
- <groupId>com.example</groupId>
- <artifactId>demo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>demo</name>
- <description>Demo project for Spring Boot</description>
- <properties>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web-services</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.4.1</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.10</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </project>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。