`
thinkgem
  • 浏览: 585972 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

解决MyBatis的Mapper XML错误,系统起不来,也不报错问题

阅读更多

MyBatis有一个非常头疼的问题,就是当Mapper XML写法定义错误的时候,系统起不来,但也不报错,始终卡到如下信息位置:

 

信息: Initializing Spring root WebApplicationContext

 

问题分析思路就不叙述了,直接说解决方法吧:

 

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

 

try {
	return super.buildSqlSessionFactory();
} catch (NestedIOException e) {
	e.printStackTrace(); // XML 有错误时打印异常。
	throw new NestedIOException("Failed to parse mapping resource: '" + mapperLocation + "'", e);
} finally {
	ErrorContext.instance().reset();
}

  

然后修改 spring 配置文件 org.mybatis.spring.SqlSessionFactoryBean 替换为刚才新建的类。

 

这样,当MyBatis解析Mapper遇到错误的时候就能输出到控制台了。

分享到:
评论
1 楼 redeyes200x 2015-05-04  
您好 我最近使用jeesite时碰到个奇怪的问题 求大神帮助来了

由于最近用jeesite整合pg流程,代码结构和适配做了些微调,但业务逻辑没有变化.

我在整合过程中,通过"代码生成器(gen)"的"业务表添加"把test_data添加后,发现不能在"业务表列表"中针对表记录直接删除.看了下后台日志,发现
        ..\GenTableColumnDao.xml中的:
<update id="deleteByGenTableId">
UPDATE gen_table_column SET
del_flag = #{DEL_FLAG_DELETE}
WHERE gen_table_id = #{genTable.id}
</update>
这段sql在后台maper后执行时,传入了两个id参数,
并且他们的值都相同,而且等于genTable.id的取值.
也就是说DEL_FLAG_DELETE的真实取值没有被传入,而被传递成genTable.id.
由于del_flag的长度是char(1),从而造成字段超过长度,导致后台报错.

可是同样是该文件中的语句:
<update id="delete">
UPDATE gen_table_column SET
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
</update>
这段sql在后台maper后执行时,也传入了两个参数,
并且DEL_FLAG_DELETE可以传入正常的值1.

而这个delete和deleteByGenTableId又是在GenTableService.java中被同时触发的:
@Transactional(readOnly = false)
public void delete(GenTable genTable) {
genTableDao.delete(genTable);
genTableColumnDao.deleteByGenTableId(genTable.getId());
}

所以我就不知道这个问题出在哪里了.劳烦大神帮我看看这个问题应该怎么解决?



相关推荐

    mybatis-3-config/mapper.dtd 解决mybatis头文件报错

    解决mybatis头文件报错 下载好压缩包 解压将文件放到本地文件夹 例如 D盘的哪个文件夹 D:\mybatis\ ;然后打开eclipse -&gt;Window-&gt;prefenrence-&gt;XML-&gt;XML Catalog-&gt;User Specifiled Entreis-&gt;Add-&gt;Location(此处是你...

    详解mybatis-plus的 mapper.xml 路径配置的坑

    在使用Mybatis-Plus时,有时我们可能会遇到mapper.xml文件未被正确读取的问题,这通常是由于配置不正确导致的。本文将详细讲解mybatis-plus的mapper.xml路径配置的常见问题,并提供解决策略。 首先,我们需要理解...

    mybatis xml配置

    总结来说,MyBatis 的 XML 配置文件是系统运行的基础,它涵盖了从数据库连接、SQL 执行策略、数据类型处理到 SQL 映射的全面配置,使得开发者能够灵活地定制 MyBatis 的行为,满足不同项目的需求。正确理解和配置...

    mybatis约束

    在MyBatis中,配置文件起着至关重要的作用,它们定义了数据源、事务管理器、SqlSessionFactory以及Mapper接口的配置。这里我们将深入探讨"Mybatis约束"这个主题,主要涉及两个DTD文件:mybatis-3-config.dtd和...

    mybatis-3.2.7.jar和mybatis-3.5.1.jar

    `mybatis-generator-core-1.3.2.jar`是MyBatis Generator的组件,这是一个用于自动生成MyBatis映射器文件、模型类和Mapper XML文件的工具。用户只需要配置数据库连接信息和生成规则,就可以自动化生成大量的基础代码...

    MyBatis_plugin-3.21

    2. **快速生成Mapper和XML文件**:在创建新的Mapper接口时,插件可以自动生成对应的XML映射文件,同时在XML文件中生成基础的CRUD(Create, Read, Update, Delete)方法模板,大大提高了开发效率。 3. **动态SQL预览...

    Spring-Boot-Mybatis实例

    通过这个实例,开发者可以学习到如何在Spring Boot项目中配置Mybatis,编写Mapper接口,以及如何通过注解或XML文件定义SQL查询。这将有助于提升开发者在实际项目中使用Spring Boot和Mybatis的能力。

    springmybatis

    在User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。 运行这个测试程序,就可以看到结果了。 除非...

    mybatis返回Integer

    标题"mybatis返回Integer"指的是在MyBatis的映射文件或者Mapper接口中,使用Integer作为返回值类型时,相较于使用int,可能会避免一些潜在的问题。 首先,我们要理解Java中的基本类型int和引用类型Integer的区别。...

    Mybatis注解学习--xxxMapper is not known to the MapperRegistry

    这个错误通常表示MyBatis无法找到你定义的Mapper接口,这可能是配置问题或者是类扫描的问题。下面我们将深入探讨这个问题及其解决方法。 首先,`MapperRegistry`是MyBatis核心组件之一,它负责管理所有的Mapper接口...

    Free Mybatis plugin 2020.09.15版本

    4. **错误检查与修复**:实时检测并提示Mapper XML文件中的错误,帮助开发者及时发现并修复问题,避免在运行时出现意外的错误。 5. **注解支持**:对Mybatis注解的完全支持,使得在使用注解方式的Mybatis项目中,...

    使用mybatis-plus报错Invalid bound statement (not found)错误

    总的来说,`Invalid bound statement (not found)` 错误是Mybatis-Plus用户常遇到的问题,但大多数情况下,通过检查配置、依赖和代码逻辑,都能找到并解决这个问题。对于初学者来说,理解Mybatis-Plus的工作原理和...

    mybatis自动生成插件

    MyBatis 是一款深受广大Java开发者喜爱的持久层框架,它简化了数据库操作与Java对象之间的映射工作,使得开发者可以更加专注于业务逻辑的实现。...同时,理解并熟练掌握其配置,也是提升MyBatis使用技能的重要一步。

    Spring+SpringMVC+Mybatis整合demo

    SSM框架,即Spring、SpringMVC和Mybatis的组合,是Java开发中常见的Web应用框架。这个项目源码提供了一个完整的SSM整合实例,涵盖了与MySQL数据库的连接以及基本的增删改查操作。接下来,我们将深入探讨这三个组件的...

    springboot+mybatis+druid+jsp+bootstrap实现后台权限管理系统源码.zip

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    spring+Mybatis+ PageHelper实现分页

    6. **Mapper XML文件**:在对应的Mapper XML文件中,编写SQL查询语句。注意,不需要添加任何分页相关的代码,PageHelper会自动处理。 7. **Service层**:在Service层调用Mapper接口,传入分页参数。PageHelper会...

    spring和mybatis整合 jar包

    5. **编写Mapper XML文件**:为每个Mapper接口编写对应的XML文件,定义SQL语句和结果映射。 6. **事务管理**:Spring提供PlatformTransactionManager接口,可以通过实现该接口来配置事务管理。在配置文件中指定事务...

    使用Mybatis Generator自动生成Mybatis相关代码

    Mybatis Generator是一款强大的工具,它能够自动生成Mybatis的相关代码,包括Mapper接口、XML映射文件、实体类以及DAO层的实现代码,极大地提高了开发效率,减少了手动编写这些重复性工作的繁琐。本篇文章将深入探讨...

    mybatis-generator的eclipse插件

    生成的代码会出现在你在`generatorConfig.xml`中指定的目标位置,包括Mapper接口、XML映射文件以及实体类。 7. **使用生成的代码** 一旦代码生成,你就可以在Eclipse中直接导入并使用它们。这些代码可以帮助你...

    rapid_myBatis修改版.zip

    MyBatis是一个优秀的Java持久层框架,它简化了SQL与Java代码的交互,通过XML或注解来配置和映射原生信息,使得开发者可以避免几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis提供了动态SQL,使得数据库...

Global site tag (gtag.js) - Google Analytics