mybatis实体类字段获取不到值怎么解决(mybatis,开发技术)

时间:2024-05-10 00:38:31 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

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值(实体类属性名)进行一一映射。

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.mapper.UserMapper"><resultMapid="BaseResultMap"type="com.domain.User"><idcolumn="id"jdbcType="INTEGER"property="id"/><resultcolumn="user_name"jdbcType="VARCHAR"property="userName"/><resultcolumn="password"jdbcType="VARCHAR"property="password"/></resultMap><selectid="xxx"parameterType="xxx"resultMap="BaseResultMap">......</select>

2.对MyBatis进行配置:

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

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><configuration><!--配置mybatis自动转换为驼峰命名--><settings><settingname="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文件中直接使用对应的实体类来接收数据。

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.mapper.UserMapper"><selectid="xxx"parameterType="xxx"resultType="User">......</select>

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

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

@ConfigurationpublicclassMyBatisConfig{@BeanpublicConfigurationCustomizerconfigurationCustomizer(){returnnewConfigurationCustomizer(){@Overridepublicvoidcustomize(org.apache.ibatis.session.Configurationconfiguration){configuration.setMapUnderscoreToCamelCase(true);}};}}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:mybatis实体类字段获取不到值怎么解决的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:javascript array如何删除最后一个元素下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18