mybatis 实体类字段大小写问题 字段获取不到值的解决

作者:yangniceyang 时间:2021-06-29 07:44:58 

mybatis实体类字段大小写问题 字段获取不到值

由于前期设计问题,项目中需要用到的一个字段 rootpath,所以我再实体层加了这么一个字段。

mybatis 实体类字段大小写问题 字段获取不到值的解决

然后,我在前台向后台传数据的时候,这个rootpath一直都获取不到值。经过排查对比,发现我写的set和get方法名称后面的RootPath 中的P字母大写导致的。

解决办法

将set和get方法后面的P改为小写p就可以了

mybatis 实体类字段大小写问题 字段获取不到值的解决

推断

mybatis认为rootpath是一个单词,但是我错误的认为了是两个单词,然后再写set和get的时候给P大写了,所以导致了字段获取不到值!

踩坑mybatis 转换大小写问题

由于在Windows环境下MySQL数据库不严格区分大小写,所以我们在对数据库的表和字段进行命名时两个单词之间都是使用下划线“_”的,比如“user_name”。但是,我们在项目开发时,为了遵守代码规范,实体类中的属性采用的都是驼峰式命名。这样,MyBatis可能就会报错没有该属性的get和set方法。

解决方法

1.使用resultMap

通过resultMap中的column值(数据库字段名)和property值(实体类属性名)进行一一映射。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.domain.User">
   <id column="id" jdbcType="INTEGER" property="id" />
   <result column="user_name" jdbcType="VARCHAR" property="userName" />
   <result column="password" jdbcType="VARCHAR" property="password" />

</resultMap>
 <select id="xxx" parameterType="xxx" resultMap="BaseResultMap" >
 ......
 </select>

2.对MyBatis进行配置:

(1)在mybatis-config.xml配置文件中添加以下代码:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<configuration>
<!-- 配置mybatis自动转换为驼峰命名 -->
<settings>
 <setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>

(2) 在application.yml文件中进行配置:


#mybatis配置
mybatis:
configuration:
  map-underscore-to-camel-case: true

其中的map-underscore-to-camel-case也可以写成mapUnderscoreToCamelCase(未尝试),然后MyBatis的xml文件中直接使用对应的实体类来接收数据。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserMapper">
 <select id="xxx" parameterType="xxx" resultType="User" >
 ......
 </select>

第(1)种方式和第(2)种方式同时配置时,第(2)种方式的优先级更高。

3.自定义配置类的方式配置:给容器中添加一个ConfigurationCustomizer。


@Configuration
public class MyBatisConfig {
   @Bean
   public ConfigurationCustomizer configurationCustomizer() {
       return new ConfigurationCustomizer() {
           @Override
           public void customize(org.apache.ibatis.session.Configuration configuration) {
               configuration.setMapUnderscoreToCamelCase(true);
           }
       };
   }
}

来源:https://blog.csdn.net/yangniceyangyang/article/details/100113520

标签:mybatis,实体类,字段,大小写
0
投稿

猜你喜欢

  • java map转Multipart/form-data类型body实例

    2023-04-19 13:16:18
  • C#实现读取txt文件生成Word文档

    2022-08-06 19:03:22
  • C# WebApi Get请求方式传递实体参数的方法示例

    2023-05-01 21:46:46
  • JAVA遍历map的几种实现方法代码

    2023-08-27 22:06:04
  • 学习C#静态函数及变量的一个精典例子与代码

    2021-10-08 18:53:52
  • 学习Java的Date、Calendar日期操作

    2023-09-04 22:26:38
  • C# List介绍及具体用法

    2021-09-15 07:59:14
  • Windows 10卸载JDK1.8超详细图文教程

    2022-07-07 22:30:16
  • 从字符串中截取等长字节的Java代码

    2023-03-12 10:11:41
  • Java8 CompletableFuture详解

    2023-09-16 12:34:54
  • Spring RestTemplate的使用与踩坑

    2022-01-12 21:43:14
  • C#编程获取资源文件中图片的方法

    2023-05-23 06:13:39
  • java Quartz定时器任务与Spring task定时的几种实现方法

    2021-11-14 22:31:47
  • springboot集成Swagger的方法(让你拥有属于自己的api管理器)

    2023-11-08 20:39:15
  • 详解Spring框架下向异步线程传递HttpServletRequest参数的坑

    2021-05-31 04:45:21
  • c#定时器和global实现自动job示例

    2023-10-04 22:30:29
  • 关于各种排列组合java算法实现方法

    2023-11-15 05:46:55
  • 一文带你了解Java万物之基之Object类

    2023-10-09 01:58:28
  • Java面试题之HashMap 的 hash 方法原理是什么

    2022-09-11 20:20:54
  • 揭秘在ListView等AdapterView上动态添加删除项的陷阱

    2022-11-26 16:02:27
  • asp之家 软件编程 m.aspxhome.com