SpringBoot手动搭建环境、Entity、Dao层开发、数据库模型设计
如果插件Spring Assistant与我们的电脑有冲突,那我们就不要选择此插件,
自己来搭建环境创建项目
1、创建项目
(1)选择Maven项目创建
(2)自定义名称
(3)创建完成的样子
2、手动搭建SpringBoot环境
(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
3、添加mysql配置文件
因为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
4、创建SpringBoot的项目入口
(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)运行程序
5、创建SpringBoot项目的结构层
(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 ,出现如下所示,表示所有东西创建成功