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)的区别。

  • 相关阅读:
    【转】开发人员一定要加入收藏夹的网站
    ASP.NET页面之间传递值的几种方式
    查询数据库中字段内容相同的记录
    将csv文件导入到数据库中
    XMLHttpRequest对象(三)
    Ajax基础(一)
    Ajax浏览器支持(二)
    javascript获取浏览器的
    SQL SERVER 通过链接服务器访问ORACLE 包中的存储过程 带参数
    SQL 添加链接服务器
  • 原文地址:https://www.cnblogs.com/superman-21/p/14077356.html
Copyright © 2011-2022 走看看