SpringBoot?+?Druid?+?MyBatis?Plus整合配置實現(xiàn)
1. 依賴配置
首先,在 pom.xml 中添加所需依賴:
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Plus Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- Druid 連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
<!-- 數(shù)據(jù)庫驅(qū)動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Lombok 簡化開發(fā) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2. 數(shù)據(jù)源配置 (application.yml)
在 application.yml 中配置數(shù)據(jù)庫連接和Druid連接池:
spring:
datasource:
# Druid 連接池配置
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 數(shù)據(jù)庫連接信息
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
# 初始化大小、最小、最大連接數(shù)
initial-size: 5
min-idle: 5
max-active: 20
# 配置獲取連接等待超時的時間
max-wait: 60000
# 配置間隔多久才進行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
min-evictable-idle-time-millis: 300000
# 用來檢測連接是否有效的sql,要求是一個查詢語句
validation-query: SELECT 1
# 建議配置為true,不影響性能,并且保證安全性
test-while-idle: true
# 申請連接時執(zhí)行validationQuery檢測連接是否有效
test-on-borrow: false
# 歸還連接時執(zhí)行validationQuery檢測連接是否有效
test-on-return: false
# 打開PSCache,并且指定每個連接上PSCache的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置監(jiān)控統(tǒng)計攔截的filters
filters: stat,wall,log4j2
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多個DruidDataSource的監(jiān)控數(shù)據(jù)
use-global-data-source-stat: true
# 監(jiān)控配置
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: admin
login-password: admin
# 允許重置統(tǒng)計數(shù)據(jù)
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
# 配置駝峰命名規(guī)則
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 配置類(可選)
如果需要更復(fù)雜的Druid配置,可以創(chuàng)建一個配置類:
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的配置,可以創(chuàng)建配置類:
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 接口示例
創(chuàng)建繼承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<User> {
// 可以添加自定義的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<User> {
// 可以添加自定義的業(yè)務(wù)方法
}
Service實現(xiàn)類:
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<UserMapper, User> implements UserService {
// 實現(xiàn)自定義的業(yè)務(wù)方法
}
9. 訪問Druid監(jiān)控頁面
配置完成后,可以通過以下地址訪問Druid監(jiān)控頁面:
- URL:
http://localhost:8080/druid/login.html - 用戶名/密碼: admin/admin(根據(jù)application.yml中的配置)
10. 常見問題及解決方案
監(jiān)控頁面無法訪問
- 檢查
stat-view-servlet.enabled是否設(shè)置為true - 檢查Spring Security是否攔截了Druid相關(guān)URL
- 檢查
數(shù)據(jù)庫連接失敗
- 檢查數(shù)據(jù)庫地址、用戶名、密碼是否正確
- 確認數(shù)據(jù)庫服務(wù)是否正常運行
MyBatis Plus無法掃描到Mapper接口
- 檢查
@MapperScan注解的包路徑是否正確 - 確保Mapper接口添加了
@Repository注解
- 檢查
自動填充功能不生效
- 需要實現(xiàn)
MetaObjectHandler接口并注冊為Bean
- 需要實現(xiàn)
通過以上配置,您可以成功在SpringBoot項目中整合Druid連接池和MyBatis Plus,享受連接池管理和ORM框架帶來的便利。
到此這篇關(guān)于SpringBoot + Druid + MyBatis Plus整合配置實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Druid MyBatisPlus配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot實現(xiàn)自定義條件注解的代碼示例
在Spring Boot中,條件注解是一種非常強大的工具,它可以根據(jù)特定的條件來選擇是否加載某個類或某個Bean,文將介紹如何在Spring Boot中實現(xiàn)自定義條件注解,并提供一個示例代碼,需要的朋友可以參考下2023-06-06
Java零基礎(chǔ)教程之Windows下安裝 JDK的方法圖解
這篇文章主要介紹了Java零基礎(chǔ)教程之Windows下安裝 JDK的方法圖解,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理
這篇文章主要介紹了Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理,包括類與方法以及多態(tài)等支持面向?qū)ο笳Z言中的重要特點,需要的朋友可以參考下2016-01-01
Java中try-catch-finally執(zhí)行順序你知道嗎
本文主要介紹了try-catch-finally執(zhí)行順序你知道嗎,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
如何在Maven項目中運行JUnit5測試用例實現(xiàn)
這篇文章主要介紹了如何在Maven項目中運行JUnit5測試用例實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
零基礎(chǔ)入門學(xué)習(xí)——Spring Boot注解(一)
這篇文章主要介紹了Spring Boot注解學(xué)習(xí)(一)要點,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-05-05
關(guān)于logback.xml和logback-spring.xml的區(qū)別及說明
這篇文章主要介紹了關(guān)于logback.xml和logback-spring.xml的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

