• SpringBoot3集成PostgreSQL


    标签:PostgreSQL.Druid.Mybatis.Plus;

    一、简介

    PostgreSQL是一个功能强大的开源数据库系统,具有可靠性、稳定性、数据一致性等特点,且可以运行在所有主流操作系统上,包括Linux、Unix、Windows等。

    通过官方文档可以找到大量描述如何安装和使用PostgreSQL的信息。

    环境搭建,基于Centos7部署的PostgreSQL-14版本,官方文档中提供yum安装的方式,配置的话可以参考源码仓库中的其他版本「见文尾」,这里不赘述。

    # 1、RPM仓库
    sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
    # 2、安装PostgreSQL
    sudo yum install -y postgresql14-server
    
    # 3、初始化选项
    sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
    sudo systemctl enable postgresql-14
    sudo systemctl start postgresql-14
    
    # 4、查看版本
    psql --version
    psql (PostgreSQL) 14.11
    

    二、工程搭建

    1、工程结构

    2、依赖管理

    Druid连接池使用的是1.2.18版本;使用mybatis-plus组件的3.5.3.1版本;PostgreSQL本地环境是14.11版本,这里依赖包使用42.6.2版本;

    
    <dependency>
        <groupId>org.postgresqlgroupId>
        <artifactId>postgresqlartifactId>
        <version>${postgresql.version}version>
    dependency>
    
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druid-spring-boot-3-starterartifactId>
        <version>${druid-spring-boot.version}version>
    dependency>
    
    <dependency>
        <groupId>com.baomidougroupId>
        <artifactId>mybatis-plus-boot-starterartifactId>
        <version>${mybatis-plus.version}version>
    dependency>
    <dependency>
        <groupId>com.baomidougroupId>
        <artifactId>mybatis-plus-generatorartifactId>
        <version>${mybatis-plus.version}version>
    dependency>
    

    三、PostgreSQL配置

    1、数据库配置

    有关于Druid连接池的可配置参数还有很多,可以参考源码中的描述或者官方案例,此处只提供部分常见的参数配置;

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
          # 数据库
          url: jdbc:postgresql://127.0.0.1:5432/pg-data-14
          username: postgres
          password: postgres
          driver-class-name: org.postgresql.Driver
          # 连接池-初始化大小
          initial-size: 10
          # 连接池-最大连接数
          max-active: 100
          # 最大等待时间
          max-wait: 60000
          # 连接池-最小空闲数
          min-idle: 10
          # 检测空闲连接
          test-while-idle: true
          # 最小空闲时间
          min-evictable-idle-time-millis: 300000
    

    2、逆向工程类

    逆向工程新版本的API语法和之前有变化,但是整体的逻辑还是差不多。其它的SQL脚本和基础案例,以及相关单元测试不再赘述,参考源码仓库即可。

    public class GeneratorMybatisPlus {
    
        private static final String jdbcUrl = "数据库地址";
        private static final String outDir = "存放路径";
    
        public static void main(String[] args) {
            // 数据源配置
            DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder
                    (jdbcUrl,"postgres","postgres")
                    .build();
    
            // 代码生成器
            AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
    
            // 全局配置
            GlobalConfig globalConfig = new GlobalConfig.Builder()
                    .outputDir(outDir).disableOpenDir().author("知了一笑") // .enableSwagger()
                    .build();
    
            // 分包配置
            PackageConfig packageConfig = new PackageConfig.Builder()
                    .parent("com.boot.pgsql.generator").controller("controller")
                    .service("dao").serviceImpl("dao.impl").mapper("mapper").entity("entity")
                    .build();
    
            // 策略配置
            StrategyConfig strategyConfig = new StrategyConfig.Builder()
                    .addInclude("user_info","sys_user")
                    .addTablePrefix("")
                    .entityBuilder().enableLombok()
                    .naming(NamingStrategy.underline_to_camel)
                    .columnNaming(NamingStrategy.underline_to_camel)
                    .controllerBuilder().formatFileName("%sController")
                    .entityBuilder().formatFileName("%s")
                    .serviceBuilder().formatServiceFileName("%sDao").formatServiceImplFileName("%sDaoImpl")
                    .mapperBuilder().formatMapperFileName("%sMapper").formatXmlFileName("%sMapper")
                    .build();
    
            autoGenerator.global(globalConfig);
            autoGenerator.packageInfo(packageConfig);
            autoGenerator.strategy(strategyConfig);
    
            // 执行
            autoGenerator.execute();
        }
    }
    

    四、参考源码

    文档仓库:
    https://gitee.com/cicadasmile/butte-java-note
    
    源码仓库:
    https://gitee.com/cicadasmile/butte-spring-parent
    
    PostgreSQL配置参考:
    https://gitee.com/cicadasmile/butte-java-note/blob/master/doc/database/postgresql/P01、PostgreSQL环境搭建.md
    
    Mybatis三种逆向工程:
    https://gitee.com/cicadasmile/butte-java-note/blob/master/doc/frame/tool/T01、Mybatis三种逆向工程.md
    
  • 相关阅读:
    机器人制作开源方案 | 行星探测车概述
    [附源码]java毕业设计小型医院药品及门诊管理
    Android NDK篇-C++之 强制转换与智能指针
    PTA 甲级 1016 Phone Bills
    ubuntu普通用户加入管理员组
    git checkout不同分支时,为啥会把当前分支的修改内容也带到新分支里面?
    go里面的基本知识
    Linux环境下(CentOS操作系统)如何修改MySQL数据库及Redis的密码?
    b站小土堆pytorch学习记录—— P17 土堆说卷积操作
    Scrum敏捷模式的优势点、实践经验及适用企业
  • 原文地址:https://www.cnblogs.com/cicada-smile/p/18092442