最近想学习一下SpringBoot,然后顺带的加了几个框架。
具体框架什么意思就不介绍了,百度即可。
打开IDEA,新建Gradle项目
选择jdk,点击下一步
这里解释一下什么是GroupId,ArtifactId,Version。
GroupId:这里一般对应的是项目的组织结构,比如com.test.*,一般两级
ArtifactId:对应的则是项目的名称
Version:则是版本
这三种规定都是为了能够在版本库中找到我们的项目,类似Maven仓库中依赖的定义。
选择本地Gradle,配置好JVM,点击确定,完成Gradle项目的创建。
创建如上包目录结构,这里注意 IDEA包颜色是有要求的 不同颜色的文件夹存放不同类型的资源。
Application.class主要是我们SpringBoot的启动类,里面包含一个main方法,直接Run就好,SpringBoot内置集成了Tomcat,但是这个文件最好放在最外层,因为在启动后,系统将默认扫描启动类同级目录和下级子目录内的文件,如果类不在,可能无法被Spring托管。
resources里面的application.yml主要定义了一些数据库连接信息,使用yml文件可以提高开发效率,名字不要起成其他的了,不然无法发挥作用。
下面我们从build.gradle中进行入手,在这里只是为了SpringBoot服务,不在于讲解build.gradle的配置,其实我也不太懂,具体配置
group 'com.gy.myacc'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'spring-boot'
apply plugin: "idea"
sourceCompatibility = 1.8
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies{
classpath ("org.springframework.boot:spring-boot-gradle-plugin:1.2.7.RELEASE")
}
}
jar{
baseName = 'mySpringBoot'
version = '0.0.1'
}
repositories {
maven{
url "http://maven.aliyun.com/nexus/content/groups/public"
}
}
ext['hibernate.version'] = '5.0.7.Final'
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("mysql:mysql-connector-java")
compile group: 'org.projectlombok', name: 'lombok', version: '1.16.18'
}
复制的时候不要把groupId和version也复制上去了,这里主要是导入jar包,值得一提的就是,ext那里,不加的话会发生Hibernate版本冲突,导致项目无法运行,这里采用了阿里云的MAVEN仓库,提高了一下下载速度。
下面开始配置连接,主要是在yml文件里面配置,很常用的配置,只是yml文件里面的语法需要注意一下,这一步,需要记得把上面的依赖先下载下来,之前我一个一个添加的时候,没有加载mysql的jar包,结果在配置数据源的时候一直报红,还有就是行之间的空格不要随便加
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/girl
username: root
password: 123456
jpa:
hibernate:
ddl-auto: create
show-sql: true
server:
port: 8081
接下来就是Application.class的配置了,同样很简单
@SpringBootApplication
public class Appliction {
public static void main(String args[]){
SpringApplication.run(Appliction.class,args);
}
}
右键,run就行了,这时候,SpringBoot就应该跑起来了,这里的坑就是之前说到的那个问题,它只会扫描同级目录和同级目录下的子目录,当然,如果你没有dao,service等其他层的话,自然不存在这些问题。
下面我们配置一下实体。
@Entity
@Data
public class Test {
@Id
@GeneratedValue
private Integer id;
private String test;
}
@Entity @ID @GeneratedValue 这里都是Hibernate里面的东西,标志它是实体,主键,以及主键的增长策略,而@Data,则是LomBox里面的注解,有了它,我们不必再写set,get方法,还有equlas,toString等一些方法,这个是在类上注解的,同时LomBox还有@Setter:注解在属性上;为属性提供 setting 方法,@Getter:注解在属性上;为属性提供 getting 方法, @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法,@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法,具体还有一些可以自行百度。
然后我们再次运行可以发现数据库中已经为我们自动建好了Test表及响应的字段。
然后新建ITestDao.interfence继承JpaRepository,泛型填写 Test,Integer,例如
注入接口,调用,使用Spring Data Jpa,可以很便捷的我们生成了大量的模板方法,我们只要调用就可以了,说到这,导入jar包的时候注意看清是spring-boot-starter-data-jpa,不要导入springdatajpa的依赖了
,还有在yml文件那里ddl-auto,有好几种策略,我们刚开始选的是Create,每次执行都会创建,我们还是换成Update吧,这样我们在数据库表格中的数据不会因为重新建表而丢失,下面,我们往数据库里面加几条数据,来测试一下吧。
发现加上@Data 数据无法查看出,先去掉,使用自动生成get set验证
成功查出,来看看这个Lombox和springBoot在一块使用为啥会产生那个问题