欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot?整合Mybatis-Plus并輸出SQL日志示例詳解

 更新時(shí)間:2023年06月05日 10:35:12   作者:太空眼睛  
這篇文章主要介紹了SpringBoot整合Mybatis-Plus并輸出SQL日志,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本地開(kāi)發(fā)環(huán)境說(shuō)明

開(kāi)發(fā)依賴版本
Spring Boot3.0.6
Mybatis-Plus3.5.3.1
JDK20

application.yml主要配置

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>
    <!-- 根據(jù)需要修改數(shù)據(jù)庫(kù) -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
</dependencies>

@MapperScan注解使用說(shuō)明

@MapperScan注解的作用是用來(lái)指定Mapper接口的位置,示例如下

debug: true
logging:
  level:
    root: debug
spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:tcp://localhost/D:/ProgramFiles/h2database/data/test;MODE=MYSQL;
    username:
    password:
mybatis-plus:
  # 所有實(shí)體類(lèi)所在包路徑
  type-aliases-package: com.wen3.**.po
  # mapper.xmml文件路徑,多個(gè)使用逗號(hào)分隔
  mapper-locations: classpath*:resources/mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  • basePackages一定要指定Mapper接口的包路徑,啟動(dòng)的時(shí)候Mybatis-Plus會(huì)把這個(gè)包及子包下的所有接口當(dāng)做Mapper
  • 比如basePackages的值指定為com.wen3,則會(huì)把Service接口也當(dāng)做Mapper,在調(diào)用方法的時(shí)候就會(huì)報(bào)錯(cuò)org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

實(shí)體類(lèi)示例

package com.wen3.demo.mybatisplus.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
 * <p>
 * 
 * </p>
 *
 * @author tangheng
 * @since 2023-05-21
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("USER")
public class UserPo {
    /**
     * 用戶id
     */
    @TableId(value = "USER_ID", type = IdType.AUTO)
    private String userId;
    /**
     * 用戶姓名
     */
    @TableField("USER_NAME")
    private String userName;
    /**
     * 用戶性別
     */
    @TableField("USER_SEX")
    private String userSex;
    /**
     * 用戶郵箱
     */
    @TableField("USER_EMAIL")
    private String userEmail;
    /**
     * 用戶賬號(hào)
     */
    @TableField("USER_ACCOUNT")
    private String userAccount;
    /**
     * 用戶地址
     */
    @TableField("USER_ADDRESS")
    private String userAddress;
    /**
     * 用戶密碼
     */
    @TableField("USER_PASSWORD")
    private String userPassword;
    /**
     * 用戶城市
     */
    @TableField("USER_CITY")
    private String userCity;
    /**
     * 用戶狀態(tài)
     */
    @TableField("USER_STATUS")
    private Integer userStatus;
    /**
     * 用戶區(qū)縣
     */
    @TableField("USER_SEAT")
    private String userSeat;
}

Mapper接口示例

package com.wen3.demo.mybatisplus.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wen3.demo.mybatisplus.po.UserPo;
import java.util.Map;
public interface UserMapper extends BaseMapper<UserPo> {
}

Service接口示例

package com.wen3.demo.mybatisplus.service;
import com.wen3.demo.mybatisplus.po.UserPo;
import java.util.Map;
public interface UserService {
    UserPo getById(String userId);
}

Service接口實(shí)現(xiàn)類(lèi)示例

package com.wen3.demo.mybatisplus.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wen3.demo.mybatisplus.po.UserPo;
import com.wen3.demo.mybatisplus.dao.UserMapper;
import com.wen3.demo.mybatisplus.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserPo> implements UserService {
    @Override
    public UserPo getById(String userId) {
        LambdaQueryWrapper<UserPo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(UserPo::getUserId, userId);
        return baseMapper.selectOne(queryWrapper);
    }
}

單元測(cè)試示例

package com.wen3.demo.mybatisplus.service;
import com.wen3.demo.mybatisplus.MybatisPlusSpringbootTestBase;
import com.wen3.demo.mybatisplus.po.UserPo;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
class UserServiceTest extends MybatisPlusSpringbootTestBase {
    @Resource
    private UserService userService;
    @Test
    void getById() {
        String userId = "U11902a8436094248a45dd3821b07e82a1651108484889";
        UserPo testResult = userService.getById(userId);
        log.info("testResult: {}", testResult);
    }
}

打印SQL日志

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
加上這段配置后,SQL的日志確實(shí)是輸出了,在控制臺(tái)可以看到

在這里插入圖片描述

  • StdOutImpl源碼是使用System.out或System.err來(lái)打印SQL的
  • SpringBoot默認(rèn)使用logback日志組件,我們可以使用Mybatis-Plus提供的slf4j實(shí)現(xiàn)

使用slf4j打印SQL

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  • 重啟后日志沒(méi)打印出來(lái),連控制臺(tái)也沒(méi)有輸出SQL日志
  • 使用slf4j后,日志輸出級(jí)別就由SpringBoot接管了,SpringBoot默認(rèn)是INFO級(jí)別
  • 修改Mybatis-Plus下的日志為DEBUG,比如: logging.level.com.baomidou.mybatisplus=DEBUG
  • 重啟后就能看到日志了

總結(jié)

Mybatis-Plus完全兼容Mybatis,如果項(xiàng)目曾經(jīng)使用的是Mybatis,想要引入Mybatis-Plus,是完成可以的,僅僅是在數(shù)據(jù)源的處理上有稍微細(xì)節(jié)的處理,本人在處理MybatisMybatis-Plus方面具有豐富經(jīng)驗(yàn),如有需要,歡迎交流!

到此這篇關(guān)于SpringBoot 整合Mybatis-Plus并輸出SQL日志的文章就介紹到這了,更多相關(guān)SpringBoot 整合Mybatis-Plus內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文搞懂JMeter engine中HashTree的配置問(wèn)題

    一文搞懂JMeter engine中HashTree的配置問(wèn)題

    本文主要介紹了JMeter engine中HashTree的配置,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java Socket編程簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java Socket編程簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java Socket編程簡(jiǎn)介的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • java創(chuàng)建多級(jí)目錄文件的實(shí)例講解

    java創(chuàng)建多級(jí)目錄文件的實(shí)例講解

    下面小編就為大家分享一篇java創(chuàng)建多級(jí)目錄文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Spring Boot配置AOP打印日志的全過(guò)程

    Spring Boot配置AOP打印日志的全過(guò)程

    這篇文章主要給大家介紹了關(guān)于Spring Boot配置AOP打印日志的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 深入SQLite多線程的使用總結(jié)詳解

    深入SQLite多線程的使用總結(jié)詳解

    本篇文章是對(duì)SQLite多線程的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Spring Boot 多個(gè)定時(shí)器沖突問(wèn)題的解決方法

    Spring Boot 多個(gè)定時(shí)器沖突問(wèn)題的解決方法

    這篇文章主要介紹了Spring Boot 多個(gè)定時(shí)器沖突問(wèn)題的解決方法,實(shí)際開(kāi)發(fā)中定時(shí)器需要解決多個(gè)定時(shí)器同時(shí)并發(fā)的問(wèn)題,也要解決定時(shí)器之間的沖突問(wèn)題,本文通過(guò)問(wèn)題場(chǎng)景重現(xiàn)給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-05-05
  • 用Java將字符串的首字母轉(zhuǎn)換大小寫(xiě)

    用Java將字符串的首字母轉(zhuǎn)換大小寫(xiě)

    在項(xiàng)目開(kāi)發(fā)的時(shí)候會(huì)需要統(tǒng)一字符串的格式,比如首字母要求統(tǒng)一大寫(xiě)或小寫(xiě),那用Java如何實(shí)現(xiàn)這一功能?下面一起來(lái)學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • Java EasyExcel導(dǎo)出報(bào)內(nèi)存溢出的解決辦法

    Java EasyExcel導(dǎo)出報(bào)內(nèi)存溢出的解決辦法

    使用EasyExcel進(jìn)行大數(shù)據(jù)量導(dǎo)出時(shí)容易導(dǎo)致內(nèi)存溢出,特別是在導(dǎo)出百萬(wàn)級(jí)別的數(shù)據(jù)時(shí),你有遇到過(guò)這種情況嗎,以下是小編整理的解決該問(wèn)題的一些常見(jiàn)方法,需要的朋友可以參考下
    2024-10-10
  • mybatis類(lèi)型處理器JSR310標(biāo)準(zhǔn)詳解

    mybatis類(lèi)型處理器JSR310標(biāo)準(zhǔn)詳解

    這篇文章主要介紹了mybatis類(lèi)型處理器JSR310標(biāo)準(zhǔn)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • struts2實(shí)現(xiàn)多文件上傳

    struts2實(shí)現(xiàn)多文件上傳

    這篇文章主要為大家詳細(xì)介紹了struts2實(shí)現(xiàn)多文件上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論