解决mybatis映射结果集失效的问题

  • 更新时间:2023-01-16 09:39:06
  • 编辑:巴水风

在开发中可能会遇到这样的问题,使用mybatis进行结果集与实体类之间的关系映射时,可能会出现某些属性映射不上去的情况.

为了方便排查问题我们需要查看mybatis访问数据库SQL信息。

可以在配置Log4J:

log4j.logger.com.xxx.dao=TRACE
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql=debug
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout

注意:log4j.logger.com.xxx.dao=TRACE,一定要加上,加上这句话就可以打印出你访问数据库返回的结果集,可以更加方便的找到问题的所在。这句话的中的com.xxx.dao代表的是mapperw文件的namespace。

解决方案一:

查看映射结果集的配置文件:

如果像上述的配置文件会出现问题,因为在property后面的字符串出现了空格,在这种情况下,mybatis是无法映射的,它会认为id空格 != id。于是返回默认的对应的规则,当实体类中的属性与表中的字段完全相同则可以默认对应,当出现_时无法对应,这时,就会产生有的字段可以映射有的字段不可以映射的情况。所以我们必须检查是否出现空格。

修改配置文件如下:

解决方案二:

直接为结果集取别名,将返回的结果集全部取别名,跟实体类的属性保持一致,这样就能完整的映射。

补充知识:关于mybatis mapper.xml中 sql使用 in 执行失败的原因

mapper.xml传参如果下

user_obj_id in ( #{ids})

最终执行的sql拼接如下

user_obj_id in ( ‘55,56,57' )

而不是期望的

user_obj_id in ( ‘55',‘56',‘58' )

以上这篇解决mybatis映射结果集失效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

相关教程

  • mybatis 实现多条update同时执行

    给大家整理一篇关于mybatis的教程,这篇文章主要介绍了mybatis 实现多条update同时执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2023-01-06

  • Mybatis动态SQL的实现示例

    Mybatis动态SQL的实现示例

    给网友朋友们带来一篇关于Mybatis的教程,这篇文章主要介绍了Mybatis动态SQL的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2022-06-17

  • 深入理解Mybatis分页插件使用方法

    这篇文章主要为大家详细介绍了Mybatis分页插件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2020-02-29

  • mybatis注解配置的学习笔记

    本篇文章主要介绍了mybatis学习笔记之mybatis注解配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    发布时间:2019-06-21

  • MyBatis insert操作插入数据之后返回插入记录的id

    给网友朋友们带来一篇关于MyBatis的教程,今天小编就为大家分享一篇关于MyBatis插入数据之后返回插入记录的id,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    发布时间:2022-06-22

  • Spring Boot整合mybatis多数据源用法

    这篇文章主要介绍了Spring Boot 整合mybatis 使用多数据源的实现方法,需要的朋友可以参考下

    发布时间:2020-01-07

  • mybatis 传入null值的解决方案

    这篇文章主要介绍了mybatis 传入null值的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

    发布时间:2022-04-25

  • 详解mybatis foreach collection示例

    详解mybatis foreach collection示例

    给网友们整理关于mybatis的教程,这篇文章主要介绍了详解mybatis foreach collection的相关资料,需要的朋友可以参考下

    发布时间:2022-06-14

用户留言