SpringBoot中使用PostgreSQL数据库( 二 )


第三步:在配置文件中为PostgreSQL数据库配置数据源、以及JPA的必要配置 。
spring: datasource:url: jdbc:postgresql://localhost:5432/testusername: postgrespassword: 123456driver-class-name: org.postgresql.Driver jpa:properties:hibernate:dialect: org.hibernate.dialect.PostgreSQLDialecthbm2ddl:auto: create第四步:创建用户信息实体,映射user_info表(最后完成可在pgAdmin中查看)
@Entity@Data@NoArgsConstructorpublic class UserInfo {@Id@GeneratedValueprivate Long id;private String name;private Integer age;public UserInfo(String name, Integer age) {this.name = name;this.age = age;}}第五步:创建用户信息实体的增删改查
public interface UserInfoRepository extends JpaRepository<UserInfo, Long> {UserInfo findByName(String name);UserInfo findByNameAndAge(String name, Integer age);@Query("from UserInfo u where u.name=:name")UserInfo findUser(@Param("name") String name);}第六步:创建单元测试,尝试一下增删改查操作 。
@Slf4j@SpringBootTestpublic class ApplicationTests {@Autowiredprivate UserInfoRepository userRepository;@Testpublic void test() throws Exception {// 创建10条记录userRepository.save(new UserInfo("AAA", 10));userRepository.save(new UserInfo("BBB", 20));userRepository.save(new UserInfo("CCC", 30));userRepository.save(new UserInfo("DDD", 40));userRepository.save(new UserInfo("EEE", 50));userRepository.save(new UserInfo("FFF", 60));userRepository.save(new UserInfo("GGG", 70));userRepository.save(new UserInfo("HHH", 80));userRepository.save(new UserInfo("III", 90));userRepository.save(new UserInfo("JJJ", 100));// 测试findAll, 查询所有记录Assertions.assertEquals(10, userRepository.findAll().size());// 测试findByName, 查询姓名为FFF的UserAssertions.assertEquals(60, userRepository.findByName("FFF").getAge().longValue());// 测试findUser, 查询姓名为FFF的UserAssertions.assertEquals(60, userRepository.findUser("FFF").getAge().longValue());// 测试findByNameAndAge, 查询姓名为FFF并且年龄为60的UserAssertions.assertEquals("FFF", userRepository.findByNameAndAge("FFF", 60).getName());// 测试删除姓名为AAA的UseruserRepository.delete(userRepository.findByName("AAA"));// 测试findAll, 查询所有记录, 验证上面的删除是否成功Assertions.assertEquals(9, userRepository.findAll().size());}}把单元测试跑起来:

SpringBoot中使用PostgreSQL数据库

文章插图
 
一切顺利的话,因为这里用的是create策略,所以表还在,打开pgAdmin,可以看到user_info表自动创建出来了,里面的数据也可以查到,看看跟单元测试的逻辑是否符合 。
SpringBoot中使用PostgreSQL数据库

文章插图
 
思考一下如果您之前有读过本系列教程中关于MySQL的10多篇使用案例,再看这篇使用PostgreSQL的案例,是不是感觉差别非常小?其实真正变动的部分主要是两个地方:
  1. 数据库驱动的依赖
  2. 数据源的配置信息
而对于更为上层的数据操作,其实并没有太大的变化,尤其是当使用Spring Data JPA的时候,这就是抽象的魅力所在!你体会到了吗?

【SpringBoot中使用PostgreSQL数据库】


推荐阅读