简单的讲:

问题背景:如果在写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. Android编译详解之lunch命令 【转】

    本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载▼ 标签: it 分类: android内核剖析     Android的优势就在于其开源,手机和 ...

  2. 在linux上处理base64加密和解密

    http://snailwarrior.blog.51cto.com/680306/142472/ 2.从标准输入读取文件内容,base64编码并打印到标准输出 [root@localhost tes ...

  3. 【Poj1017】Packets

    http://poj.org/problem?id=1017 艰难啊 弄了很久咧 拍了几十万组,以后拍要多组数据 Solution 从大wangxiaofang 从大往小放,有空余的从大往小填 注意细 ...

  4. go语言---传值和传引用

    go语言---传值和传引用 https://blog.csdn.net/cyk2396/article/details/78893828 1.定义: b = a; b.modify(); 如果b的修改 ...

  5. python-----删除文件到回收站

    python删除文件一般使用os.remove,但这样删是直接删除文件,不删到回收站的,那么想删除文件到回收站怎么办? 这时,就需要使用shell模块了 from win32com.shell imp ...

  6. [Advance] How to debug a program (上)

    Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for “examine” ...

  7. 【145】◀▶ .NET Framework类库索引

    C#编程基础: A1 ………… 基础A2 ………… using 关键字A3 ………… as 关键字A4 ………… is 关键字A5 ………… switch 关键字A6 ………… return 语句关键 ...

  8. vue项目开发中踩过的坑

    一.路由 这两天移动端的同事在研究vue,跟我说看着我的项目做的,子路由访问的时候是空白的,我第一反应是,不会模块没加载进来吧,还是....此处省略一千字... 废话不多说上代码 路由代码 { pat ...

  9. 全面学习ORACLE Scheduler特性(8)Application抛出的Events

    4.2 Application抛出的Events 首先要说明,这里所说的Application是个代词,即可以表示ORACLE数据库之外的应用程序,也可以是ORACLE数据库中的PROCEDURE等对 ...

  10. 网站开发综合技术 一 JavaScript简介 二JavaScript语法

    第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是S ...