基于vscode创建SpringBoot项目,连接postgresql数据库 2 更简单

 1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客

2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客

3、基于vscode开发vue项目的详细步骤教程_水w的博客-CSDN博客

4、基于vscode开发vue项目的详细步骤教程 2 第三方图标库FontAwesome_水w的博客-CSDN博客

5、基于vscode创建SpringBoot项目,连接postgresql数据库_水w的博客-CSDN博客

本篇是在基于vscode创建SpringBoot项目,连接postgresql数据库_水w的博客-CSDN博客

的基础上,第一二节相同,从第三大节开始的。

目录

 一、创建一个SpringBoot工程:通过IDEA的SpringInitializr创建

二、安装并创建PostgreSQL数据库

1 安装下载PostgreSQL

2 创建数据库,建表,插入数据

三、更简单的SpringBoot连接postgresql数据库

1 在pom中添加依赖

2 修改application.properties

3 新建User类

4 新建UserMapper

5 新建UserController

6 测试

(1)测试get请求,查询所有用户

(2)测试post请求,插入用户


 一、创建一个SpringBoot工程:通过IDEA的SpringInitializr创建

左上角 File-New-Project-Spring Initializr,名称啥的自己设一下

Next->选择需要的依赖包,此处暂时是选择了Spring Web相关、mybatis相关以及postgresql相关包。

 

创建之后,项目建成之后目录结构是这样的:

这里会有一个叫xxxApplication的启动类,然后pom.xml里会有刚刚设置过的相关依赖包,不需要自己再引入,同时resources下会有一个application.properties,此时它是空的。

到这里一个SpringBoot项目就这么简单地创建好了,非常方便。

当然现在还是不能启动的,这个后面再说。

二、安装并创建PostgreSQL数据库

既然跟MySQL一样,同为关系型数据库,那么什么时候用MySQL,什么时候用PostgreSQL自然是我们需要去了解的。所以下面简单介绍一下,PostgreSQL相比于MySQL来说,都有哪些优势,如果你有这些需求,那么选择PostgreSQL就优于MySQL,反之则还是选择MySQL更佳:

  • 支持存储一些特殊的数据类型,比如:array、json、jsonb
  • 对地理信息的存储与处理有更好的支持,所以它可以成为一个空间数据库,更好的管理数据测量和几何拓扑分析
  • 可以快速构建REST API,通过PostgREST可以方便的为任何PostgreSQL数据库提供RESTful API的服务
  • 支持树状结构,可以更方便的处理具备此类特性的数据存储
  • 外部数据源支持,可以把MySQL、Oracle、CSV、Hadoop等当成自己数据库中的表来进行查询
  • 对索引的支持更强,PostgreSQL支持 B-树、哈希、R-树和 Gist 索引。而MySQL取决于存储引擎。MyISAM:BTREE,InnoDB:BTREE。
  • 事务隔离更好,MySQL 的事务隔离级别repeatable read并不能阻止常见的并发更新,得加锁才可以,但悲观锁会影响性能,手动实现乐观锁又复杂。而 PostgreSQL 的列里有隐藏的乐观锁 version 字段,默认的 repeatable read 级别就能保证并发更新的正确性,并且又有乐观锁的性能。
  • 时间精度更高,可以精确到秒以下
  • 字符支持更好,MySQL里需要utf8mb4才能显示emoji,PostgreSQL没这个坑
  • 存储方式支持更大的数据量,PostgreSQL主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。
  • 序列支持更好,MySQL不支持多个表从同一个序列中取id,而PostgreSQL可以
  • 增加列更简单,MySQL表增加列,基本上是重建表和索引,会花很长时间。PostgreSQL表增加列,只是在数据字典中增加表定义,不会重建表。

1 安装下载PostgreSQL

如果有需要,请跳转到Windows下载安装 PostgreSQL和PostGIS工具,并解决The pgAdmin 4 server could not be contacted:_postgis下载安装_水w的博客-CSDN博客

安装postgresql后,使用自带的pgAdmin 4 访问数据库。 

2 创建数据库,建表,插入数据

(1)在开始菜单中找到pgAdmin 4,打开pgAdmin,需要输入密码【之前安装时设置的密码】,

然后,创建一个新的数据库【test-demo】,其中test-demo是数据库名,在Tables处右键-create-table,在弹出来的框里填写表名然后增加column的name和datatype就可以了。

注意:PostgreSQL本身大小写不敏感,但是在这里【非常不推荐】使用大写字母。首先带有大写字母的表的新建和查询时表名都必须带双引号,不然会报【error】postgresql relation does not exist。

  • 可以SELECT * FROM "MyUser",但是不可以SELECT * FROM MyUser
  • 如果仅仅是这样也还是没有问题的,但是如果有大写字母,在后面使用Mybatis Generator生成DO类的时候会报错:Table configuration with catalog null, schema public, and table xxx did not resolve to any tables.就是因为有大写字母引起的。

在这里我新建了一张叫【my_user】的表,两列为username和password,数据类型都为text,并设置username为主键。

(2)这里我使用的是Navicat链接postgresql数据库,输入密码开始连接,

然后,点击“新建查询”,进入之后,输入代码,在【my_user】的表中插入了一条数据,

INSERT INTO "my_user"
VALUES('alice','123456')

 

以此类推,一共插入了2条数据。

三、更简单的SpringBoot连接postgresql数据库

前提:创建一个基础的Spring Boot项目

如有需要,请跳转至基于vscode创建SpringBoot项目,连接postgresql数据库_水w的博客-CSDN博客

1 在pom中添加依赖

在pom.xml中,引入访问PostgreSQL需要的两个重要依赖,

2 修改application.properties

在application.properties配置文件中,为PostgreSQL数据库配置数据源等信息。

#??Tomcat??
server.port=8088
spring.datasource.url=jdbc:postgresql://localhost:5432/test-demo
spring.datasource.username=postgres
spring.datasource.password=123456
spring.datasource.driver-class-name=org.postgresql.Driver

3 新建User类

在src/com.example.demotwo下新建entity文件夹,然后在entity文件夹下新建User.java,

快捷方式:摁住“alt”,鼠标右击,可以选择自动生成的方法,

与数据库中的表【my_user】的结构对应,

package com.example.demotwo.entity;

public class User {
    private String username;
    private String password;

    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

4 新建UserMapper

新建 com.example.demotwo.mapper.UserMapper文件,

package com.example.demotwo.mapper;

import com.example.demotwo.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;


@Mapper
public interface UserMapper {

    // 查询所有用户
    @Select("select * from my_user")
    public List<User> find();

    // 插入用户
    @Insert("insert into my_user values (#{username}, #{password})")
    public int save(User user);
}

5 新建UserController

新建 com.example.demotwo.mapper.UserController文件,

package com.example.demotwo.controller;

import com.example.demotwo.entity.User;
import com.example.demotwo.mapper.UserMapper;
import org.apache.ibatis.annotations.Insert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user")
    public List query(){
        List <User> list = userMapper.find();
        System.out.println(list);  // 快捷键:so
        return list;
    }

    @PostMapping("/user/insert")
    public String save(User user){
        int i = userMapper.save(user);
        if (i > 0) {
            return "插入成功";
        }else{
            return "插入失败";
        }
    }
}

6 测试

目前的目录结构,如下所示:

(1)测试get请求,查询所有用户

浏览器访问http://localhost:8087/,返回查询到的json格式的数据,说明成功了。

然后,同时,idea的终端也会返回我们从数据库中的【my_user】表中查到的所有数据记录。

(2)测试post请求,插入用户

此处,我使用的是ApiPost7,用来发送post请求。

打开 ApiPost7,然后发送post请求,

然后,此处我是用navicat连接的postgreSQL数据库,打开【my_user】表,

可以看到,插入成功了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值