当前位置: 首页 > news >正文

PostgreSQL 与MySQL 对比使用

一、前言

       博主的系统既有 用到MySQL 也有用到PostgreSQL ,之所以用到这两种数据库,主要是现在都是国产替代,虽然说这两款数据库也不是国产的,但是相对开源,oracle是不让用了。所以现在使用比较多的就是这两个关系型数据库PostgreSQL 与MySQL。那么什么情况下选择PostgreSQL ,什么情况下选择 MySQL呢。说句实话在这两种数据库选型时,我们的系统没做选型,就按照以前的服务使用了什么数据库,后面项目的演进就选择什么数据库。实在没办法,在公司不是我一个人说的算,哈哈哈。本节对比PostgreSQL 与MySQL 的使用区别

二、PostgreSQL 与MySQL 对比区别

两种数据库的定义

1 、MySQL

MySQL 声称自己是最流行的开源数据库,它属于最流行的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。LAMP 中的 M 指的就是 MySQL。构建在 LAMP 上的应用都会使用 MySQL。MySQL 最初是由 MySQL AB 开发的,然后在 2008 年以 10 亿美金的价格卖给了 Sun 公司,Sun 公司又在 2010 年被 Oracle 收购。Oracle 收购导致 MySQL 的出现两个版本:商业版和社区版。对于后者,由于 Oracle 控制了 MySQL 的开发,受到了广大使用者的批评。

2、 PostgreSQL

PostgreSQL 标榜自己是世界上最先进的开源数据库,属于关系型数据库管理系统 (ORDBMS), 是以加州大学计算机系开发的 POSTGRES,4.2 版本为基础的对象关系型数据库管理系统, 最初是 1985 年在加利福尼亚大学伯克利分校开发的,作为 Ingres 数据库的后继。PostgreSQL 是完全由社区驱动的开源项目。它提供了单个完整功能的版本,而不像 MySQL 那样提供了多个不同的社区版、商业版与企业版。PostgreSQL 基于自由的 BSD/MIT 许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。

比较

相对于 Postgres MySQL 更简单, 所以有着更高的流行度, 在技术资料,以及技术组件支持上,支持的也更完善一些, 但不意味着它并不是不能替代的, 于笔者而言, MYSQL 更像用于中小企业、个人的一款数据库工具, 因为会的人多, 文档资料比较完善,所以入手难度低。但这些并不意味着 MYSQL 是最好的。

MySQL 适用的场景

MySQL 适用于简单的应用场景,如电子商务、博客、网站等, 大中小型系统均可以使用 MySQL, 它最高支持千万级别到数亿级别的数据量, 但是在高性能要求的情况下, 比如较快的响应和较高的吞吐量的时候, MySQL 的性能稍微捉襟见肘, 另外,在查询条件比较复杂、业务吞吐量要求不高,响应时长无要求,的时候,可以选择 MySQL,

Postgres SQL适用的场景

总的来说, Postgre SQL 更适合复杂的数据结构、高级应用和大规模数据集, 当然如果数据规模比较小, 也可以选择 Postgres SQL, 无论是什么场景,如果你想用 Postgres SQL, 总可以找到对应的解决方法, 有且仅有, 在查询条件比较复杂,的时候不太适用, 因为根据我们实际线上的业务表现是 Postgre SQL 可能会选错索引。

PostgreSQL 相对于 MySQL 的优势

  • Postgre SQL 在性能上远远好于 MYSQL, 通过上面的压测数据即可体现,无论是在耗时,还是在整体吞吐量上,有显著优势。

  • Postgre SQL 在单行更新上有明显优势,尤其是启用了 HOT UPDATE 后, 性能比 MYSQL 高了一个数量级。

  • 在 SQL 的标准实现上要比 MySQL 完善,而且功能实现比较严谨,比较学院化;

  • Postgre SQL 主表采用堆表存放,MySQL 采用索引组织表,能够支持比 MySQL 更大的数据量。

  • Postgre SQL 的主备复制属于物理复制,相对于 MySQL 基于 binlog 的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。

  • MySQL 的事务隔离级别 repeatable read 并不能阻止常见的并发更新,得加锁才可以,但悲观锁会影响性能,手动实现乐观锁又复杂。而 Postgre SQL 的列里有隐藏的乐观锁 version 字段,默认的 repeatable read 级别就能保证并发更新的正确性,并且又有乐观锁的性能。

三、postgreSQL常用语法

一、查询基础

1、连接数据库

C:\PostgreSQL\9.5\bin\psql.exe -U postgres -d shop

2、检查数据库连接是否成功   

SELECT 1;

3、创建数据库   

CREATE DATABASE shop;

4、退出数据库口令   

\q

5、\d 数据库 ——得到所有表的名字

6、\d 表名 —— 得到表结构

7、创建表

CREATE TABLE <表名>

(<列名1> <数据类型> <该列所需约束>,

<列名2> <数据类型> <该列所需约束>,

<列名3> <数据类型> <该列所需约束>,

<列名4> <数据类型> <该列所需约束>,

...

<该表的约束1>, <该表的约束2>,……);

8、删除表      

DROP TABLE <表名>;

9、修改表-添加列

ALTER TABLE <表名> ADD COLUMN <列的定义>;

    注:Oracle和SQL Server中不用写COLUMN: ALTER TABLE <表名> ADD <列名> ;

    oracle还可以这样:ALTER TABLE <表名> ADD (<列名>,<列名>,<列名>... );

10、修改表-删除列

ALTER TABLE <表名> DROP COLUMN <列名>;

11、插入数据   

BEGIN TRANSACTION;

INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');

COMMIT;

注:在MySQL中运行时,BEGIN TRANSACTION改写成 START TRANSACTION;在Oracle和DB2中运行时,无需使用BEGIN TRANSACTION;

12、变更表名

ALTER TABLE Product RENAME TO Product;

13、查询语句

(1) 查询全部列

  Select  *  from  <表名>;

星号(*)代表全部列的意思。

(2) 查询指定列

SELECT <列名>,<列名>,…… FROM <表名>;

注:查询多列时,需要使用逗号进行分隔。查询结果中列的顺序和

SELECT 子句中的顺序相同

14、用AS为列设置别名

例:SELECT  product_id as id,

product_name as name,

purchase_price as price

FROM  product;

别名可用中文,但要用“”。

15、SELECT子句可以用常数

例:SELECT '商品' as string,'2019-12-12' as date,product_id,product_name from product;

注:此处用单引号‘’。

16、查询结果去重:distinct

例:select distinct product_type from product;

注:用distinct时null类型数据也会被作为一类数据;distinct也可以同时合并多列

17、WHERE子句添加查询筛选条件

例:select product_name,product_type from product where product_type='衣服';

18、注释的书写方式

1行注释:写在--后面

多行注释:写在/*  和  */之间

19、使用(+、-、*、/)运算符

例:select product_name,sale_price,sale_price * 2 as “sale_price_x2” from product;

20、使用比较运算符

(1) 含义

(2) 字符串类型的数据原则上按字典的顺序排序,不能与数字的大小顺序混淆,如’1-3‘<’2’

(3) 对null数据不能用比较运算符

用特定语句:is null /is not null

21、逻辑运算符

(1) NOT运算符:用来否定某一条件

例:select product_name ,sale_price from product where not sale_price >= 1000;

(2) AND运算符

其两侧条件需同步成立,相当于”并且“

例:select product_name,purchase_price from product where product_type = '厨 房用具' and sale_price >=3000;

(3) OR运算符

其两侧条件只需一个成立,相当于”或者“

例:select product_name,purchase_price from product where product_type = '厨房用具' or sale_price >=3000;

(4) 运用括号控制运算优先级

例:select product_name,product_type,regist_date from product where product_type = '办公用品' and (regist_date = '2009-09-11' or regist_date = '2009-09-20');

注:AND运算符优先于OR运算符,想要先执行OR语句可以用括号

二、聚合函数:多行汇集成一行

1、COUNT:计算表中的记录数(行数)

 例:select count(*) from product;

计算某列非空行:SELECT COUNT(purchase_price)  FROM Product;

2、SUM: 计算表中数值列中数据的合计值

例:select sum(sale_price) from product

3、AVG: 计算表中数值列中数据的平均值

例:select avg(sale_price) from product;

4、MAX: 求出表中任意列中数据的最大值

MIN: 求出表中任意列中数据的最小值

例:SELECT MAX(sale_price), MIN(purchase_price)  FROM Product;

5、使用聚合函数删除重复值

6、Group by子句

(1) 只能存在 常数、聚合函数group by子句中指定的列名

(2) group by子句中不能用别名

(3) Where 子句中不能用聚合函数

例:select product_type,count(*) from product group by product_type;

7、Haveing 子句 :取符合条件的组

8、Order by:排序

三、数据更新

1、Insert

2、Delete from 【表名】

3、Update

(1) 多列更新

① -- 使用逗号对列进行分隔排列

UPDATE Product

SET sale_price = sale_price * 10,

purchase_price = purchase_price / 2

WHERE product_type = '厨房用具';

② -- 将列用()括起来的清单形式

UPDATE Product

SET (sale_price, purchase_price) = (sale_price * 10, 

purchase_price / 2)

WHERE product_type = '厨房用具';

4、事务是需要在同一个处理单元中执行的一系列更新处理的集合。

(1) 语法:

① 事务开始语句

② DML语句1,DML语句2,......

③ 事务结束语句(commit或rollback)

(2) 开启事务语句:

① (SQLserver、postgreSQL)Begin transaction

② (MySQL) start transaction

(3) 提交事务--commit

(4) 取消处理--rollback

5、ACID特性:所有的DBMS都遵循四种特性

(1) 原子性atomicity

(2) 一致性consistency

(3) 隔离性isolation

(4) 持久性durability

四、复杂查询

1.创建视图 view:保存好的select语句

(1)语法:

CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……)

AS

<SELECT语句>

(2)法则:尽量避免在视图的基础上创建视图,会降低sql效率

(3)法则:定义视图时不能使用order by 语句

(4)法则:部分情况可以对视图进行更新,如既没有聚合也没有结合的select语句

①视图设定为只读,因此需要on insert do instead规则

例:CREATE OR REPLACE RULE insert_rule

AS ON INSERT

TO ProductJim DO INSTEAD

INSERT INTO Product VALUES (

new.product_id,

new.product_name,

new.product_type,

new.sale_price,

new.purchase_price,

new.regist_date);

2.删除视图:drop view 【表名】

3.删除关联视图:DROP VIEW ProductSum CASCADE;

4.关联子查询:在子查询中添加条件

五、函数

1.ABS绝对值:ABS(数值)

2.Mod求余:mod(被除数,除数)

3.Round四舍五入:round(对象数值,保留小数位数)

4.|| 拼接:字符串1||字符串2

5.Length字符串长度:length(字符串)

6.lower小写转换:lower(字符串)

7.upper大写转换:upper(字符串)

8.replace字符串的替换:replace(对象字符串,替换前字符串,替换后字符串)

9.Substring(对象字符串 from 截取的起始位置 for 截取的字符数)

10.Current_date当前日期

11.Current_time当前时间

12.Current_timestamp当前日期和时间

13.Extract(日期元素 from 日期)

14.cast类型转换:cast(转换前的值 as 想要转换的数据类型

15.Coalesce讲null值转换为其他值:coalesce(数值1,数值2,数值3......)

16.like字符串部分一致查询(%代表“0字符以上任意字符串”)

17.Like+指定字符串查询:

select * from samplelike where strcol like ‘abc__’;

查询”abc+任意三个字符”的字符串

18.Between范围查询

19.Is null ,is not null判断是否为null

20.in谓语--or 的简便用法

21.Exists

22.case表达式

语法:case when <求值表达式> then <表达式>

When <求值表达式> then <表达式>

When <求值表达式> then <表达式>

...

Else <>

          End

六、集合运算

1.Union表的加法

2.Union all包含重复行

3.Except记录的减法(Oracle中使用minus

4.Inner join内联结

5.Outer join外联结

6.Cross join 交叉联结

七、SQL高级处理

1.窗口函数

(1)语法:<窗口函数> OVER ([PARTITION BY <列清单>]  

ORDER BY <排序用列清单>)

PARTITION BY:能够设定排序的对象范围

ORDER BY:能够指定按照哪一列、何种顺序排序

(2)Rank函数:排序时,如存在相同位次的记录会跳过之后的位次(1,1,1,4)

(3)Dense_rank函数:排序时,如果存在相同位次,不会跳过(1,1,2,3)

(4)Row_number函数:赋予唯一连续位次

2.聚合函数作为窗口函数

(1)Sum函数:此处与纯聚合函数不一样,此处为累计

(2)Avg函数:计算移动平均

①Rows 2 preseding:(移动平均:截止到之前2行)

②Rows 2 following :(移动平均:截止到之后2行)

3.Grouping运算符

(1)Rollup同时得出合算和小计

(2)Grouping让null更加容易分辨

(3)Cube用数据搭积木

(4)Grouping sets取得期望的积木

(5)   可以从rollup或者cube的结果中取出部分记录

八、应用程序连接数据库

驱动:可以从网上下载(PostgreSQL JDBC Driver :https://jdbc.postgresql.org/download.html)

(1)ODBC:open database connectivity

(2)JDBC:java database connectivity

(3)C:\PostgreSQL\java\jdk\bin\java -cp D:\soft\PostgreSQL\jdbc\*;. DBConnect1

相关文章:

PostgreSQL 与MySQL 对比使用

一、前言 博主的系统既有 用到MySQL 也有用到PostgreSQL &#xff0c;之所以用到这两种数据库&#xff0c;主要是现在都是国产替代&#xff0c;虽然说这两款数据库也不是国产的&#xff0c;但是相对开源&#xff0c;oracle是不让用了。所以现在使用比较多的就是这两个关系型数据…...

配置nginx代理访问openai接口

环境&#xff1a; 阿里云硅谷地区服务器&#xff0c;ubuntu22 操作步骤 1.安装nginx apt install nginx2.编辑文件/etc/nginx/sites-enabled/default&#xff0c;内容替换如下 server {listen 80;location / {proxy_pass https://api.openai.com;proxy_set_header Host api.…...

使用Python语言实现一个基于动态数组的序列队列

一、动态数组的实现 首先&#xff0c;我们需要创建一个DynamicArray类&#xff0c;该类将管理我们的动态数组。 动态数组能够动态地调整其大小&#xff0c;以容纳更多的元素。 目录 一、动态数组的实现 代码示例&#xff1a; 二、序列队列的实现 接下来&#xff0c;我…...

面试数据库篇(mysql)- 07索引创建原则与失效及优化

索引创建原则 1). 针对于数据量较大,且查询比较频繁的表建立索引。 2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。 3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。 4). 如果是字符…...

《互联网的世界》第三讲-tcp

dns 找到了地址&#xff0c;spf 确定了路径&#xff0c;如何运输数据呢&#xff1f;今天讲 tcp。 计算机网络领域的特定技术是最后当你干这个事时才要用的&#xff0c;我对孩子们这样说&#xff0c;实际上你可以随便看一个快递单子来理解端到端传输协议。 源地址&#xff0c…...

JOSEF约瑟 JZS-7G-42 AC220V静态可调延时中间继电器 端子式导轨安装15ms-10s

系列型号&#xff1a;JZS-7G-57端子排延时中间继电器&#xff1b;JZS-7G-42X端子排延时中间继电器&#xff1b;JZS-7G-22X端子排延时中间继电器&#xff1b;JZS-7G-21端子排延时中间继电器&#xff1b;JZS-7G-41端子排延时中间继电器&#xff1b;JZS-7G-51端子排延时中间继电器…...

Hudi配置参数优化

1&#xff09;Commits&#xff1a;表示一批记录原子性的写入到一张表中。 2&#xff09;Cleans:清除表中不再需要的旧版本文件。 3&#xff09;Delta_commit:增量提交指的是将一批记录原子地写入MergeOnRead类型表&#xff0c;其中一些/所有数据都可以写入增量日志。 4&…...

适用Java SpringBoot项目的分布式锁

在分布式系统中&#xff0c;常用到分布式锁&#xff0c;它有多中实现方式&#xff0c;如&#xff1a;基于redis&#xff0c;database&#xff0c;zookeeper等。Spring integration组件有这三种服务的分布式锁实现&#xff0c;今天来看看用的比较多的redis和database实现方式。 …...

面试笔记系列二之java基础+集合知识点整理及常见面试题

目录 Java面向对象有哪些特征&#xff0c;如何应用 Java基本数据类型及所占字节 Java中重写和重载有哪些区别 jdk1.8的新特性有哪些 内部类 1. 成员内部类&#xff08;Member Inner Class&#xff09;&#xff1a; 2. 静态内部类&#xff08;Static Nested Class&#…...

搭建LNMP环境并搭建论坛和博客

目录 一、LNMP架构原理 二、编译安装Nginx 三、编译安装MySQL 四、编译安装PHP 五、配置Nginx支持PHP解析 六、安装论坛 七、安装博客 一、LNMP架构原理 LNMP架构&#xff0c;是指在Linux平台下&#xff0c;由运行Nginx的web服务器&#xff0c;运行PHP的动态页面解析程序…...

蓝桥杯刷题2

1. 修建灌木 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();for (int i 1;i < n1;i){int distance Math.max(i-1,n-i);System.out.println(distance*2);}scan.close…...

低代码与国产化部署:软件开发的未来趋势与应用实践

在数字化时代&#xff0c;软件开发已经成为企业创新和竞争力提升的关键。随着我国科技实力的不断提升&#xff0c;国产化部署逐渐成为软件开发领域的重要趋势。与此同时&#xff0c;低代码技术的发展也为国产化部署提供了新的机遇。本文将探讨如何在软件开发过程中充分发挥两者…...

【Python笔记-设计模式】迭代器模式

一、说明 迭代器模式是一种行为设计模式&#xff0c;让你能在不暴露集合底层表现形式&#xff08;列表、栈和树等&#xff09;的情况下遍历集合中所有的元素。 (一) 解决问题 遍历聚合对象中的元素&#xff0c;而不需要暴露该对象的内部表示 (二) 使用场景 需要对聚合对象…...

Linux基本指令(上)

在Linux中&#xff0c;将文件夹称为目录&#xff0c;后面的内容都与目录相关。 1. ls指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项 …...

浅谈XSS简单漏洞xss-labs-master(初级)

一、环境以及xss漏洞简介 网上很多gethub自己下就行 XSS简介&#xff1a; 当用户访问被XSS注入的网页&#xff0c;XSS代码就会被提取出来。用户浏览器就会解析这段XSS代码&#xff0c;也就是说用户被攻击了。 用户最简单的动作就是使用浏览器上网&#xff0c;并且浏览器中有J…...

WordPress分类目录ID怎么看?如何查找WordPress标签ID?

在WordPress网站中&#xff0c;我们需要判断某篇文章是否属于某个分类目录&#xff0c;或者是否拥有某个标签&#xff0c;那么就需要用到分类目录ID和标签ID&#xff0c;那么WordPress分类目录ID怎么看&#xff1f;如何查找WordPress标签ID&#xff1f;下面boke112百科就跟大家…...

达梦数据库基础操作(一):用户操作

达梦数据库基础操作(一)&#xff1a;用户操作 1 达梦运行状态 SELECT banner as 版本信息 FROM v$version;1.2 达梦版本号 SELECT banner as 版本信息 FROM v$version;1.3 用户相关操作 默认用户名密码&#xff1a;SYSDBA/SYSDBA 注意&#xff1a;在哪个数据库下创建的用户…...

Java进阶(锁)——锁的升级,synchronized与lock锁区别

目录 引出Java中锁升级synchronized与lock锁区别 缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java进阶&#xff08;锁&#xff09;——锁的升级&#xff0c;synchronized与lock锁区别 Java中锁升级 看一段代码&#xff1a; public class…...

Flask+Gunicorn中文乱码解决方案

在使用FlaskGunicorn部署应用时&#xff0c;发现中文的输出存在乱码的现象。这是因为Python的默认编码是ASCII&#xff0c;而ASCII并不支持中文字符。 解决Python中文乱码问题的首要任务是确保使用合适的编码方式。当你处理中文字符时&#xff0c;应该使用UTF-8编码。UTF-8是一…...

vue3的开发小技巧

「总之岁月漫长&#xff0c;然而值得等待。」 目录 父组件调用子组件函数 父组件调用子组件函数 ref, defineExpose //父组件 代码 <child ref"ch">this.$refs.ch.fn();//子组件 函数抛出 const fn () > { }; defineExpose({ fn });...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...