Mybatis无法获取带有下划线前缀的字段的值问题

作者:言曌博客 时间:2023-07-20 10:06:33 

Mybatis无法获取带有下划线前缀的字段的值

今天下面,把几张表里的字段都加了前缀,如 article_id,article_title,acticle_content,article_status。

然后通过Mybatis-generator 生成了 po和mapper,替换后。

原本正常的网页,这下数据全没了。当时,很淡定,推测可能是哪里写错了,改改就好。但是就是这改改,改了几个小时都没成功,调试了很久。打断点一直是显示:All Element are null

后来,Ctrl+Z 撤销所有修改,并把字段的前缀全部去掉。这时候,突然想到,之前有一次就是因为字段加了下划线导致什么报错,当时为了省事,就全改为没有下划线的。同时也关注到 Mybatis-generator 会把带有下划线的字段按照驼峰法命名,会不会是这里呢?

这时候,试了一下不带下划线和带下划线字段混合的表。

打了断点,发现真相在这里

Mybatis无法获取带有下划线前缀的字段的值问题

带有下划线的字段,都无法获取值,不带的则可以。

最终百度找到了解决方案。

这里感谢一下 valder fields

解决办法

在mybatis-config.xml文件里配置


<configuration>
   <!-- 全局配置 -->
   <settings>
       <!--允许 JDBC 支持自动生成主键-->
       <setting name="useGeneratedKeys" value="false"/>
      <!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典
Java 属性名 aColumn 的类似映射。 -->
       <setting name="mapUnderscoreToCamelCase" value="true"/>
   </settings>
</configuration>

Mybatis无法给带有下划线属性赋值

1、配置问题


<!-- 是否开启自动驼峰命名规则(camel case)映射, -->
<setting name="mapUnderscoreToCamelCase" value="true"/>

或者


//开启驼峰映射
       bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);

mybatis配置文件设置了这项后,查询出来的字段如果带下划线,那么就会去掉下划线,然后采用java驼峰规则。比如数据库字段Parent_id,那么查询出来后,会转为parentid,然后去实体类匹配对应的字段。 因为你实体类里有下划线,所以匹配不上。要么采用resultMap 要么禁用掉驼峰规则(不建议禁用)。如果不想改实体类的话,建议采用resultMap。

2、增加set方法转换值的方式

原实体类


   public class demo {  
     private String user_name;  
     private Striing pass_word;            
     public String getPass_word(){  
          return pass_word;  
     }  
     public void setPass_word(String pass_word){  
          this.pass_word=pass_word;  
     }      
   }

原sql


select user_name,pass_word from demo;

这句sql在数据库可以查到数据,但是使用mybatis的实体类查询就查不到了。

解决方法

在实体类中增加以下两个set方法并把sql改为


select user_name as username,pass_word as password from demo;

使用实体类查询数据库实际上就是一个set的过程只需要把每个属性增加一个set方法就好了


   public void setUsernaem(String user_name){  
         this.user_name=user_name;  
    }  
    public void setPassword(String pass_word){  
         this.pass_word=pass_word;  
    }

仅适用于不方便改实体类的情况

来源:https://liuyanzhao.com/6109.html

标签:Mybatis,下划线,前缀,字段值
0
投稿

猜你喜欢

  • Android仿今日头条APP实现下拉导航选择菜单效果

    2023-09-15 07:21:05
  • c#实现metro文件压缩解压示例

    2022-07-07 22:36:33
  • jpa多数据源时Hibernate配置自动生成表不生效的解决

    2023-04-24 06:19:55
  • Java内置GUI Frame类的使用

    2021-10-25 18:06:49
  • Java数据结构之二叉排序树的实现

    2023-07-05 02:27:25
  • jsp+servlet实现简单登录页面功能(附demo)

    2023-09-24 11:32:28
  • C# string格式的日期时间字符串转为DateTime类型的方法

    2022-04-07 09:34:30
  • Android编程自定义对话框(Dialog)位置及大小的方法

    2021-10-01 19:01:51
  • SpringBoot整合Web之AOP配置详解

    2022-01-17 21:38:11
  • spring profile 多环境配置管理详解

    2023-01-23 17:53:58
  • C#实现两个时间相减的方法

    2022-12-21 03:08:29
  • springMVC自定义注解,用AOP来实现日志记录的方法

    2023-11-29 13:58:53
  • git忽略特殊文件_动力节点Java学院整理

    2023-02-26 19:27:47
  • 命令行编译java文件方式

    2023-01-18 18:35:47
  • Java中notify和notifyAll的区别及何时使用

    2022-07-03 02:08:43
  • SpringMVC请求参数的使用总结

    2022-11-30 22:23:18
  • Java Runnable和Thread实现多线程哪个更好你知道吗

    2021-08-17 05:48:50
  • java如何去除图片中的白色背景

    2022-04-17 00:07:14
  • java注解的类型知识点总结

    2022-11-04 00:26:02
  • Java Unsafe类实现原理及测试代码

    2023-03-10 21:18:13
  • asp之家 软件编程 m.aspxhome.com