了解Springboot
官方:
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最大的优点就是:简单、快速、方便地搭建项目;对主流开发框架的无配置集成;极大提高了开发、部署效率。
快速搭建Springboot项目
开发工具:Intellij IDEA
所需开发环境:JDK Gradle
注意这里的Artifact只能小写,不然创建不成功。
这里选择管理jar包的是Gradle Project
这里选择Spring Web 和JPA,Mysql
然后搭建成功,需要等待Gradle下载组件。
设置数据源
springboot配置文件默认可以放到以下目录,可以自动读取到:
项目根目录下
项目根目录中config目录下
项目的resources目录下
项目resources目录中config目录下
但读取是有顺序的。
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
注:
1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
3、创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下
个人比较喜欢yml文件作为配置文件,比较有层次感。也有人习惯是properties文件。这里只介绍yml文件。
application.yml:
#设置端口号
server:
port: 15888
#设置数据源
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
username: root
password: root
jpa:
# 显示sql语句
show-sql: true
database: mysql
配置好配置文件,接下来写实体类
实体类
/**
* 使用JPA注解配置映射关系
*/
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "student") //@Table来指定和哪个数据表对应;如果省略,默认表名就是该类名的小写:student
public class Students{
@Id //表示这个属性是数据表中的主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //还是一个自增的主键
private Integer id;
@Column(name = "student_name",length = 50) //这是和数据表对应的一个列,可以定义其在数据表中的名字及长度
private String sname;
@Column //省略的情况,默认列名就是属性名
private String ssex;
这里值得注意的是如果你的数据没有设立主键,也没有用@Id注解,项目启动的时候会报错误Not an managed type。一般的数据库都会有主键,注意别进坑。
持久层
JPA中有许多封装好的对数据库进行操作的方法,不需要再写sql语句,而是直接调用其中的方法,就可以完成对数据的操作了。而这时,持久层只需继承JpaRepository类就OK了。
/**
* 继承JpaRepository来完成对数据库的操作
* JpaRepository<T,id>,T表示要进行操作的实体类,id表示类的主键的类型
*/
public interface StudentsRepository extends JpaRepository<Students,Integer> {
}
控制层
编写控制层代码来测试一下是否成功。因为没有界面,所以这边直接用@RestController注解来返回json串就好了,把持久层接口自动注入进来,直接调用其中对应的方法。
@RestController
public class StudentsController {
@Autowired
StudentsRepository studentsRepository;
@GetMapping("/students/{id}")
public Students getStudents(@PathVariable("id") Integer id){
Students students= studentsRepository.findOne(id);
return students;
}
}