如果插件Spring Assistant与我们的电脑有冲突,那我们就不要选择此插件,
自己来搭建环境创建项目
(1)选择Maven项目创建
(2)自定义名称
(3)创建完成的样子
(1)将SpringBoot的依赖添加到pom.xml中
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent>
(2)将项目的编码添加到pom.xml中的
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
(3)将项目所需要的依赖添加到pom.xml中
<dependencies> <!--添加Springmvc依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- springBoot JPA的起步依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--因为此项目需要mysql的库,那么添加mysql依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
(4)SpringBoot打包的方式和其他东西打包有一定的差别,需要特定的插件
将需要的插件添加pom.xml中
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.4.RELEASE</version> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
(5)刷新一下Maven:鼠标右击----选择Maven----选择Reload project
因为SpringBoot文件最终要放到某一个库里面,本次使用mysql数据库
所以需要配置mysql数据库的地址
先建一个表
(1)在mysql中新建一个数据库,命名为 springbootdemo
(2)在 springbootdemo库中,自定义设计一个表
create table Student( id int primary key auto_increment, name varchar(255) not null, age int not null default 0, gender varchar(255), clazz varchar(255), sum_score int ); -- 对name做索引 create index stu_name_index on Student(name);
(2)返回IDEA,右击项目名称,选择 new---->Directory 新建一个目录,命名为 data
(3)右击data目录,选择 new---->File 新建一个文件,命名为 student.sql
(4)将自定义表的代码粘贴到 student.sql 文件中
添加mysql配置文件
(5)在 scr---->main---->resources 新建一个File,名称有讲究的,命名为:application.properties
将下面代码粘贴到 application.properties 文件中
(主机名master、权限root、密码123456,可能有所不同,根据个人情况,进行修改)
# 对MySQL连接进行配置 spring.datasource.url=jdbc:mysql://master:3306/springbootdemo?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8 spring.datasource.username=root spring.datasource.password=123456 # mysql驱动 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
(1)在 scr---->main---->java 中先新建一个包,例:com.shujia
(2)在新建的包内,新建一个class文件,例:SpringBootDemoApplication
(3)在类上方艾特一下SpringBootApplication(表示这个类是作为SpringBoot的应用)
(4)添加main方法
(5)添加启动Spring应用的代码(在main方法中):SpringApplication.run(类名.class,args);
//启动Spring应用 SpringApplication.run(SpringBootDemoApplication.class,args);
(6)运行程序
(1)先创建结构层的目录,在 scr---->main---->java---->com.shujia 中创建目录
目录1:Entity-------数据库的模型 目录2:Dao----------数据持久层 目录3:Service------数据服务层 目录4:Controller---数据控制层 目录5:common
(2)编辑 Entity 层,在目录 Entity 新建一个class文件,命名和前面自定义的表名保持一致
package com.shujia.Entity; import javax.persistence.*; @Entity @Table(name = "student") //用小写 public class Student { //定义属性 @Id //设置主键 @GeneratedValue(strategy = GenerationType.IDENTITY) //设置Id自增 private Integer id; private String name; private Integer age; private String gender; private String clazz; //属性名一般同数据库中表的列名一致,不一致时可以使用 @Column 注解 @Column(name = "sum_score") private Integer sumScore; //添加公共的getXxx()和setXxx()方法 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } 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 String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; } public Integer getSumScore() { return sumScore; } public void setSumScore(Integer sumScore) { this.sumScore = sumScore; } }
(3)编辑 Dao 层,新建一个接口,命名为 StudentRepository
(除了Dao层是接口,其他层都是类)
package com.shujia.Dao; import com.shujia.Entity.Student; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository //该接口继承 JpaRepository,并指定泛型 public interface StudentRepository extends JpaRepository<Student,Integer> { }
(4)编辑 Service 层,在目录Service 新建一个class文件,命名为:StudentService
在Service 层内,可以进行增删改查、分页、保存等等
import com.shujia.Dao.StudentRepository; import com.shujia.Entity.Student; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class StudentService { @Resource //Dao层作为资源,添加资源注解 //引用Dao层的资源 private StudentRepository studentRepository; public List<Student> findAll(){ return studentRepository.findAll() } }
(5)编辑 Controller 层,在目录Controller新建一个class文件,命名为:StudentController
@RestController //将数据以json的 格式返回 @RequestMapping("/student") public class StudentController { @RequestMapping("/all") public List<Student> findAll(){ } @RequestMapping("/all2") public List<Student> findAll2(){ } }
(6)编辑 common 层,在目录common新建一个class文件,命名为:Result
用户-----请求(Req)----->服务器
服务器-----返回(Res)--->用户
返回给用户的一般有:状态码、消息、数据
基于状态码、消息、数据,我们可以在Java中定义一个类来描述它们
根据类返回一个对象给用户,对象中包含状态码、消息、数据
package com.shujia.common; public class Result <T> { //返回的东西不确定,在类后面加个泛型 //定义属性 private String code; //定义返回的状态码 private String msg; //定义返回的消息 private T data; //定义返回的数据(不确定类型,使用泛型T) //加入构造方法和公共的getXxx()、setXxx() public Result() { } public Result(T data) { this.data = data; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public T getData() { return data; } public void setData(T data) { this.data = data; } //定义静态方法,不管请求成功与否,都会返回一个对象 //请求成功,不返回数据 public static <T> Result<T> sucess(){ Result rs = new Result<>(); rs.setCode("200"); rs.setMsg("OK"); return rs; } //请求成功,返回数据 public static <T> Result<T> sucess(T data){ Result<T> rs = new Result<T>(data); rs.setCode("200"); rs.setMsg("OK"); return rs; } //请求失败 public static <T> Result<T> error(String code,String msg){ Result rs = new Result<>(); rs.setCode(code); rs.setMsg(msg); return rs; } }
(7)在common层设置了静态方法,这时候还需要返回 Controller 层修改一下代码
package com.shujia.Controller; import com.shujia.Entity.Student; import com.shujia.Service.StudentService; import com.shujia.common.Result; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; @RestController //将数据以json的 格式返回 @RequestMapping("/student") public class StudentController { @Resource //作为资源 private StudentService studentService;//定义属性,将studentService引进来 @GetMapping("/all") public Result<List<Student>> findAll(){ List<Student> list = studentService.findAll(); return Result.success(list); } @GetMapping("/all2") public Result<List<Student>> findAll2(){ List<Student> list = studentService.findAll(); return Result.success(list); } }
(9)开始运行,查看是否有错误
(8)若无错误,在浏览器输入 http://localhost:8080/student/all ,出现如下所示,表示所有东西创建成功