Skip to content

Commit bc2766b

Browse files
committed
Spring Boot 2.x基础教程:使用PostgreSQL
1 parent 28a71aa commit bc2766b

File tree

9 files changed

+190
-3
lines changed

9 files changed

+190
-3
lines changed

2.x/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
- [Spring Boot 2.x基础教程:使用MongoDB](http://blog.didispace.com/spring-boot-learning-24-6-1/)
7373
- [Spring Boot 2.x基础教程:使用LDAP来管理用户与组织数据](http://blog.didispace.com/spring-boot-learning-24-6-2/)
7474
- [Spring Boot 2.x基础教程:使用时序数据库InfluxDB](http://blog.didispace.com/spring-boot-learning-2-6-3/)
75+
- [Spring Boot 2.x基础教程:使用PostgreSQL](http://blog.didispace.com/spring-boot-learning-2-6-4/)
7576

7677
### Web开发
7778

2.x/README_zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
- [Spring Boot 2.x基础教程:使用MongoDB](http://blog.didispace.com/spring-boot-learning-24-6-1/)
7474
- [Spring Boot 2.x基础教程:使用LDAP来管理用户与组织数据](http://blog.didispace.com/spring-boot-learning-24-6-2/)
7575
- [Spring Boot 2.x基础教程:使用时序数据库InfluxDB](http://blog.didispace.com/spring-boot-learning-2-6-3/)
76-
76+
- [Spring Boot 2.x基础教程:使用PostgreSQL](http://blog.didispace.com/spring-boot-learning-2-6-4/)
7777

7878
### Web开发
7979

2.x/chapter6-4/pom.xml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.didispace</groupId>
7+
<artifactId>chapter6-4</artifactId>
8+
<version>1.0.0</version>
9+
<packaging>jar</packaging>
10+
<description>使用PostgreSQL数据库</description>
11+
12+
<parent>
13+
<groupId>org.springframework.boot</groupId>
14+
<artifactId>spring-boot-starter-parent</artifactId>
15+
<version>2.5.1</version>
16+
<relativePath/> <!-- lookup parent from repository -->
17+
</parent>
18+
19+
<properties>
20+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
21+
<java.version>1.8</java.version>
22+
</properties>
23+
24+
<dependencies>
25+
26+
<dependency>
27+
<groupId>org.springframework.boot</groupId>
28+
<artifactId>spring-boot-starter-web</artifactId>
29+
</dependency>
30+
31+
<dependency>
32+
<groupId>org.springframework.boot</groupId>
33+
<artifactId>spring-boot-starter-data-jpa</artifactId>
34+
</dependency>
35+
36+
<dependency>
37+
<groupId>org.postgresql</groupId>
38+
<artifactId>postgresql</artifactId>
39+
<scope>runtime</scope>
40+
</dependency>
41+
42+
<dependency>
43+
<groupId>org.projectlombok</groupId>
44+
<artifactId>lombok</artifactId>
45+
<scope>provided</scope>
46+
</dependency>
47+
48+
<dependency>
49+
<groupId>org.springframework.boot</groupId>
50+
<artifactId>spring-boot-starter-test</artifactId>
51+
<scope>test</scope>
52+
</dependency>
53+
54+
</dependencies>
55+
56+
<build>
57+
<plugins>
58+
<plugin>
59+
<groupId>org.springframework.boot</groupId>
60+
<artifactId>spring-boot-maven-plugin</artifactId>
61+
</plugin>
62+
</plugins>
63+
</build>
64+
65+
</project>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.didispace.chapter64;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.scheduling.annotation.EnableScheduling;
6+
7+
@SpringBootApplication
8+
public class Chapter64Application {
9+
10+
public static void main(String[] args) {
11+
SpringApplication.run(Chapter64Application.class, args);
12+
}
13+
14+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.didispace.chapter64;
2+
3+
import lombok.Data;
4+
import lombok.NoArgsConstructor;
5+
6+
import javax.persistence.Entity;
7+
import javax.persistence.GeneratedValue;
8+
import javax.persistence.Id;
9+
10+
@Entity
11+
@Data
12+
@NoArgsConstructor
13+
public class UserInfo {
14+
15+
@Id
16+
@GeneratedValue
17+
private Long id;
18+
19+
private String name;
20+
private Integer age;
21+
22+
public UserInfo(String name, Integer age) {
23+
this.name = name;
24+
this.age = age;
25+
}
26+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.didispace.chapter64;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
import org.springframework.data.jpa.repository.Query;
5+
import org.springframework.data.repository.query.Param;
6+
7+
/**
8+
* Created by 程序猿DD/翟永超 on 2021/10/08.
9+
* <p>
10+
* Blog: http://blog.didispace.com/
11+
* Github: https://github.com/dyc87112/
12+
*/
13+
public interface UserInfoRepository extends JpaRepository<UserInfo, Long> {
14+
15+
UserInfo findByName(String name);
16+
17+
UserInfo findByNameAndAge(String name, Integer age);
18+
19+
@Query("from UserInfo u where u.name=:name")
20+
UserInfo findUser(@Param("name") String name);
21+
22+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spring.datasource.url=jdbc:postgresql://localhost:5432/test
2+
spring.datasource.username=postgres
3+
spring.datasource.password=123456
4+
spring.datasource.driver-class-name=org.postgresql.Driver
5+
6+
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
7+
spring.jpa.properties.hibernate.hbm2ddl.auto=create
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.didispace.chapter64;
2+
3+
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.junit.jupiter.api.Assertions;
6+
import org.junit.jupiter.api.Test;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.test.context.SpringBootTest;
9+
10+
@Slf4j
11+
@SpringBootTest
12+
public class ApplicationTests {
13+
14+
@Autowired
15+
private UserInfoRepository userRepository;
16+
17+
@Test
18+
public void test() throws Exception {
19+
// 创建10条记录
20+
userRepository.save(new UserInfo("AAA", 10));
21+
userRepository.save(new UserInfo("BBB", 20));
22+
userRepository.save(new UserInfo("CCC", 30));
23+
userRepository.save(new UserInfo("DDD", 40));
24+
userRepository.save(new UserInfo("EEE", 50));
25+
userRepository.save(new UserInfo("FFF", 60));
26+
userRepository.save(new UserInfo("GGG", 70));
27+
userRepository.save(new UserInfo("HHH", 80));
28+
userRepository.save(new UserInfo("III", 90));
29+
userRepository.save(new UserInfo("JJJ", 100));
30+
31+
// 测试findAll, 查询所有记录
32+
Assertions.assertEquals(10, userRepository.findAll().size());
33+
34+
// 测试findByName, 查询姓名为FFF的User
35+
Assertions.assertEquals(60, userRepository.findByName("FFF").getAge().longValue());
36+
37+
// 测试findUser, 查询姓名为FFF的User
38+
Assertions.assertEquals(60, userRepository.findUser("FFF").getAge().longValue());
39+
40+
// 测试findByNameAndAge, 查询姓名为FFF并且年龄为60的User
41+
Assertions.assertEquals("FFF", userRepository.findByNameAndAge("FFF", 60).getName());
42+
43+
// 测试删除姓名为AAA的User
44+
userRepository.delete(userRepository.findByName("AAA"));
45+
46+
// 测试findAll, 查询所有记录, 验证上面的删除是否成功
47+
Assertions.assertEquals(9, userRepository.findAll().size());
48+
49+
}
50+
51+
}

2.x/pom.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,12 @@
6464
<module>chapter5-5</module> <!-- 使用Redis的发布订阅-->
6565
<!-- 5-6 Redis + EhCache的二连组合拳 -->
6666

67-
<!-- 非关系型的数据储存的使用 -->
67+
<!-- 其他常见数据储存的使用 -->
6868
<module>chapter6-1</module> <!-- 6-1 使用MongoDB -->
6969
<module>chapter6-2</module> <!-- 6-2 使用轻量级树状存储 LDAP -->
7070
<module>chapter6-3</module> <!-- 6-3 使用时序数据库 InfluxDB -->
71-
<!-- 6-4 使用Elasticsearch -->
71+
<module>chapter6-4</module> <!-- 6-4 使用PostgreSQL数据库 -->
72+
<!-- 6-5 使用Elasticsearch -->
7273

7374
<!-- 任务管理 -->
7475
<module>chapter7-1</module> <!-- 7-1 使用@Scheduled实现定时任务 -->

0 commit comments

Comments
 (0)