关于java mybatis 没有自动调用setter方法

今天做项目的时候突然遇到一个神奇的问题
关于 mybatis 无法与java类的属性一一对应地赋值

首先看今天遇到的第一种情况

@Data
public class TheTrialCategory {
    private int trialId;
    private String name;
    private String image;
    private int cur;
    private int nextTrialId;
    private int previousTrialId;
    private String npcList; //npc列表,值为armyId
    private int bossId;

    public List<Integer> getNpcList() {
        return CommonUtils.strToIntList(this.npcList);
    }
    
    public void setNpcList(String npcList) {
        this.npcList = npcList;
    }


}

这时候遇到一个问题,按道理Mybatis是能通过setNpcList 将数据库的值 赋值给 npcList属性的
然而缺不行,然后我经过一番挣扎,想着会不会要用原始生成的getter和setter 才行?因此进行修改

@Data
public class TheTrialCategory {
    private int trialId;
    private String name;
    private String image;
    private int cur;
    private int nextTrialId;
    private int previousTrialId;
    private String npcList; //npc列表,值为armyId
    private int bossId;

    public List<Integer> getNpcStrToList() {
        return CommonUtils.strToIntList(this.npcList);
    }

    public String getNpcList() {
        return npcList;
    }

    public void setNpcList(String npcList) {
        this.npcList = npcList;
    }
}

通过这个方法,真的可以! 但是又到了另外一个类的时候,又遇到一个很神奇的情况

这是另外一个类,其中有两个个属性是:

private int[] fightValueForGeneral;
private int[] fightValueForNormal;

以及对应的getter 和 setter方法,我数据库字段类型是varchar的,
因此,我需要自己修改一下setter方法,修改成这样:

public void fightValueForGeneral(String fightValueForGeneral) {
   this.fightValueForGeneral= CommonUtils.stringToIntArray(fightValueForGeneral);
}
public void fightValueForNormal(String fightValueForNormal) {
   this.fightValueForNormal= CommonUtils.strToIntArr(fightValueForNormal);
}

解释一下CommonUtils.strToIntArr 这个方法就是将字符串转化为int[] 类型

这么看是没问题的对吧,然后getter是用原始生成的。
但是mybatis死活进不去set方法,然后我死活挣扎了一下 将其中一个属性的getter方法删了,结果能进来了!哇!
我项目启动的时候,断了点看看截图
关于java mybatis 没有自动调用setter方法_第1张图片
上面的白框就是没进来的淦。
在这里插入图片描述
跑完后就是这样

所以解决办法就是把getter方法删除。

后面我想了一下,但是这跟第一个例子是不符合的啊。。。唉,具体真的不知道。
有大神遇到这个问题,并且能解决,能道出个原理原因出来能在评论教教我这个小白吗?

你可能感兴趣的:(mybatis,Bug,mybatis,java,mysql)