我的编程空间,编程开发者的网络收藏夹
学习永远不晚

解决Mybatis中mapper的ID冲突问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

解决Mybatis中mapper的ID冲突问题

mapper 的id冲突原因:

原因一:

在同一个mapper.xml中存在相同的ID

原因二:

同时使用了xml配置和注解配置

解决方案:

只保留xml或者注解即可!!!

Mybatis mapper文件下同一id 查询结果列不同问题

场景描述:

订单数据按天分表,正常情况下每一天的表结构都是一样的,表名命名格式order_yyyyMMdd。

定义一个查询如下:


<select id="orderSelect" parameterClass="java.util.HashMap" resultClass="com.xxx">
    select * from order_$table_suffix$
    where ...
</select>

如果我查询18年10月1日数据,则传参数table_suffix=20181001,如果我查询18年10月2日数据,则传参数table_suffix=20181002.即可。

系统运行了若干天,到了18年12月30日,order表添加了新的字段a。以后的订单表都会添加该字段。对应的实体类也添加了对应字段。应该没有问题了,更新并重启程序。先查询今天的数据,没有问题。在查询之前的数据,发现程序报错了,找不到字段a.

解决方法:

修改id 为orderSelect 的查询


<select id="orderSelect" remapResults="true" parameterClass="java.util.HashMap" resultClass="com.xxx">
    select * from order_$table_suffix$
    where ...
</select>

对比发现添加了 remapResults="true"的配置

总结 :

mybatis 默认remapResults属性为false,会导致同一查询id 查出来的字段一直都是固定的。设置为true的话,则每次查询查出来的列可以不相同,这样才能应对不同的表结构。

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

解决Mybatis中mapper的ID冲突问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mybatis中怎么利用mapper解决ID冲突问题

这篇文章给大家介绍Mybatis中怎么利用mapper解决ID冲突问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。mapper 的id冲突原因:原因一:在同一个mapper.xml中存在相同的ID原因二:同时使用了x
2023-06-15

mysql id自增冲突问题怎么解决

解决MySQL ID自增冲突问题有以下几种方法:使用AUTO_INCREMENT:在创建表的时候,可以设置ID字段为AUTO_INCREMENT,这样MySQL会自动为每条新记录分配一个唯一递增的ID值,避免冲突。使用UUID:可以将ID字
mysql id自增冲突问题怎么解决
2024-04-09

怎么解决mybatis中的mapper命名问题

这篇文章主要介绍了怎么解决mybatis中的mapper命名问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis mapper命名问题mapper文件中id命名最
2023-06-15

Android 中ScrollView与ListView冲突问题的解决办法

Android 中ScrollView与ListView冲突问题的解决办法自定义MyListViewpublic class MyListView extends ListView { public MyListView(Context
2023-05-30

React样式冲突解决问题的方法

本文主要介绍了React样式冲突解决问题的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-10

React样式冲突解决问题如何解决

本篇内容主要讲解“React样式冲突解决问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React样式冲突解决问题如何解决”吧!前言:1、React最终编译打包后都在一个html页面中
2023-07-05

VSCode中Eslint和Prettier冲突问题如何解决

这篇文章主要讲解了“VSCode中Eslint和Prettier冲突问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VSCode中Eslint和Prettier冲突问题如何解决”吧
2023-07-05

gradle依赖冲突问题怎么解决

在Gradle中,依赖冲突通常是由于不同的依赖项引入了相同的库的不同版本造成的。以下是一些解决依赖冲突问题的方法:1. 使用`gradle dependencies`命令查看项目中的依赖关系,找到冲突的依赖项。2. 在`build.grad
2023-10-11

css样式冲突的问题如何解决

本篇内容介绍了“css样式冲突的问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、 细化选择符通过使用组合器(Combinato
2023-06-20

Android滑动冲突问题的解决方法

叙述滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。 关于滑动冲突滑动冲突分类 滑动冲突,总的来说就是两类。 1、同方向滑
2022-06-06

怎么解决Git合并冲突的问题

本篇内容介绍了“怎么解决Git合并冲突的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!合并并不仅仅是简单的文件添加、移除的操作,Git
2023-06-04

如何解决docker与vmware的冲突问题

这篇文章给大家分享的是有关如何解决docker与vmware的冲突问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、docker启动问题:问题解决:需要开启Hyper-V,(开启方法:控制面板->程序->程序
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录