亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot整合MyBatis過程中可能遇到的問題有哪些

發布時間:2022-07-04 13:53:25 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“SpringBoot整合MyBatis過程中可能遇到的問題有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“SpringBoot整合MyBatis過程中可能遇到的問題有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

盡量不要用 jUnit 提供的單元測試

提一個要求盡量使用SpringBoot 提供的測試類進行測試,能夠自動掃描組件以及使用容器中的bean對象

還有如果有組件 中存在注入對象的話,那么必須在SpringBoot容器中取出 這個組件,進而使用注入的對象的功能!!!

今天有個錯誤,花了很長時間來解決,最后發現是一個很低級很基礎的錯誤!

這是mapper接口,使用@mapper 相當于將接口的代理對象注冊進入bean中,但是上下文中找不到(其實是正常)

因為 @Mapper 這個注解是 Mybatis 提供的,而 @Autowried 注解是 Spring 提供的,IDEA能理解 Spring 的上下文,但是卻和 Mybatis 關聯不上。而且我們可以根據 @Autowried 源碼看到,默認情況下,@Autowried 要求依賴對象必須存在,那么此時 IDEA 只能給個紅色警告了。

package com.bit.mapper;
import com.bit.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserMapper {
    User selectById(@Param("userid") Integer id);
}

這是與mapper接口對應的xml文件,同樣也沒有問題

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bit.mapper.UserMapper">
        <select id="selectById" resultType="com.bit.pojo.User">
            select * from users where id = #{userid}
        </select>
</mapper>

將java目錄下的xml文件加入resource資源中,在build 標簽中嵌套,同樣沒有問題

<resources>    
    <resource>        
        <directory>src/main/java</directory>        
        <includes>            
            <include>**/*.xml</include>        
        </includes>    
    </resource>
</resources>

然后我們寫service層,寫了一個UserService接口,有些了一個UserServiceImpl 接口的實現類

在這個實現類中,注入UserMapper 一直提示無法注入,我一直認為有問題(但是最后發現沒問題)

SpringBoot整合MyBatis過程中可能遇到的問題有哪些

把service實現類寫完了,也沒問題

package com.bit.service;
import com.bit.mapper.UserMapper;
import com.bit.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;
    @Override
    public User queryById(Integer id) {
        System.out.println("進入了service");
        return userMapper.selectById(id);
    }
}

然后我直接去測試了,我測試的呢?

實例化了UserService,new了一個對象,然后直接調用方法,看是否能夠調用UserMapper查詢到數據庫。然后就不斷的包 空指針異常的錯誤

@SpringBootTest
class BitApplicationTests {
    @Test
    void contextLoads() {
        UserService userService = new UserServiceImpl();
        userService.queryById(13);
        System.out.println(userService);
        System.out.println(userService.queryById(15));
        System.out.println(userService.queryById(13));
    }
}

SpringBoot整合MyBatis過程中可能遇到的問題有哪些

&emsp;&emsp;我一度以為是mapper接口沒有注入到UserServcie中,導致調用UserServcie的方法 就是調用 UserMapper的方法是空的,以為是Mapper接口的問題,各種搜索怎么解決,經過幾個小時之后,在他人的博客中找到了答案

&emsp;&emsp;我們的UserMapper 注入到了 UserServiceImpl ,我們不能直接使用 UserServcieIml, 如果在其他的類中進行使用其功能,必須將這個類注入到 當前類中,從容器中拿到這個UserService,才能正確的進行調用,不會發生空指針異常,我一直沒有發現,這是也該非常低級的錯誤。

正確做法: 先裝配到當前對象中,再從容器中拿到bean進行使用

@SpringBootTest
class BitApplicationTests {
    @Autowired
    private UserService userService;
    @Test
    void contextLoads() {
        System.out.println(userService.queryById(15));
        System.out.println(userService.queryById(13));
    }
}

讀到這里,這篇“SpringBoot整合MyBatis過程中可能遇到的問題有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁化县| 安义县| 古丈县| 福海县| 湘乡市| 阿图什市| 东乌| 博爱县| 万年县| 来安县| 米林县| 上思县| 和静县| 平果县| 庆城县| 五大连池市| 贵港市| 安岳县| 永德县| 米脂县| 叶城县| 威信县| 天水市| 米泉市| 丰顺县| 佛冈县| 虹口区| 颍上县| 高碑店市| 洞头县| 天长市| 交口县| 堆龙德庆县| 碌曲县| 江都市| 翼城县| 南雄市| 巍山| 社旗县| 卢龙县| 博罗县|