阅读 151

解决mybatis无法给带有下划线属性赋值问题

这篇文章主要介绍了解决mybatis无法给带有下划线属性赋值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

目录
  • mybatis无法给带有下划线属性赋值问

    • 1、配置问题

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

    • 解决方法

  • 实体类中有下滑线字段无法赋值问题

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

    1、配置问题

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

    或者

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

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

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

    原实体类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        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

    1
    select user_name,pass_word from demo;


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

    解决方法

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

    1
    select user_name as username,pass_word as password from demo;

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

    1
    2
    3
    4
    5
    6
        public void setUsernaem(String user_name){  
              this.user_name=user_name;  
         }  
         public void setPassword(String pass_word){  
              this.pass_word=pass_word;  
         }  

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

    实体类中有下滑线字段无法赋值问题

    实体类中有下滑线字段,mybatis无法赋值

    • 直接将实体类中的下划线去掉

    • 返回值使用resultMap进行字段映射赋值

    以上为个人经验,希望能给大家一个参考

    原文链接:https://blog.csdn.net/qq_35893120/article/details/80407671


    文章分类
    代码人生
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐