简单的讲:

问题背景:如果在写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 + '\'' +
'}';
}
}

利用mybatis读取数据时,发生不可理解的事情:

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中resultMap引发的吐血bug的更多相关文章

  1. mybatis中resultMap配置细则

    resultMap算是mybatis映射器中最复杂的一个节点了,能够配置的属性较多,我们在mybatis映射器配置细则这篇博客中已经简单介绍过resultMap的配置了,当时我们介绍了resultMa ...

  2. 在mybatis中resultMap与resultType的区别

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMapresultType是直接表示返回类型的,而resultMap则是对外部ResultMa ...

  3. Mybatis中resultMap与resultType区别

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultM ...

  4. Mybatis中resultMap的基础配置

    一.概述 resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果集中取出数据的 JDBC 代码的那个东西,而且在一些情形下允许你做一些 JDBC 不支持的 ...

  5. MyBatis 中 resultMap 详解

    resultMap 是 Mybatis 最强大的元素之一,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中.如在实际应用中,有一个表为(用户角色表),通过查询用户表信息展示页面, ...

  6. mybatis中resultMap的使用

    在mybatis中,使用<select>标签,必须要设置resultType属性 或 resultMap属性 否则会报错! resultType一般是返回简单类型的查询结果,涉及一张表 可 ...

  7. Mybatis中<resultMap>用法(主要用于一对多去重)

    一.创建部门表和员工表: 创建部门信息表`t_department`,其中包括`id`, `name` CREATE TABLE t_department (         id INT AUTO_ ...

  8. Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致

    解决实体类属性名和数据库字段不一致

  9. mybatis中的resultMap与resultType、parameterMap与 parameterType的区别

    Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...

随机推荐

  1. go7---map

    package main /* map 类似其它语言中的哈希表或者字典,以key-value形式存储数据 Key必须是支持==或!=比较运算的类型,不可以是函数.map或slice, 这3中类型都不能 ...

  2. spi和I2c的速率

    I2C协议v2.1规定了100K,400K和3.4M三种速率(bps).SPI是一种事实标准,由Motorola开发,并没有一个官方标准.已知的有的器件SPI已达到50Mbps.具体到产品中SPI的速 ...

  3. Mac os x下配置 Android ndk 开发环境

    1.阅读下面之前,请确保你android sdk的开发环境已经搭建好,ADT也最好是目前最新的. 2.到http://developer.android.com/tools/sdk/ndk/index ...

  4. 红米note手机连接mac系统

    到http://www.android.com/filetransfer/   下androidfiletransfer.dmg文件,安装好这个软件,然后再连接usb就可以用这个软件管理手机内存卡和s ...

  5. SPOJ BEADS 最小字符串表示

    SPOJ BEADS 给一个字符串(环) 问从哪个字符开始,字典序最小. 可以脑补到很多线性的解法,不过以下这个是最简单的,代码非常简单,就不解释了. #include<iostream> ...

  6. ibwebrtc-audio-processing-devel

    http://ftp.ussg.iu.edu/cygwin/x86_64/release/webrtc-audio-processing/libwebrtc-audio-processing-deve ...

  7. Eclipse导入Java 的jar包的方法

    打开eclipse1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择ja ...

  8. MySQL5.7 windows二进制安装

    200 ? "200px" : this.width)!important;} --> 介绍 1.下载解压 下载地址:http://dev.mysql.com/get/Dow ...

  9. HTML 5.1 -- 14项新增功能及如何使用

    最近太忙了 过完年来 连续的加班让我筋疲力尽,今天终于把东西交了,抽空来点干货吧! 1. 响应式图像 W3C 引入了一些功能特性,无需使用 CSS 就可以实现响应式图像.它们是 … srcset 图像 ...

  10. LOJ#120. 持久化序列(FHQ Treap)

    题面 传送门 题解 可持久化\(Treap\)搞一搞 //minamoto #include<bits/stdc++.h> #define R register #define inlin ...