您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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時,不下心將resultMapde id寫成映射接口的名字,會發生什么?
結論:單元測試進度條卡住但不報錯, Tomcat運行不報錯,但是不加載項目
需求:從數據庫中加載之前插入log日志,打印在某一頁面上。
如:
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 + '\'' + '}'; } }
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>
程序一旦單元測試就會進入這樣的狀態,
無限循環,沒有結束。不僅這個方法,所有的測試方法都進入這種“阻塞”的狀態,關鍵還沒有異常的提示(哭~)不僅如此,重啟tomcat會進入這樣
一方面tomcat不再加載項目,同時釋放了幾個看起來像是bug的坑,其實這些都時正常的信息,沒有其他的東西!
期間重新導過jar包,刪除過tomcat,重新部署項目,但只有一添加上述代碼,就會崩潰。最后發現,原來和接口名字重復了,重復了。。。。。
以上是“mybatis mapper互相引用resultMap啟動出錯怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。