91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

mybatis mapper互相引用resultMap啟動出錯怎么辦

發布時間:2021-08-28 13:26:03 來源:億速云 閱讀:315 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“mybatis mapper互相引用resultMap啟動出錯怎么辦”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“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找不到的問題。

解決方法

升級新版本,已經解決這個問題了

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

mybatis resultMap引發的吐血bug

簡單的講

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

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

以下是詳細的

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

如:

mybatis mapper互相引用resultMap啟動出錯怎么辦

Java中的pojo:

package pojo;
import java.io.Serializable;
import java.util.Date;
/**
 * 系統日志
 *
 * @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;//創建日期
    private String content;//日志內容
    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讀取數據時,發生不可理解的事情

mybatis mapper互相引用resultMap啟動出錯怎么辦

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>

程序一旦單元測試就會進入這樣的狀態,

mybatis mapper互相引用resultMap啟動出錯怎么辦

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

mybatis mapper互相引用resultMap啟動出錯怎么辦

mybatis mapper互相引用resultMap啟動出錯怎么辦

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

以上是“mybatis mapper互相引用resultMap啟動出錯怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

紫云| 从化市| 镇平县| 长沙县| 治县。| 东平县| 牡丹江市| 达拉特旗| 乐亭县| 济源市| 五寨县| 花莲市| 色达县| 饶阳县| 雷州市| 洛扎县| 桐城市| 大英县| 台东县| 海淀区| 黄山市| 福鼎市| 鱼台县| 灵石县| 呼伦贝尔市| 修水县| 温州市| 绩溪县| 乌拉特前旗| 资源县| 贵溪市| 通化市| 海晏县| 乡城县| 大埔县| 抚松县| 宜宾市| 五莲县| 乌什县| 黄梅县| 华阴市|