洞察探索如何利用兼容微信生态的小程序容器,实现跨平台开发,助力金融和车联网行业的数字化转型。
1817
2022-11-19
mybatis 实体类字段大小写问题 字段获取不到值的解决
目录mybatis实体类字段大小写问题 字段获取不到值解决办法推断踩坑mybatis 转换大小写问题解决方法
mybatis实体类字段大小写问题 字段获取不到值
由于前期设计问题,项目中需要用到的一个字段 rootpath,所以我再实体层加了这么一个字段。
然后,我在前台向后台传数据的时候,这个rootpath一直都获取不到值。经过排查对比,发现我写的set和get方法名称后面的RootPath 中的P字母大写导致的。
解决办法
将set和get方法后面的P改为小写p就可以了
推断
mybatis认为rootpath是一个单词,但是我错误的认为了是两个单词,然后再写set和get的时候给P大写了,所以导致了字段获取不到值!
踩坑mybatis 转换大小写问题
由于在Windows环境下mysql数据库不严格区分大小写,所以我们在对数据库的表和字段进行命名时两个单词之间都是使用下划线“_”的,比如“user_name”。但是,我们在项目开发时,为了遵守代码规范,实体类中的属性采用的都是驼峰式命名。这样,MyBatis可能就会报错没有该属性的get和set方法。
解决方法
1.使用resultMap
通过resultMap中的column值(数据库字段名)和property值(实体类属性名)进行一一映射。
......
2.对MyBatis进行配置:
(1)在mybatis-config.xml配置文件中添加以下代码:
(2) 在application.yml文件中进行配置:
#mybatis配置
mybatis:
configuration:
map-underscore-to-camel-case: true
其中的map-underscore-to-camel-case也可以写成mapUnderscoreToCamelCase(未尝试),然后MyBatis的xml文件中直接使用对应的实体类来接收数据。
<!Dhttp://OCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
......
第(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);
}
};
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~