Mybatis错误引起的程序启动卡死问题及解决

目录
  • Mybatis错误引起的程序启动卡死
    • 解决办法
    • 原因分析
  • Mybatis启动错误
    • 具体报错如下
    • 主要内容是说找不到接口,问题可能有两个

Mybatis错误引起的程序启动卡死

mybatis xml 错误引起的程序启动卡死(没有任何报错信息,控制台卡死)排除方法

解决办法

把日志级别提高到debug,查看日志是否有异常信息

新建一个类,继承 org.mybatis.spring.SqlSessionFactoryBean 类,重载 buildSqlSessionFactory 方法,捕获 NestedIOException 异常,并打印异常,如下:

public class MySqlSessionFactoryBean extends SqlSessionFactoryBean {
    protected SqlSessionFactory buildSqlSessionFactory() throws IOException {
        try {
            return super.buildSqlSessionFactory();
        } catch (NestedIOException e) {
            //- XML有错误时打印异常
            e.printStackTrace();
            throw new NestedIOException("Failed to parse mapping resource: " + e);
        }
    }
}

修改 mybatis 配置文件 把org.mybatis.spring.SqlSessionFactoryBean 替换为新建的类,再次启动可以在控制台输出mybatis异常信息。

原因分析

Spring解析mapper.xml文件时,执行SqlSessionFactoryBean.buildSqlSessionFactory()到断点时,抛出的异常被spring处理,但是没有输出日志信息,

Mybatis启动错误

今天在复习mybatis的基础的时候出现了错误信息,

具体报错如下

Exception in thread "main" org.apache.ibatis.binding.BindingException: Type interface com.hxb.mapper.AccountMapper is not known to the MapperRegistry.
    at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
    at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:745)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:292)
    at com.hxb.test.test1.main(test1.java:22)

主要内容是说找不到接口,问题可能有两个

1、没有将mapper文件注册到resource文件中。

<mappers>
   <mapper resource="com/hxb/mapper/AccountMapper.xml"/>
</mappers>

2、还有一种错误是mapper.xml文件中的namespace文件写错。

<mapper namespace="com/hxb/mapper/AccountMapper"> // 错误写法
<mapper namespace="com.hxb.mapper.AccountMapper"> //  正确写法

总结,不用写后缀的情况下用".",需要后缀的时候用/

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决MyBatis @param注解参数类型错误异常的问题

    问题现象 今天使用mybatis遇到个很奇怪的问题,我使用一个参数@param("threshold"),类型是java的double,但是很奇怪,一直告诉我参数转换错误,int不能转double,我就奇怪了,哪里来的int. 解决办法 我感觉可能使用用到了mybatis的关键字,所以就把threshold换了个名字,果然好了. 问题原因 某些关键词,mybatis会认为是某种类型,下面列出来一些,后面发现再补充. size, threshold, modCount是int类型 loa

  • Mybatis配置错误:java.lang.ExceptionInInitializerError

    情况一:配置文件,无法被导出或者生效 修改前: 修改后: 究其原因,这是由于Maven的约定大于配置,导致我们写的配置文件,无法被导出或者生效的问题,解决方案: 在pom.xml文件中配置导出非resources文件夹下的xml文件和properties,这样在编译运行后target文件夹下就能找到对应的配置文件了. <build> <resources> <resource> <directory>src/main/resources</direct

  • mybatis mapper互相引用resultMap启动出错的解决

    目录 mybatis mapper互相引用resultMap启动出错 问题 原因 解决方法 mybatis resultMap引发的吐血bug 简单的讲 以下是详细的 利用mybatis读取数据时,发生不可理解的事情 mybatis mapper互相引用resultMap启动出错 问题 Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for kulink.cv

  • Mybatis错误引起的程序启动卡死问题及解决

    目录 Mybatis错误引起的程序启动卡死 解决办法 原因分析 Mybatis启动错误 具体报错如下 主要内容是说找不到接口,问题可能有两个 Mybatis错误引起的程序启动卡死 mybatis xml 错误引起的程序启动卡死(没有任何报错信息,控制台卡死)排除方法 解决办法 把日志级别提高到debug,查看日志是否有异常信息 新建一个类,继承 org.mybatis.spring.SqlSessionFactoryBean 类,重载 buildSqlSessionFactory 方法,捕获 N

  • Android adb.exe程序启动不起来 具体解决方法

    经常遇到 Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be executed. 遇到问题描述: 运行android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error has occured.    [2012-07-18 16:18:26 - ]

  • 防木马随程序启动的一个方法

    我们知道,有些木马是通过修改exe的文件关联来实现随EXE程序启动的.今天我在网上看到有另外一个显为人知的方法,就是通过在注册表HKEY_LOCAL_MACHINE\SOFTWARE  \Microsoft\Windows NT\  CurrentVersion\Image File  Execution Options 下新建一个注册表项,项名为A.exe,然后在下面新建一个字符串,字符串名为Debugger,字符串值就是程序B.exe的全路径. 很明显,这个是针对系统可以设置每个程序指定的纠

  • JavaScript 程序错误Cannot use 'in' operator to search的解决方法

    今天编程时,JavaScript 程序报了这样的错误:Cannot use 'in' operator to search for...,具体错误信息如下: 坦白说,这样的错误最难调试.因为它并不指向你所写的具体代码,而是泛泛指向了 lib.js 文件(该文件通常是第三方的打包压缩库),你几乎无法依据错误类型与错误指向来定位到实际编程中的错误位置. 怎么办? 这个时候,只有发挥"死磕"精神了! 死磕步骤: 依据故障页面以及错误信息,定位到出错的文件,这一点应该不难: 在出错的页面中,依

  • 在ASP.NET 2.0中操作数据之五十八:在程序启动阶段缓存数据

    导言: 前面2章考察了在表现层和缓存层缓存数据.在第56章,我们探讨了在表现层设置ObjectDataSource的相关cache属性来缓存数据.在第57章,我们探讨了创建一个单独的分开的缓存层.这2章都是采用"应激装载"(reactive loading)的模式来缓存数据.该模式下,每次请求数据时,系统先检查其是否在内存,如果没有,则从数据源--比如数据库,来获取数据,然后将其存储在内存里.该模式的优势在于执行起来很容易:而缺点之一在于应"请求"(requests

  • Android程序启动时出现黑屏问题的解决方法

    本文实例讲述了Android程序启动时出现黑屏问题的解决方法.分享给大家供大家参考,具体如下: 关于黑屏: 默认的情况下,程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等. 去除方法: 1.在style里面添加一个style: <style name="ContentOverlay"parent="@android:style/Theme.Light"> <itemname

  • 详解SpringBoot程序启动时执行初始化代码

    因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis. 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码. 第一步:创建实现ApplicationListener接口的类 package com.stone; import com.stone.service.IPermissionService; import org.springframework.context.ApplicationListener; import

  • C#程序启动项的设置方法

    本文为大家分享了C#程序启动项的设置方法,供大家参考,具体内容如下 托盘图标设置 新建一个NotifyIcon,会在托盘处显示一个图标. NotifyIcon.Icon可以直接设置一个ico图片,也可以延用原有程序的图标. notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath); public partial class MainWindow : Window { privat

  • 快速解决jupyter启动卡死的问题

    问题描述 系统:Win10:之前安装过Cpython,现在依次使用pip install ipython与pip install jupyter安装了 Ipython 6.5.0与 jupyter 1.0.0.但是在PowerShell上使用命令jupyter notebook 运行jupyter时服务器始终卡顿,根本没法用. 解决方法 使用命令jupyter notebook --generate-config 可看到文件 jupyter_notebook_config.py位置 手动打开文件

随机推荐