ssm+mybatis无法给带有下划线属性赋值问题,无法获取数据库带下划线的字段值

Posted 落花の无痕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssm+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 user {  
      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 user;

 

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

解决方法

在实体类中增加以下两个set方法并把sql改为
select user_name as username,pass_word as password from user;

 

使用实体类查询数据库实际上就是一个set的过程只需要把每个属性增加一个set方法就好了(这个还行吧)
    public void setUsernaem(String user_name){  
          this.user_name=user_name;  
     }  
     public void setPassword(String pass_word){  
          this.pass_word=pass_word;  
     }  
 
 然后查询:
//还是可以查询全部数据的

select
* from user order by id asc;

 

 

  

以上是关于ssm+mybatis无法给带有下划线属性赋值问题,无法获取数据库带下划线的字段值的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis拦截器:给参数对象属性赋值

在数据库字段(实体类属性名)带下划线时get和set方法无效

Mybatis是如何将sql执行结果封装为目标对象并返回的?

mybatis是如何将sql执行结果封装为目标对象并返回的?有哪些映射形式

C#窗体 webBrowser控件赋值后无法编辑~~~~~

ssm整合Mybatis无法连接数据库的问题 ‘Access denied for user...’