SpringBoot + Druid + MyBatis Plus 整合配置详解

2025-12-12 0 547

SpringBoot + Druid + MyBatis Plus 整合配置详解

1. 依赖配置

首先,在 pom.xml 中添加所需依赖:


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>


<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>


<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.16</version>
</dependency>


<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>


<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2. 数据源配置 (application.yml)

application.yml 中配置数据库连接和Druid连接池:

spring:
  datasource:
    # Druid 连接池配置
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 数据库连接信息
      url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
      username: root
      password: 123456
      driver-class-name: com.mysql.cj.jdbc.Driver
      
      # 初始化大小、最小、最大连接数
      initial-size: 5
      min-idle: 5
      max-active: 20
      
      # 配置获取连接等待超时的时间
      max-wait: 60000
      
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      
      # 用来检测连接是否有效的sql,要求是一个查询语句
      validation-query: SELECT 1
      
      # 建议配置为true,不影响性能,并且保证安全性
      test-while-idle: true
      
      # 申请连接时执行validationQuery检测连接是否有效
      test-on-borrow: false
      
      # 归还连接时执行validationQuery检测连接是否有效
      test-on-return: false
      
      # 打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      
      # 配置监控统计拦截的filters
      filters: stat,wall,log4j2
      
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      
      # 监控配置
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin
        # 允许重置统计数据
        reset-enable: true
        # IP白名单
        allow: 127.0.0.1
        # IP黑名单
        deny: 192.168.1.100
      
      # WebStatFilter配置
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: \"*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*\"

# MyBatis Plus 配置
mybatis-plus:
  # 指定Mapper XML文件位置
  mapper-locations: classpath*:mapper/**/*.xml
  # 指定实体类包路径
  type-aliases-package: com.example.entity
  # 配置驼峰命名规则
  configuration:
    map-underscore-to-camel-case: true
    # 打印SQL日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 全局配置
  global-config:
    db-config:
      # 主键策略
      id-type: AUTO
      # 逻辑删除配置
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

3. 主启动类配置

在主启动类上添加 @MapperScan 注解,扫描Mapper接口:

package com.example;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(\"com.example.mapper\") // 扫描Mapper接口所在包
public class SpringbootDruidMybatisPlusApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDruidMybatisPlusApplication.class, args);
    }

}

4. Druid 配置类(可选)

如果需要更复杂的Druid配置,可以创建一个配置类:

package com.example.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.sql.SQLException;

@Configuration
public class DruidConfig {

    @Bean
    @ConfigurationProperties(prefix = \"spring.datasource.druid\")
    public DataSource druidDataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();
        // 可以在这里进行额外的配置
        return druidDataSource;
    }
}

5. MyBatis Plus 配置类(可选)

如需自定义MyBatis Plus的配置,可以创建配置类:

package com.example.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {

    /**
     * 配置分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

6. 实体类示例

使用MyBatis Plus的注解配置实体类:

package com.example.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@TableName(\"user\") // 指定表名
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = \"id\", type = IdType.AUTO) // 主键配置
    private Long id;

    @TableField(\"username\") // 指定字段名
    private String username;

    @TableField(\"password\")
    private String password;

    @TableField(\"email\")
    private String email;

    @TableField(value = \"create_time\", fill = FieldFill.INSERT) // 自动填充
    private LocalDateTime createTime;

    @TableField(value = \"update_time\", fill = FieldFill.INSERT_UPDATE) // 自动填充
    private LocalDateTime updateTime;

    @TableField(\"deleted\")
    @TableLogic // 逻辑删除
    private Integer deleted;
}

7. Mapper 接口示例

创建继承BaseMapper的Mapper接口:

package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper extends BaseMapper {
    // 可以添加自定义的SQL方法
}

8. Service 层示例

使用MyBatis Plus的IService接口:

package com.example.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.entity.User;

public interface UserService extends IService {
    // 可以添加自定义的业务方法
}

Service实现类:

package com.example.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {
    // 实现自定义的业务方法
}

9. 访问Druid监控页面

配置完成后,可以通过以下地址访问Druid监控页面:

  • URL: http://localhost:8080/druid/login.html
  • 用户名/密码: admin/admin(根据application.yml中的配置)

10. 常见问题及解决方案

  1. 监控页面无法访问

    • 检查 stat-view-servlet.enabled 是否设置为 true
    • 检查Spring Security是否拦截了Druid相关URL
  2. 数据库连接失败

    • 检查数据库地址、用户名、密码是否正确
    • 确认数据库服务是否正常运行
  3. MyBatis Plus无法扫描到Mapper接口

    • 检查 @MapperScan 注解的包路径是否正确
    • 确保Mapper接口添加了 @Repository 注解
  4. 自动填充功能不生效

    • 需要实现 MetaObjectHandler 接口并注册为Bean

通过以上配置,您可以成功在SpringBoot项目中整合Druid连接池和MyBatis Plus,享受连接池管理和ORM框架带来的便利。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 SpringBoot + Druid + MyBatis Plus 整合配置详解 https://www.zuozi.net/35694.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务