奇怪,mybatis 为什么没有调用getter与setter,可以强制mybatis调用么?

最近遇到的问题非常让人困惑,mybatis封装数据库记录成java实体,数据库中是小写,我在java bean的setter方法中将字段改为大写,但是发现没有生效,调试进而发现,mybatis根本没有调用实体的getter和setter方法,这样我想在get或set方法中做一些数据的变形就不可能了,百度了一下,mybatis通过反射直接赋值和读取字段,不需要getter和setter方法,请问有办法强制mybatis必须使用getter和setter方法么?项目中用了lombok是不是有干扰

 

    public String getRedminePwd() {

        if (this.redminePwd.contains("redmine")) {
            return this.redminePwd;
        }
        if (!StringUtils.isEmpty(this.redminePwd1)) {
            this.redminePwd = "redmine01:" + this.redminePwd1;
        }
        if (!StringUtils.isEmpty(this.redminePwd2)) {
            this.redminePwd = this.redminePwd+"," + "redmine02:" + this.redminePwd2;
        }
        String pwd= StringUtils.trimLeadingCharacter(this.redminePwd, ',');
        this.redminePwd=pwd;
        return pwd;
    }

如上述代码,我用了this.redminePwd=pwd才能让mybatis拿到正确的值;而本来我可以直接return pwd就行... 我的mybatis版本是3.4.5

getter与setter是自动调用的,只要确保getter,setter是按变量名称规则生成的就可以。

你使用lombok插件,通过@Data自动生成get/set方法了?只要实体类上不要加@Data注解就不会生成set/get方法。你试试实体类中不写get/set方法会不会报错。

    public String getRedminePwd() {

        if (this.redminePwd.contains("redmine")) {
            return this.redminePwd;
        }
        String temp="";
        if (!StringUtils.isEmpty(this.redminePwd1)) {
            temp = "redmine01:" + this.redminePwd1;
        }
        if (!StringUtils.isEmpty(this.redminePwd2)) {
            temp = temp + "," + "redmine02:" + redminePwd2;
        }
        return  StringUtils.trimLeadingCharacter(temp, ',');
    }

这个代码与上面相比,就是换了一个变量名,但是mybatis拿到最后return的值了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632