版权声明:转载请写明出处 https://blog.csdn.net/huijiangu4621/article/details/84135407
本文章总结摘录的《Spring Cloud与Docker微服务架构实战》,如果觉得文章对您有所帮助想有所精进,请购买正版书籍深入研究
书中所使用的H2数据库的安装详见链接,流程十分清晰 H2数据库安装详解
首先点击链接查看自己的spring boot对应的spring cloud的版本 链接
引入pom依赖(本人使用的是Spring Boot 2.0.5.RELEASE于是选择的是Finchley.RELEASE)
<parent>
<groupId> org.springframework.boot </groupId>
<artifactId>
spring-boot-starter-parent </artifactId>
<version> 2.0.5.RELEASE </version>
</parent>
<properties>
<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
<java.version> 1.8 </java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
准备建表语句,创建user.sql
drop table user if exists;
create table user (id bigint generated by default as identity,
username varchar(40),
name varchar(20),
age int(3),
balance decimal(10,2),
primary key(id));
准备数据,创建data.sql
insert into user (id, username, name, age, balance) values(1,'account1','Etoak1',20,100.00);
insert into user (id, username, name, age, balance) values(2,'account2','Etoak2',28,180.00);
insert into user (id, username, name, age, balance) values(3,'account3','Etoak3',32,280.00);
创建用户实体类(这里使用了Lombok的@Data)
package com.etoak.crazy.entity.h2;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
@Entity
@Data
/*
* @Data相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor这些注解
* @ToString:用在类上,可以自动覆写toString方法
* @EqualsAndHashCode:用在类上,自动生成equals方法和hashCode方法
* @RequiredArgsConstructor:用在类上,自动生成无参构造和使用所有参数的构造函数
* */
public class User {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@Column
private String username;
@Column
private String name;
@Column
private Integer age;
@Column
private BigDecimal balance;
}
创建Dao
package com.etoak.crazy.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.etoak.crazy.entity.h2.User;
@Repository
public interface H2UserRepository extends JpaRepository<User,Long>{
}
创建Controller
package com.etoak.crazy.controller.h2;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.etoak.crazy.dao.H2UserRepository;
import com.etoak.crazy.entity.h2.User;
@RestController
public class H2UserController {
@Autowired
private H2UserRepository userRepository;
@GetMapping("/{id}")
public Optional<User> findById(@PathVariable Long id) {
Optional<User> findOne = this.userRepository.findById(id);
return findOne;
}
}
编写启动类
package com.etoak;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class App extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(App.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(App.class, args);
}
}
编写配置文件application.properties
server.port=8000
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
#指定数据源类型
spring.datasource.platform=h2
##指定h2数据库的建表脚本
spring.datasource.schema=classpath:user.sql
##指定h2数据库的数据脚本
spring.datasource.data=classpath:data.sql
#配置日志级别,让hibernate打印执行的SQL
logging.level.root=INFO
logging.level.org.hibernate=INFO
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE
启动启动类,访问http://localhost:8000/1测试