SpringBoot的认识
Springboot是一个快速开发框架,将各种配置和库进行整合,很大程度上减少了各种配置,能够帮助我们快速的整合各种第三方框架(通过maven依赖的方式将比较繁琐的固定包依赖关系通过maven继承的方式全部依赖起来),完全采用注解化,在使用Springboot的过程中基本上没有使用过XML,以简化XML的配置。
SringBoot的优点
- 为spring的开发提供了更快的入门体验
- 零配置
- 集成了大量常用的第三方库的配置,提供了开箱即用的能力
- 提供一系列大型项目常用的非功能性特征,如嵌入服务器、安全性、度量、运行状况检查
SringBoot的原理
- 1:通过maven依赖的方式将比较繁琐的固定包依赖关系通过maven继承的方式全部依赖起来,只要引入一个依赖就可以了。
在IDEA中为了方便我们快速生成SpringBoot组件,在创建工程时可以选择Spring Initailizr,通过联网https://start.spring.io手动选配需要导入的依赖,系统自动生成一个符合要求的jar包。
@SpringBootApplication
public class Lesson02Application {
public static void main(String[] args) {
SpringApplication.run(Lesson02Application.class, args);
}
}
- 2:在Springboot中是没有web.xml的,采用配置application.yml的方式进行数据库和mybatis的配置,yml采用层次化结构,让我们的配置文件一目了然。
logging:
level:
root: info
spring:
datasource:
url: jdbc:mysql://localhost:3307/mabatisDB?characterEncoding=utf-8&useSSL=false
username: root
password: lovo
type: com.alibaba.druid.pool.DruidDataSource
jpa:
show-sql: true
- 3:SpringBoot完全采用注解化,并且在Spring3.0之后可以采用注解方式启动SpringMVC,Springboot中内置嵌入Http服务器,可以使用Java来创建tomcate,然后使用tomcate的类加载器加载,当遇到@EnableWebMVC这样的注解时将会去启动SpringMVC。整个过程也就是使用Java代码来启动SpringMVC。(tomcat为自动开启的配置,进入@SpringBootApplication注解)
Spring data JPA
在实现JPA规范的基础上封装的一套JPA应用框架。提供了一层抽象层,将各个ORM框架的操作用统一的方法封装起来。用极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能。
规范和简化Java对象的持久化开发工作,统一了Java应用程序访问ORM框架的规范
- 将DAO层继承JpaRepository<>,即可以使用JPA自带的save(),delete(),findAll()等方法。
- 如果使用自定义方法,只需要自定义findBy等方法,后面接上Bean的属性名,JPA会自动生成对应的SQL语句
SpringBoot中Bean的配置
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "t_student")
public class StudentBean {
}
与数据库建立连接自增长和手动增长
@Id
//数据库自增长
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pk_id")
private Long id;
@Id
//最大ID+1
@GenericGenerator(name = "hbincrement",strategy = "increment")
@GeneratedValue(generator = "hbincrement")
@Column(name = "pk_id")
private Long id;
@Id
//uu生成法
@GenericGenerator(name = "idGenerator",strategy = "uuid")
@GeneratedValue(generator = "idGenerator")
@Column(name = "pk_id")
private Long id;
数据库的一对一对应配置
- 外键主控方,detail_id为student表中的外键,cascade(级联),主表发生改变,外键表也会同时改变
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "detail_id")
private DetailBean detail;
- 外检表Bean的配置,mappedBy表示声明自己不是关系维护端,由对方来维护
@OneToOne(mappedBy = "detail")
private StudentBean student;
数据库的一对多对应配置
@OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE)
// @OneToMany(fetch = FetchType.EAGER,mappedBy = "classBean")
@JoinColumn(name = "class_id",referencedColumnName = "class_id")
private List<StudentBean> studentList;
@ManyToOne()
@JoinColumn(name = "class_id")
private ClassBean classBean;
数据库的多对多对应配置
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_course"
,joinColumns = @JoinColumn(name = "student_id")
,inverseJoinColumns = @JoinColumn(name = "course_id"))
private List<CourseBean> courseBeans = new ArrayList<>();
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_course"
,joinColumns = @JoinColumn(name = "course_id")
,inverseJoinColumns = @JoinColumn(name = "student_id"))
private List<StudentBean> studentBeans = new ArrayList();