详解MybatisPlus集成nacos导致druid连接不上数据库

我很高兴为您提供“详解MybatisPlus集成nacos导致druid连接不上数据库”的完整攻略。

  1. 问题描述
    MybatisPlus集成nacos后,我们发现druid连接池无法连接数据库了,导致应用程序无法启动。这是由于Druid数据源在生成时需要使用一些配置参数,例如驱动类名、连接字符串、用户名/密码等,而这些参数在nacos配置中心中没有被正确指定。

  2. 解决方案
    为了解决这个问题,我们需要在nacos配置中心中指定正确的配置参数。下面是解决方案的具体步骤:

步骤1:创建nacos数据源配置文件
我们需要创建一个dataId为“db.properties”,group为“DEFAULT_GROUP”的配置文件,并填写连接相关的配置信息。例如:

#连接池初始化大小、最小、最大值
druid.initialSize=1
druid.minIdle=1
druid.maxActive=20
#连接超时时间
druid.maxWait=60000
# 配置获取连接等待超时的时间
druid.timeBetweenEvictionRunsMillis=60000
# 连接保持活跃的最小时间
druid.minEvictableIdleTimeMillis=300000
# 配置检测连接是否有效
druid.testWhileIdle=true
druid.testOnBorrow=false
druid.testOnReturn=false
# 是否缓存preparedStatement,也就是PSCache
druid.poolPreparedStatements=true
# 预处理语句缓存大小,最大为 2048
druid.maxPoolPreparedStatementPerConnectionSize=20

# 配置 Druid 数据源的监控信息
# 开启监控统计功能
druid.stat=true
# 统计 SQL 执行的最大时间,单位为毫秒
druid.stat.sql.MaxTimeMillis=2000
# SQL 执行日志记录
druid.filter.stat.logSlowSql=true
druid.filter.stat.slowSqlMillis=1000

# 配置 MySQL 连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

步骤2:在MybatisPlus中指定nacos配置中心的地址,并读取db.properties配置文件
我们需要在MybatisPlus的配置文件(通常是application.yml文件)中指定nacos配置中心的地址,并读取之前创建的db.properties配置文件。例如:

mybatis-plus:
  # mapper文件所在路径
  mapper-locations: classpath:/mybatis/mapper/**/*.xml
  # 实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.example.demo.dto
  global-config:
    # 全局查询参数默认值
    db-config:
      logic-delete-value: 0
      logic-not-delete-value: 1
    # 超过10000条sql自动开启分页
    sql-injector: com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
    # 公共字段自动填充
    meta-object-handler: com.example.demo.handler.MyMetaObjectHandler

spring:
  main:
    #spring boot应用的name
    web-application-type: servlet
    # 指定nacos的地址
    cloud:
      nacos:
        config:
          server-addr: localhost:8848
  application:
    # 命名空间
    name: demo
  datasource:
    # druid数据源配置
    druid:
      name: DruidDataSource
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://192.168.1.20:3306/nacos?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
      username: root
      password: root
      # 读取nacos配置中心上的db配置文件
      async-init: true
      filter:
        #druid监控器,用于统计监控信息
        stat:
          logSlowSql: true
        #防御SQL注入,避免黑客攻击
        wall:
          enabled: true
          dbType: mysql
          config:
            multiStatementAllow: true
            # 允许一次执行多条SQL语句
            noneBaseStatementAllow: true
            # 允许非基础SQL语句的访问,如SQLServer的sp_executesql语句
            deleteAllow: false
            updateAllow: false
            selectAllow: false
            truncateAllow: false
  1. 示例说明
    假设我们有一个Spring Boot项目,项目名称为“demo”,我们想要将Druid连接池集成到MybatisPlus中,并将数据库连接信息保存在nacos配置中心中。

示例1:创建nacos配置文件
我们在nacos配置中心中创建一个dataId为“db.properties”,group为“DEFAULT_GROUP”的配置文件,内容如下:

# 配置 MySQL 连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#连接池配置
druid.initialSize=1
druid.minIdle=1
druid.maxActive=20

示例2:在MybatisPlus中引入nacos配置中心
我们在MybatisPlus的配置文件(通常是application.yml文件)中指定nacos配置中心的地址,并读取之前创建的db.properties配置文件,代码如下:

spring:
  application:
    name: demo
  cloud:
    nacos:
      config:
        server-addr: localhost:8848

mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 0
      logic-not-delete-value: 1
  sql-injector: com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
  meta-object-handler: com.example.demo.handler.MyMetaObjectHandler
  configuration:
    map-underscore-to-camel-case: false

  datasource:
    druid:
      name: com.alibaba.druid.pool.DruidDataSource
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: ${spring.datasource.driver-class-name}
      url: ${spring.datasource.url}
      username: ${spring.datasource.username}
      password: ${spring.datasource.password}
      async-init: true
      filter:
        stat:
          logSlowSql: true
        wall:
          enabled: true
          dbType: mysql

在这种配置下,我们可以实现MybatisPlus与Druid的集成,并将配置信息保存在nacos配置中心中。

希望本文对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MybatisPlus集成nacos导致druid连接不上数据库 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 使用maven方式创建springboot项目的方式

    使用Maven方式创建Spring Boot项目是一种非常常见的方式,本文将详细介绍如何使用Maven创建Spring Boot项目,并提供两个示例。 步骤 以下是使用Maven创建Spring Boot项目的步骤: 安装Maven 首先,我们需要安装Maven。可以从Maven官网下载Maven,并按照官方文档进行安装。 创建Maven项目 使用Maven…

    Java 2023年5月15日
    00
  • spring boot实现超轻量级网关的方法(反向代理、转发)

    下面我将为您详细讲解“springboot实现超轻量级网关的方法(反向代理、转发)”的完整攻略,并且会提供两条示例。 一、什么是网关 网关,即API Gateway,是Web应用程序的入口,起到了路由、反向代理、安全、监管等多种职能。它作为整个系统的统一入口,通过对请求的识别、路由分发、请求转发等方式,协助后端实现服务的合理提供。 二、网关的优点 可以做一些…

    Java 2023年5月15日
    00
  • spring mvc4中相关注解的详细讲解教程

    以下是关于“Spring MVC4中相关注解的详细讲解教程”的完整攻略,其中包含两个示例。 1. 前言 Spring MVC是一种常用的Java Web开发框架,它提供了一种灵活的方式来开发Web应用程序。本攻略将详细讲解Spring MVC4中相关注解的使用方法。 2. 相关注解 2.1 @Controller @Controller注解用于标识一个类是S…

    Java 2023年5月16日
    00
  • java日期格式化YYYY-MM-dd遇坑指南小结

    针对“java日期格式化YYYY-MM-dd遇坑指南小结”,以下是完整攻略的详细讲解: 1. 问题背景 在Java中处理日期时间是比较常见的需求,其中日期格式化是一个很重要的知识点,而在格式化日期时,有时会遇到一些坑,特别是在使用大写YYYY格式化年份时,容易引起格式化错误,接下来我们就来分析一下其原因及解决方案。 2. 原因分析 YYYY是一个比较常用的日…

    Java 2023年5月20日
    00
  • java中@requestMappling注解的使用

    Java中@RequestMapping注解的使用 在Java中,@RequestMapping注解是一个非常常用的注解,它用于将HTTP请求映射到控制器的处理方法上。在本文中,我们将详细讲解@RequestMapping注解的使用,并提供两个示例来说明如何使用这个注解。 基本用法 @RequestMapping注解可以用于类级别和方法级别。在类级别上使用@…

    Java 2023年5月18日
    00
  • 什么是脚本的简单解释

    脚本,是指由计算机程序员编写的一种轻量级的程序,通常以文本的形式存在,能被计算机识别并执行。脚本可以用于各种应用场景,比如自动化处理数据、网站交互动画和游戏等等。 脚本按照不同的编程语言分类,比较有代表性的包括JavaScript、Python、PHP、Ruby等等。 对于开发者来说,脚本的优势主要在于快速开发和代码的易维护性。由于脚本缺乏编译过程,代码开发…

    Java 2023年6月15日
    00
  • Java读取.properties配置文件的几种方式

    Java读取.properties配置文件的几种方式 1. 使用Properties类来读取配置文件 通过使用Java中自带的Properties类,可以很方便地读取配置文件中的属性值。以下是基本的读取流程: import java.io.FileInputStream; import java.io.FileWriter; import java.io.I…

    Java 2023年5月20日
    00
  • Typescript是必须要学习吗?如何学习TS全栈开发

    Typescript是一种开源的编程语言,由微软开发和维护。它是Javascript的超集,意味着它支持Javascript中的所有功能。尽管Typescript在开发本质上与Javascript相同,但它提供了一些额外的功能,主要是类型系统和面向对象编程的概念,这些功能使得开发更加轻松和规范化。 Typescript的优点: 更快的开发:可以通过类型检查避…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部