亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis mapper互相引用resultMap啟動出錯的解決

 更新時間:2021年08月25日 11:45:17   作者:隔壁的老司機  
這篇文章主要介紹了mybatis mapper互相引用resultMap啟動出錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis mapper互相引用resultMap啟動出錯

問題

Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for kulink.cvscloud.core.mapper.OrderSundryMapper.BaseResultMap
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:888) ~[mybatis-3.4.5.jar:3.4.5]
at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:640) ~[mybatis-3.4.5.jar:3.4.5]
at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:344) ~[mybatis-3.4.5.jar:3.4.5]

... 73 common frames omitted

原因

因為mybatis掃描加載的時候,是按順序加載的A-Z,因為mapperA中引用mapperB中的ResultMap

但是啟動加載的時候mapperB加載在mapperA之后,所以造成mapperB.ResultMap找不到的問題。

解決方法

升級新版本,已經(jīng)解決這個問題了

或者在引用mapper.xml中把resultMap直接復(fù)制過來

mybatis resultMap引發(fā)的吐血bug

簡單的講

問題背景:如果在寫mybatis中的resultMap時,不下心將resultMapde id寫成映射接口的名字,會發(fā)生什么?

結(jié)論:單元測試進度條卡住但不報錯, Tomcat運行不報錯,但是不加載項目

以下是詳細的

需求:從數(shù)據(jù)庫中加載之前插入log日志,打印在某一頁面上。

如:

在這里插入圖片描述

Java中的pojo:

package pojo;
import java.io.Serializable;
import java.util.Date;
/**
 * 系統(tǒng)日志
 *
 * @author Administrator
 */
public class Log implements Serializable {
    private static final long serialVersionUID = -7372303516713218870L;
    private int id;//
    private int userId;//
    private String userName;
    private Date createDate;//創(chuàng)建日期
    private String content;//日志內(nèi)容
    private String operation;//用戶所做的操作
    private String url;//用戶所做的操作
    public Log() {
    }
    public Log(int id, int userId, String userName, Date createDate, String content, String operation, String url) {
        this.id = id;
        this.userId = userId;
        this.userName = userName;
        this.createDate = createDate;
        this.content = content;
        this.operation = operation;
        this.url = url;
    }
    public static long getSerialVersionUID() {
        return serialVersionUID;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public Date getCreateDate() {
        return createDate;
    }
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getOperation() {
        return operation;
    }
    public void setOperation(String operation) {
        this.operation = operation;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    @Override
    public String toString() {
        return "Log{" +
                "id=" + id +
                ", userId=" + userId +
                ", userName='" + userName + '\'' +
                ", createDate=" + createDate +
                ", content='" + content + '\'' +
                ", operation='" + operation + '\'' +
                ", url='" + url + '\'' +
                '}';
    }
}

利用mybatis讀取數(shù)據(jù)時,發(fā)生不可理解的事情

在這里插入圖片描述

public List<Log> listAll();
    <resultMap id="LogMapper" type="Log">
        <id column="userid" property="userId"/>
        <result column="username" property="userName"/>
        <result column="content" property="content"/>
        <result column="operation" property="operation"/>
        <result column="createdate" property="createDate"/>
        <result column="url" property="url"/>
    </resultMap>
    <select id="listAll"   resultMap="LogMapper">
        SELECT * FROM t_log
    </select>

程序一旦單元測試就會進入這樣的狀態(tài),

在這里插入圖片描述

無限循環(huán),沒有結(jié)束。不僅這個方法,所有的測試方法都進入這種“阻塞”的狀態(tài),關(guān)鍵還沒有異常的提示(哭~)不僅如此,重啟tomcat會進入這樣

在這里插入圖片描述

一方面tomcat不再加載項目,同時釋放了幾個看起來像是bug的坑,其實這些都時正常的信息,沒有其他的東西!
期間重新導(dǎo)過jar包,刪除過tomcat,重新部署項目,但只有一添加上述代碼,就會崩潰。最后發(fā)現(xiàn),原來和接口名字重復(fù)了,重復(fù)了。。。。。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于JAVA8的 Stream學(xué)習(xí)

    關(guān)于JAVA8的 Stream學(xué)習(xí)

    這篇文章主要介紹了JAVA8 Stream學(xué)習(xí)方法的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • 基于SpringBoot實現(xiàn)驗證碼功能的代碼及思路

    基于SpringBoot實現(xiàn)驗證碼功能的代碼及思路

    SpringBoot技術(shù)是目前市面上從事JavaEE企業(yè)級開發(fā)過程中使用量最大的技術(shù),下面這篇文章主要給大家介紹了如何基于SpringBoot實現(xiàn)驗證碼功能的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • Spring Security實現(xiàn)驗證碼登錄功能

    Spring Security實現(xiàn)驗證碼登錄功能

    這篇文章主要介紹了Spring Security實現(xiàn)驗證碼登錄功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot整合MinIO實現(xiàn)文件存儲系統(tǒng)的代碼示例

    SpringBoot整合MinIO實現(xiàn)文件存儲系統(tǒng)的代碼示例

    在現(xiàn)代的應(yīng)用程序中,文件存儲和管理是一個常見的需求,MinIO是一個開源的對象存儲系統(tǒng),與Spring?Boot框架結(jié)合使用,可以快速構(gòu)建高性能的文件存儲系統(tǒng),本文將介紹如何使用Spring?Boot和MinIO來實現(xiàn)文件存儲系統(tǒng)
    2023-06-06
  • mybatis新增到數(shù)據(jù)庫后返回當前ID問題

    mybatis新增到數(shù)據(jù)庫后返回當前ID問題

    這篇文章主要介紹了mybatis新增到數(shù)據(jù)庫后返回當前ID問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • JavaTCP上傳文本文件代碼

    JavaTCP上傳文本文件代碼

    今天小編就為大家分享一篇關(guān)于JavaTCP上傳文本文件代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • java并發(fā)數(shù)據(jù)包Exchanger線程間的數(shù)據(jù)交換器

    java并發(fā)數(shù)據(jù)包Exchanger線程間的數(shù)據(jù)交換器

    這篇文章主要為大家介紹了java并發(fā)數(shù)據(jù)包使用數(shù)據(jù)交換器Exchanger來進行線程之間的數(shù)據(jù)交換。有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • SpringBoot整合SpringBoot-Admin實現(xiàn)監(jiān)控應(yīng)用功能

    SpringBoot整合SpringBoot-Admin實現(xiàn)監(jiān)控應(yīng)用功能

    本文主要介紹如何整合Spring Boot Admin,以此監(jiān)控Springboot應(yīng)用,文中有相關(guān)的示例代碼供大家參考,需要的朋友可以參考下
    2023-05-05
  • linux系統(tǒng)下java項目在后臺啟動的4種方式總結(jié)

    linux系統(tǒng)下java項目在后臺啟動的4種方式總結(jié)

    Linux是集多種功能于一身的操作系統(tǒng),它可以讓用戶查看和管理當下正在運行的進程,包括Java程序,這篇文章主要給大家總結(jié)介紹了關(guān)于linux系統(tǒng)下java項目在后臺啟動的4種方式,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)搜索功能代碼詳解

    Java實現(xiàn)搜索功能代碼詳解

    這篇文章主要介紹了Java實現(xiàn)搜索功能代碼詳解,實現(xiàn)思路小編給大家介紹的非常詳細,需要的朋友可以參考下
    2017-12-12

最新評論