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

目录
  • mybatis无法给带有下划线属性赋值问
    • 1、配置问题
    • 2、增加set方法转换值的方式
    • 解决方法
  • 实体类中有下滑线字段无法赋值问题

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;  
     }  

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

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

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

  • 直接将实体类中的下划线去掉
  • 返回值使用resultMap进行字段映射赋值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • myBatis实现三级嵌套复杂对象的赋值问题

    平常我们工作中基本最多两级嵌套,但是有时候难免会遇到三级嵌套的业务场景,笔者最近就碰到了,使用一般的嵌套发现赋值为空,这可难倒了菜逼的我,后来在stackoverflow的帮助下终于搜到了解决办法,完美解决了问题 ,总结一下,方便有需要的同学,下面直接上栗子: 首先上实体类:三级嵌套如下 (电站 -----> 电桩 ---->电枪) 电站实体类 (实体为JPA写法,不影响mybatis的使用) package com.weima.cecapp.entities; import lombok.D

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

    目录 Mybatis无法获取带有下划线前缀的字段的值 打了断点,发现真相在这里 解决办法 Mybatis无法给带有下划线属性赋值 1.配置问题 2.增加set方法转换值的方式 Mybatis无法获取带有下划线前缀的字段的值 今天下面,把几张表里的字段都加了前缀,如 article_id,article_title,acticle_content,article_status. 然后通过Mybatis-generator 生成了 po和mapper,替换后. 原本正常的网页,这下数据全没了.当时,

  • mybatis某些字段无法映射成功的解决

    随笔记录下: 刚刚遇到一个mybatis中reultMap定义正确column与property也都正确,字段的getset方法也都有,但是返回对象时,有些字段可以对应上有一些则不可以. 找了好久才发现在sql语句中的 resultMap 写成了 resultType... 很low但是痛.改成resultMap一切正常! 补充知识:MyBatis学习总结--解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况

  • MyBatis拦截器:给参数对象属性赋值的实例

    该拦截器的作用:在进行增加.修改等操作时,给数据模型的一些通用操作属性(如:创建人.创建时间.修改人.修改时间等)自动赋值. 该实现是在DAO层拦截,即存入DB前最后一层.后经分析,不是很合理,改为在service层拦截,用spring AOP来实现了,该代码遂弃用.不过已经测试可用,记录备忘. package com.development; import java.lang.reflect.InvocationTargetException; import java.util.Date; i

  • MybatisPlus分页排序查询字段带有下划线的坑及解决

    目录 MybatisPlus分页排序查询字段带有下划线 MybatisPlus字段名称有下划线查询为null 原因分析 解决方案 MybatisPlus分页排序查询字段带有下划线 如果使用MybatisPlus的自动转驼峰命名法,分页排序查询的字段带有下划线时,会出问题. page = new Page<>(pageNo, pageSize); OrderItem orderItem = new OrderItem(); orderItem.setColumn("create_dat

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

    目录 mybatis无法给带有下划线属性赋值问 1.配置问题 2.增加set方法转换值的方式 解决方法 实体类中有下滑线字段无法赋值问题 mybatis无法给带有下划线属性赋值问 1.配置问题 <!-- 是否开启自动驼峰命名规则(camel case)映射, --> <setting name="mapUnderscoreToCamelCase" value="true"/> 或者 //开启驼峰映射         bean.getObjec

  • mybatis Map查询结果下划线转驼峰的实例

    添加一个配置类MybatisCamelConfig 即可 package com.fpi.notify.config; import com.google.common.base.CaseFormat; import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.wrapper.MapWrapper; import org.apache.ibatis.reflection.wrapper.

  • 解决Vue 给mapState中定义的属性赋值报错的问题

    1. 实践环境 Vue 2.9.6 2. 问题描述 <script> import { mapState } from 'vuex'; export default { name: "displayCount", computed: { ...mapState({ ...略 count: state => state.a.count }) }, methods: { increaseCount () { this.count = this.count + 1 } }

  • python 下划线的多种应用场景总结

    目前常见的用法有五种: _用于临时变量 var_用于解决命名冲突问题 _var用于保护变量 __var用于私有变量 __var__用于魔术方法 下面我们具体看看这些下划线应用场景. 一._用于临时变量 单下划线一般用于表示临时变量,在REPL.for循环和元组拆包等场景中比较常见. 1.1 REPL 单下划线在REPL中关联的是上一次计算的非None结果. >>> 1+1 2 >>> _ 2 >>> a=2+2 >>> _ 2 1+1

  • python 下划线的不同用法

    在本文中,我们将介绍 Python 中 _ 字符的不同用法.就像 Python 中的许多其他内容一样,我们会看到 "_" 的不同用法主要是惯例问题.这里我们将介绍的几种不同情况: 单下划线(例如 _) 名称前加一个下划线(例如 _total) 名称后加一个下划线(例如 total_) 数字文字中的单个下划线(例如 100_000) 名称前加上双下划线(例如 __total) 名称前后加双下划线(例如 __init__) 一.单下划线(_) 单下划线通常在3种情况下使用: 1.在解析程序

  • Android UI设计系列之自定义TextView属性实现带下划线的文本框(4)

    在Android开发过程中,如果Android系统自带的属性不能满足我们日常开发的需求,那么就需要我们给系统控件添加额外的属性了.假如有个需求是实现带下划线的文本显示(下划线),如果不使用自定义属性的话实现起来也不太难(起码我认为的实现方式是有许多种的),今天就讲解一下如何使用自定义属性来实现上述带下划线的文本框吧.还好Android中自定义属性不是很复杂,也可以归纳为三步走吧. 老规矩,还是先贴出工程目录吧: 一.添加属性文件 在values文件夹中新建attrs.xml文件,在文件中新建属性

  • 解决TabLayout 不显示下划线问题

    如下所示: tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT); tabLayout.setFocusableInTouchMode(false); 如果没有上面那个再进入页面时候回有默认的下划线显示 所以设置成透明再设置不聚焦的模式就实现下划线消失了 补充知识:Android开发,Design包下TabLayout一些属性修改,字体.下划线颜色 由于时间较长没有用到tablayout,在一次使用中向改变tablayout滑动字体颜

随机推荐