Spring Boot——MyBatis配置带下划线命名的字段自动转换驼峰命名解决方案

2023-10-27

问题描述

MyBatis无法查询出属性名和数据库字段名不完全相同的数据。

即:属性名和数据库字段名分别为驼峰命名下划线命名时查出的数据为NULL

问题分析

MyBatis默认是属性名和数据库字段名一一对应的,即 

数据库表列:user_name 

实体类属性:user_name

但是java中一般使用驼峰命名 

数据库表列:user_name 

实体类属性:userName

解决方案

Spring Boot中,可以通过设置map-underscore-to-camel-case属性为true来开启驼峰功能。  

MyBatis配置: 

application.properties中: 

#开启驼峰命名转换
mybatis.configuration.map-underscore-to-camel-case=true

application.yml中: 

mybatis:
  configuration:
    map-underscore-to-camel-case: true

 使用该配置可以让MyBatis自动将SQL中查出来的带下划线命名的字段,自动转换为驼峰命名,再去匹配类中的属性。 

例:

@Select("select phone_num,card_num from xxx where id=#{id}")
public User getUserInfo(String id);

查出来的结果,会被自动转换成phoneNumcardNum,再和结果类(这里就是User )中的属性进行匹配。 

教学视频

DEBUG过程【大概40分钟以后】:https://www.bilibili.com/video/av65117012/?p=23

参考文章

https://segmentfault.com/a/1190000010240142 

https://www.cnblogs.com/leeego-123/p/10725012.html

https://blog.csdn.net/weixin_41758407/article/details/90722718

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot——MyBatis配置带下划线命名的字段自动转换驼峰命名解决方案 的相关文章

  • 在Java中使用命令行编译多个包

    您好 我一直在使用 IDE 但现在我需要从命令行运行和编译 问题是我有多个软件包 我试图找到答案 但没有任何效果 所以我有 src Support java files Me java files Wrapers java files 你知
  • 手动编辑 Jar 以更改包名称

    我有一个来自外部源的 jar 文件 jar 中的所有类都位于 com xyz 包中 我想将所有类移动到 com xyzold 包中 这是否像解压缩 jar 将 xzy 文件夹重命名为 xyzold 并重新压缩它一样简单 或者我还需要修改每个
  • URL.setURLStreamHandlerFactory

    我正在使用带有嵌入式 Jetty 的可执行 jar 开发一个 Web 应用程序 我的jar包含一个依赖jar jar in jar 我参考了JarRsrcLoader and RsrcURLStreamHandlerFactory由 Ecl
  • 无法使用 json 架构验证器根据预定义的 yaml 文件验证查询参数

    我需要根据预定义的 yaml 文件架构验证查询参数的架构 因此我使用 json 架构验证器 验证如何失败 我正在执行以下步骤 填充参数和相应的架构 final List
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • RMI 中的引用传递问题? [复制]

    这个问题在这里已经有答案了 有人可以告诉我我错在哪里 为什么这个 RMI 聊天应用程序不起作用 目标是通过远程对象或序列化对象实现客户端 服务器和逻辑之间的解耦 import javax swing import java awt even
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 如何找到被点击的JLabel并从中显示ImageIcon?

    这是我的代码 我想知道哪个l单击 然后在新框架中显示该 ImageIcon e getSource 不起作用 final JFrame shirts new JFrame T shirts JPanel panel new JPanel n
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • Java中的回调接口是什么?

    SetObserver 接口的代码片段取自有效的Java 避免过度同步第67条 public interface SetObserver
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • 如何用表达式语言获取布尔属性?

    如果我有一堂这样的课 class Person private int age public int getAge return age public boolean isAdult return age gt 19 我可以得到age像这样
  • 失败时石英重试

    假设我有一个这样配置的触发器
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 每次我们调用浏览器时,在 selenium 中使用 driver.manage().window().maximize() 是否好?

    We use driver manage window maximize 最大化浏览器 我在网上看到一些使用的例子driver manage window maximize 尽管不需要最大化浏览器 例如 gmail 登录 我还看到使用 se

随机推荐

  • 初学者使用MyBatis开发步骤详解

    MyBatis开发步骤 1 建表 create table t users id int primary key auto increment name varchar 50 password varchar 50 sex varchar
  • 请谈谈你对Hadoop的理解

    一 请谈谈你对Hadoop的理解 1 Hadoop是什么 What is Hadoop Hadoop是Apache软件基金会的一个开源项目 是一个分布式处理海量数据的软件框架 它为开发者提供了一个分布式系统的基础架构 用户可以在不了解分布式
  • 怎么在局域网中设置共享文件夹?

    在工作中 我们经常会使用到共享文件夹 它能很好的提高我们的工作效率 但是有些小伙伴却并不会设置 下面小编就来用图文为大家讲解一下如何设置共享文件夹 共享文件夹设置方法 1 在需要共享的文件夹上单击鼠标右键 选择 属性 2 在上方选项栏选择共
  • 蓝牙Bluetooth模块介绍

    1 蓝牙模块 基础知识介绍 https blog csdn net wwt18811707971 article details 77833602 2 常见蓝牙模块介绍和AT指令 https blog csdn net qlexcel ar
  • java logback.xml详解

    一 java日志输出演进 0 控制台输出 System out println 1 java标准库内置日志包 java util logging Logger logger Logger getGlobal logger info 局限性
  • 开源软件不等于免费软件(弄清开放源代码许可证很重要)

    转载 https www ramostear com blog 2020 04 09 xfz464y9 html 树下魅狐 似乎提到开源软件 往往给人一种错觉 我拿到了软件源代码 接下来我是不是可以大刀阔斧为所欲为 其实非也 开源软件不等于
  • clock函数的时间单位_简单的c++时间测量

    在生产系统上面 测量系统的运行性能 定位问题 都会用到一个参考值 就是某段代码对运行时间 这个功能时间也简单 就是在代码的开始位置以及结束位置各去执行一下时间获取的操作 然后求下得到的两个值的差值就能获得 像下面这代码一样 time t b
  • RESTful风格的优势是什么

    阅读 阮一峰 理解RESTful架构 http www ruanyifeng com blog 2011 09 restful 可以得知RESTful风格的特点如下 1 每一个URI代表一种资源 独一无二 2 客户端和服务器之间 传递这种资
  • html5表单组件,10 HTML5表单各种组件

    H5表单组件 H5的表单组件分为 文字组件 列表组件 选择组件 按钮组件 1 输入组件 输入组件的作用是让用户输入数据 输入组件包括 text textarea paaword H5新增的有date number color range等i
  • SLF4J 教程(自由在各种log中切换)

    http www blogjava net dreamstone archive 2007 07 09 128993 html 一 介绍 简单日记门面 simple logging Facade for java SLF4J是为各种logi
  • vue省市区三级联动插件(使用mint-ui的picker)

    用mint ui中的picker组件封装的省市区插件 使用环境 vue cli demo下载地址 https download csdn net download yanzyan 10516230 下载后 使用npm install命令生成
  • 参加GTC大会,抢先看懂游戏未来发展方向

    如果GPU是时光机 那么GTC就是窥探未来的窗口 Jensen Huang NVIDIA GTC 全称GPU Technology Conference GPU技术大会 本次的GTC国内站将会在苏州举办 历时3天 参与链接 http gtc
  • el-date-picker获取焦点方法

    小编为了实现日期控件在显示时候字段获得焦点的操作 研究了好一会儿 对比了其他的组件 最后终于实现了结果 和大家分享一下
  • 网页在线画图工具----方便简洁

    https www processon com diagrams
  • 面向对象的Qt编程

    0 面向对象的Qt编程 完全不适用任何面向对象技术 而只是利用Qt所提供的类创建对象 并调用对象的接口以满足用户的需求是可能的 但这样构建的应用程序其功能必然是十分有限的 首先 Qt类保护成员中的诸多实现无法在类的外部被复用 Qt试图通过多
  • OJDBC连接串配置

    格式一 使用ServiceName方式 jdbc oracle thin
  • vue下载Java返回的二进制文件流及文件名需要从headers[‘content-disposition‘]中获取

    如图 在request js响应拦截器中 获取到content disposition 并赋值给在上面声明过的filename 注意 如果获取不到headers content disposition 的话 需要后端对该接口配置一下Head
  • windows powershell快捷键

    复制ctrl c 鼠标右键 粘贴ctrl v 鼠标右键 删除整行命令esc 删除光标前一个单词ctrl backsapce 删除光标后一个单词ctrl delete 删除光标前一个字符backsapce 删除光标后一个字符delete 删除
  • c++,编写程序给出一个百分制的成绩,要求输出成绩等级‘A‘,‘B‘,‘C‘,‘D‘,‘E‘。

    分析 这个题目很简单 就是对你输入的成绩进行一个判定 如果是大于等于九十就运行输出 A 这个程序 以此类推 方法一 使用if语句 对了按照规范写法的话应该要有else 但再不会影响程序运行的请款下 本博主是不喜欢加上else的 includ
  • Spring Boot——MyBatis配置带下划线命名的字段自动转换驼峰命名解决方案

    问题描述 MyBatis无法查询出属性名和数据库字段名不完全相同的数据 即 属性名和数据库字段名分别为驼峰命名和下划线命名时查出的数据为NULL 问题分析 MyBatis默认是属性名和数据库字段名一一对应的 即 数据库表列 user nam