有关Java和Maven等的环境搭建不过多赘述,直接开始操作。
选择Maven
,选择自己的JDK
版本,点击Next
进入下一步
此时需要Name
处填写项目名称,在Location
处选择项目路径。需要注意的是:
Name
填写的相同,之后会在对应的路径下生成项目GroupId
采用域名反写的书写形式,作为项目组织唯一的标识符,通常以com
或cn
开头,使用.
分割;ArtifactId
作为项目的唯一标识符,一般和项目名称相同填写完成之后点击Finish
,此时新项目创建完成。
点击File -> Setting...
,搜索Maven
,在上图所画的红框内选择事先配置好的Maven
Maven home path
为安装的Maven
根目录所在路径User setting file
为Maven
的配置文件settings.xml
所在路径Local repository
为Maven
本地仓库所在路径,引入的依赖包全部都存储在此仓库目录下,加入没有事先配置自己的Maven
本地仓库,可以使用默认仓库设置好之后点击OK
,完成!
src/main/java
下的包路径需要根据之前填写的ArtifactId
进行创建,反写的域名有几个逗号分隔符,就建几层包,只可多建不可少建。如上图所示我是多建了一个core
包,我会将此包作为扫描包的根路径,之后所有的核心代码都会放置在此路径下DeployApplication
:自定义命名,启动类放置在扫描包的根路径下,他是项目的唯一入口config
包:用于放置所有的配置类modular
包:核心业务代码,该包下所有代码按业务模块划分,每个业务模块进一步细分:
controller
包:控制层,声明接口,主要用于接受前台传入的数据以及返回数据给前台dao
包:数据持久层,用于放置以Mapper
为结尾的接口文件和xml
文件(该类文件放置在dao
下的mapping
包中)model
包:用于定义数据模型,根据数据模型不同的用途分别放置在不同的包中:数据库表模型entity包
、用于请求的数据模型request包
、用于返回数据给前台的响应数据模型response包
、其他数据模型dto包
service
包:业务服务层,主要用于实现业务的核心逻辑enums
包:用于存放枚举类constant
包:用于存放常量util
包:用于存放工具类resources
包:用于存放项目中需要用到的资源文件,像一些配置文件application.properties
或是一些静态资源文件上述步骤中Maven
的settings.xml
文件是全局的配置文件,主要与Maven
的环境配置有关。而pom.xml
文件主要描述了项目的maven坐标
以及项目的依赖关系,还有一些开发者需要遵循的、自己定义的约束条件,是项目级别的配置文件。
初始pom.xml
文件,只需导入spring-boot-starter-web
依赖,就能实现初步的启动运行,默认端口8080
。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<version>2.1.6.RELEASEversion>
dependency>
完整pom.xml
文件如下所示:
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.studygroupId>
<artifactId>spring-boot-demoartifactId>
<version>1.0-SNAPSHOTversion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.6.RELEASEversion>
parent>
<packaging>jarpackaging>
<properties>
<maven-compiler-plugin.version>3.8.1maven-compiler-plugin.version>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<configuration>
<source>${java.version}source>
<target>${java.version}target>
<testSource>${java.version}testSource>
<testTarget>${java.version}testTarget>
<encoding>${project.build.sourceEncoding}encoding>
configuration>
<version>${maven-compiler-plugin.version}version>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-resources-pluginartifactId>
<configuration>
<encoding>${project.build.sourceEncoding}encoding>
configuration>
<version>3.1.0version>
plugin>
plugins>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.xmlinclude>
includes>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
<include>**/*.ymlinclude>
includes>
resource>
resources>
build>
project>
parent
标签指定了父级坐标,之后所有导入的SpringBoot
相关依赖都无需在指定版本号。jar
和war
两种打包方式,这里指定为jar
打包方式properties
标签,将所有依赖的版本进行统一管理,更易维护maven-compiler-plugin
插件,用来编译项目代码,是一个Maven
插件resouces
标签配置资源文件加载,会将src/main/java
文件夹下的所有.xml
文件以及resources
资源包下的所有.proerties
、.xml
、.yml
文件进行编译,加载到编译之后的classes
类路径下完善配置文件pom.xml
后,保存代码,点击右侧侧边栏Maven
选项卡,点击重新载入依赖包按钮Reload All Maven Projects
,下载最新资源成功后,即可让最新pom.xml
配置文件发挥作用。
在扫描包的根目录下创建启动类,如图在core
包下创建DeployApplication.java
文件,定义主函数入口:
@SpringBootApplication
public class DeployApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder(DeployApplication.class).run();
}
}
之后启动项目,点击左侧绿色的箭头按钮,选第一个run
或者第二个debug
都可以运行,一般选择第二个,方便我们以后遇到问题之后进行调试,快速排查问题
启动成功!默认端口8080
,要想自定义端口号,在application.properties
文件中可以进行声明:server.port=[你的端口号]
在浏览器输入正确的地址http://localhost:8080
,如下图。
在pom.xml
配置文件下新增相关依赖
<properties>
<mybatis-plus-boot-starter.version>3.4.2mybatis-plus-boot-starter.version>
properties>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>${mybatis-plus-boot-starter.version}version>
dependency>
dependencies>
在application.properties
文件中配置数据源
# 数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/firework_bbs_dev?serverTimezone=Asia/Shanghai
spring.datasource.username=[数据库登录用户名]
spring.datasource.password=[数据库登录密码]
配置文件有多种格式:
.properties
为后缀的配置文件,书写格式都是如上所示,xx属性.xx属性=具体值
.yml
为后缀的配置文件,书写格式则是xx属性: xx属性: 具体值
,如下所示# 数据库连接
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/firework_bbs_dev?serverTimezone=Asia/Shanghai
username: [数据库登录用户名]
password: [数据库登录密码]
启动项目,可以看到mybatisplus
的启动UI。
接下来,验证一下数据库是否真的连接成功了,导入junit
相关依赖方便进行单元测试,导入lombok
用于简化实体类的创建。
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
dependency>
创建测试表tbl_demo
,创建表的sql语句
如下所示:
CREATE TABLE `tbl_demo` (
`id` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '主键id',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '姓名',
`phone` varchar(25) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '手机号',
`create_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '更新人id',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`is_del` int NOT NULL DEFAULT '0' COMMENT '逻辑删除 0-否 1-是',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
表结构如下图所示:
package com.study.core.modular.demo.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "tbl_demo")
public class Demo {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 姓名
*/
@TableField(value = "`name`")
private String name;
/**
* 手机号
*/
@TableField(value = "phone")
private String phone;
/**
* 创建人id
*/
@TableField(value = "create_id")
private String createId;
/**
* 创建时间
*/
@TableField(value = "create_time")
private Date createTime;
/**
* 更新人id
*/
@TableField(value = "update_id")
private String updateId;
/**
* 更新时间
*/
@TableField(value = "update_time")
private Date updateTime;
/**
* 逻辑删除 0-否 1-是
*/
@TableField(value = "is_del")
private Integer isDel;
}
声明的mapper
接口继承MybatisPlus
的BaseMapper
接口
package com.study.core.modular.demo.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.study.core.modular.demo.model.entity.Demo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DemoMapper extends BaseMapper<Demo> {
}
package com.study.core.modular.demo.service;
import com.study.core.modular.demo.dao.DemoMapper;
import com.study.core.modular.demo.model.entity.Demo;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class DemoService {
private final DemoMapper demoMapper;
public Demo getDemoById(String id) {
return demoMapper.selectById(id);
}
}
创建单元测试,调用service
层方法
import com.study.core.modular.demo.service.DemoService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoTest {
@Resource
private DemoService demoService;
@Test
public void getDemoTest() {
Demo demo = demoService.getDemoById("1");
System.out.println(demo);
}
}
控制台返回结果如下图所示,能看到正确打印出了demo数据,表示连接数据库以及整合MybatisPlus
成功。