zoukankan      html  css  js  c++  java
  • 记java实体类属性名为全部为大写踩的坑(基础)

    1.今天后台使用实体类接收参数,然后有个参数发现明明前后都是对应的,但是那个属性偏偏的不到数据

    后面百度才知道(写前端太久java基础都给忘了,该补补了)

    spring默认的命名方式为,首字母转小写,连续大写字母都转成了小写

    恍然大悟:也就是说当我实体类自动为SN时,get方法getSN也就相当于get,sn这个字段,set方法getSN也就相当于set,sn这个字段,就会导致跟字段SN不对应,导致无法注入值

    这时候其实有解决的办法,就是get,set方法添加@JsonPropety("属性名")解决

    Java的规范是首字母小写的然后驼峰命名

    看源码后发现

    public static String decapitalize(String s) 
        { 
            if(s == null || s.length() == 0) 
                //空处理 
                return s; 
            if(s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isUpperCase(s.charAt(0))){ 
                //长度大于1,并且前两个字符大写时,返回原字符串 
                return s; 
            } else{ 
                //其他情况下,把原字符串的首个字符小写处理后返回 
                char ac[] = s.toCharArray(); 
                ac[0] = Character.toLowerCase(ac[0]); 
                return new String(ac); 
            } 
        } 

    得出结论

    当实体类的属性为前两个为大写时他会返回原字符

    AA->AA

    Aa->aa

    aa->aa

    这样的差异会导致set,get取不到对应的值,所以还是严格按照java的命名规范来

    JavaBean 中的属性是通过 get/set 方法名得来的,因此

    getSname 对应的属性名是 sname
    getSName 对应的属性名是 SName

    如果写成 sName 或者 Sname 的话就是不合法的属性名。

    在 Java 中要区分一下属性(property)与字段(field)或成员变量(member variable)的区别。

  • 相关阅读:
    faster with MyISAM tables than with InnoDB or NDB tables
    w-BIG TABLE 1-toSMALLtable @-toMEMORY
    Indexing and Hashing
    MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
    controlling the variance of request response times and not just worrying about maximizing queries per second
    Variance
    Population Mean
    12.162s 1805.867s
    situations where MyISAM will be faster than InnoDB
    1920.154s 0.309s 30817
  • 原文地址:https://www.cnblogs.com/superman-21/p/14077356.html
Copyright © 2011-2022 走看看