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】表,
可以看到,插入成功了。