SpringBoot整合PostgreSQL教程

主要描述如何优雅的整合postgresql。本文略去如何安装pgsql的过程,详情可参考其他文章。

文章目录

  • postgresql简介
  • 整合postgresql
  • 整合mybatis
  • 整合mybatis-plus

postgresql简介

与mysql一样也是开源的关系型数据库,同时还支持NoSql的文档型存储。在某些方面标榜比mysql表现更加出众,现在就让我们来了解下如何使用postgresql。

整合postgresql

  • 引入依赖
<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><version>3.0.4</version>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version>
</dependency>
  • 配置文件
spring:datasource:driver-class-name: org.postgresql.Driverusername: postgrespassword: rooturl: jdbc:postgresql://127.0.0.1:5432/postgres
  • 测试用例
    此处我们预先新建一个test表,查询该表的记录数,当前表中有一条记录。
@Slf4j
@SpringBootTest
class MypgApplicationTests {@AutowiredJdbcTemplate jdbcTemplate;@Testvoid contextLoads() {Long count = jdbcTemplate.queryForObject("select count(*) from test", Long.class);log.info("记录总数:{}",count);}}
  • 输出预期结果
记录总数:1

整合mybatis

以上我们直接使用jdbc进行数据操作,接下来我们使用mybatis进行改造。

  • 引入maven依赖
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>
  • 调整配置文件
mybatis:mapper-locations: classpath:mapper/*.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 
  • 新建domain/service/mapper/mapper.xml
@Data
public class Test {private Long id;
}
public interface TestMapper {Long queryForMybatis(Test testDO);}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vainycos.dao.TestMapper"><select id="queryForMybatis" parameterType="com.vainycos.domain.Test" resultType="java.lang.Long">select count(*) from test<where><if test="id != null and id != ''">and id = #{id}</if></where></select>
</mapper>
@Service
public class TestService {@Resourceprivate TestMapper testMapper;public Long queryForMybatis(Test testDO){return testMapper.queryForMybatis(testDO);}}
  • mapper文件路径指向
@MapperScan("com.vainycos.dao")
@SpringBootApplication
public class MypgApplication {public static void main(String[] args) {SpringApplication.run(MypgApplication.class, args);}}

整合mybatis-plus

  • 引入mybatis-plus的maven依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version>
</dependency>
  • 改造mapper接口
public interface TestMapper extends BaseMapper<Test> {Long queryForMybatis(Test testDO);}
  • service使用mybatis-plus写法实现
public Long queryForMybatisPlus(Test testDO){Integer resultCount = testMapper.selectCount(new LambdaQueryWrapper<Test>().eq(testDO.getId() != null, Test::getId, testDO.getId()));return resultCount.longValue();
}
  • controller测试
@GetMapping("/queryForMybatisPlus")
public Long queryForMybatisPlus(Test testDO){return testService.queryForMybatisPlus(testDO);
}

参考资料:

  • SpringBoot 整合 pgSQL
  • SpringBoot集成MyBatis-yml自动化配置原理详解
  • Spring Boot 整合 MyBatis-Plus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

费尔法克斯水务通过使用 Liquid UI 移动化和定制 SAP PM 来提高收入和数据完整性

背景 费尔法克斯水务是北弗吉尼亚州地区领先的水县。它是华盛顿特区大都会区的三大供水商之一。它每天为近171万居民提供2.<>亿加仑的水。它渴望坚持其愿景&#xff0c;即保持以客户为中心&#xff0c;同时帮助维持该地区的高质量生活和经济状况。 挑战 由于桌面系统&…

【Ceph的部署】

目录 一、基于 ceph-deploy 部署 Ceph 集群1、Ceph 生产环境推荐&#xff1a;2、Ceph 环境规划3、环境准备1、关闭 selinux 与防火墙2、根据规划设置主机名3、配置 hosts 解析4、安装常用软件和依赖包5、在 admin 管理节点配置 ssh 免密登录所有节点6、为每一个服务器配置时间同…

写给后端开发的『vue3』请求后端接口

本文分享一下在vue3前端项目中请求后端接口获取数据。比较简单&#xff0c;内容如下&#xff1a; 1、使用axios请求后端接口 首先npm install axios&#xff0c;添加axios依赖&#xff0c;就靠它来请求后端接口了&#xff0c;基本等同于使用jquery发ajax。 # src/main.js i…

每天一点Python——day58

#第五十八天 集合间的关系&#xff1a; 类似于数学中学到的集合一样&#xff0c;关系差不多&#xff0c;譬如相等&#xff0c;子集&#xff0c;交集 如图所示&#xff1a;#①两个集合是否相等&#xff1a;运用运算符【等号】或者运算符&#xff01;【不等号】进行判断 #例&…

【面试问题11】

1.Filter 和interceptor区别 filter是tomcat的规范,在请求前对request对象进行拦截,执行相关的过滤dofilter,例如url拦截请求静态文件,添加请求参数,权限检查,敏感字符检查等,请求后会再执行一次dofilter。区别,1. filter只tomcat规范,interceptor是spring规范。2.执行…

MySQL备份/恢复、索引、视图简述与练习

文章目录 MYSQL备份&#xff1a;物理备份&#xff1a;逻辑备份&#xff1a; 索引&#xff1a;原理&#xff1a;优缺点&#xff1a; 视图&#xff1a;什么是视图&#xff1a;作用&#xff1a;优点&#xff1a; 备份与恢复练习题&#xff1a;创库,建表&#xff1a;插入数据&#…

python系列教程210——嵌套lambda

朋友们&#xff0c;如需转载请标明出处&#xff1a;https://blog.csdn.net/jiangjunshow 声明&#xff1a;在人工智能技术教学期间&#xff0c;不少学生向我提一些python相关的问题&#xff0c;所以为了让同学们掌握更多扩展知识更好地理解AI技术&#xff0c;我让助理负责分享…

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

人工智能大语言模型微调技术&#xff1a;SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法 1.SFT 监督微调 1.1 SFT 监督微调基本概念 SFT&#xff08;Supervised Fine-Tuning&#xff09;监督微调是指在源数据集上预训练一个神经网络模型&#xff…

HTML5 Canvas API制作一个简单的猜字单机游戏

这篇文章主要介绍了借助HTML5 Canvas API制作一个简单的猜字单机游戏的实例分享,游戏中每局会自动生成一个字母,玩家按键盘来猜测该字母是哪一个,需要的朋友可以参考下 HTML代码 <!doctype html> <html lang"en"> <head> <met…

听GPT 讲K8s源代码--pkg(六)

pkg/kubelet/cm 目录是 Kubernetes 源代码中的一个目录&#xff0c;包含了 kubelet 组件中的 ConfigMap 相关代码。 在 Kubernetes 中&#xff0c;ConfigMap 是一种用于存储非机密数据的 API 对象类型&#xff0c;它可以用来存储配置信息、环境变量、命令行参数等等。 kubelet …

从脚手架搭建到部署访问路程梳理

1、vue-cli 起文件&#xff1a; 2、配置 webpack &#xff1a;打包配置等&#xff0c;env文件&#xff08; 处理线上和测试的ip&#xff09;&#xff0c; https://www.ibashu.cn/news/show_377892.html 3、样式&#xff1a;封装 style &#xff1a;组件&#xff08;element-u…

没有上司的舞会

题目 题目链接&#xff1a;285.没有上司的舞会 Ural 大学有 N 名职员&#xff0c;编号为 1∼N。 他们的关系就像一棵以校长为根的树&#xff0c;父节点就是子节点的直接上司。 每个职员有一个快乐指数&#xff0c;用整数 Hi 给出&#xff0c;其中 1≤i≤N。 现在要召开一场…

Effective Java笔记(16)要在公有类而非公有域中使用访问方法

有时候&#xff0c;可能需要编写一些退化类&#xff0c;它们没有什么作用&#xff0c;只是用来集中实例域 &#xff1a; class Point {public double x;public double y; }由于这种类的数据域是可以被直接访问的&#xff0c;这些类没有提供封装&#xff08; encapsulation &am…

探索 Scikit-learn:Python 机器学习初级篇

Scikit-learn 是 Python 中最著名的机器学习库之一&#xff0c;它提供了大量实用的机器学习算法以及相关的工具&#xff0c;可以方便我们进行数据挖掘和数据分析。在这篇文章中&#xff0c;我们将介绍 Scikit-learn 的基本使用&#xff0c;包括如何导入数据、预处理数据、选择和…

Twisted Circuit

题目描述 输入格式 The input consists of four lines, each line containing a single digit 0 or 1. 输出格式 Output a single digit, 0 or 1. 题意翻译 读入四个整数 00 或者 11&#xff0c;作为如图所示的电路图的输入。请输出按照电路图运算后的结果。 感谢PC_DOS …

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测 目录 时序预测 | MATLAB实现Hamilton滤波AR时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 预测在很大程度上取决于适合周期的模型和所采用的预测方法,就像它们依赖于过滤器提取的周期一样。标准 Hodrick-P…

Python教程(4)——Python开发工具PyCharm的下载与安装

PyCharm是一种专业的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发和维护。它提供了丰富的功能和工具&#xff0c;帮助开发人员更高效地编写、调试和测试Python代码。如果是一些大型Python项目强烈推荐用这个来开发。今天我们来介绍一下PyCha…

nginx系列第八篇:Ubuntu下验证nginx各请求处理阶段

Nginx处理请求的过程一共划分为11个阶段&#xff0c;按照执行顺序依次是 post-read、server-rewrite、find-config、rewrite、post-rewrite、preaccess、access、post-access、try-files、content 以及 log。 准备工作&#xff1a;host文件加入测试域名 sudo vi /etc/hosts 加入…

matlab: cell合并/拼接 数组/array/matrix 去重

1. cell合并/拼接 字符串、向量、矩阵、cell数组拼接 cell1{[1,1],[2,1,1]}; cell2{[2,2],[2,1,1,5]}; res[cell1,cell2];%列拼接 res[cell1;cell2];%行拼接2. 数组/array/matrix 去重 数组或矩阵中的去除重复元素 另参考 string比较 % 第一种方法 r_integer [1,3,2,2,2,…

C语言--程序环境和预处理

翻译环境 C语言的代码是文本信息&#xff0c;对于计算机来说无法直接理解&#xff0c;需要通过翻译环境进行翻译成二进制信息&#xff1b; 我们在写代码的时候&#xff0c;一般都会写在一个源文件中&#xff0c;这时候我们就使用我们的编译器(VS)将其转换为机器代码&#xff0…