我觉得这是一个简单的问题,但我尝试的所有方法都不能解决。我有一个枚举,我需要使用字符串构造函数是因为Java不允许枚举是数字。我直接尝试使用AA、AB、2C,但是没有字符串构造函数会出现错误。请注意,对于现有的枚举,我正在添加C("2C")。
public enum TestEnum{
AA("AA"), AB("AB"), C("2C");
private String display;
private TestEnum( String display ) {
this.display = display;
}
public String toString() {
return display;
}
public String getDisplay() {
return display;
}
public void setDisplay( String display ) {
this.display = display;
}
public String getName() {
return display;
}
现在我有一个mybatis映射器,它执行合并操作。这是现有的,映射器的一个参数是TestEnum。直到现在,这个工作都很好,因为枚举值和字符串值相同,但我添加了C("2C")。现在我想使用mybaits将2C插入表中,但它总是插入C。
merge into text t
using (select #{id} as id from dual) d on (d.id = t.id)
when matched then
update set
appId = #{applId},
src = #{testEnum}
testEnum插入了C,所以我将其更改为#{testEnum.toString()},但出现了“没有名称为toString()的属性getter”的错误。我尝试使用 #{testEnum.display} 和 #{testEnum.name},它们仍然插入C,而我想要插入2C。您知道处理这个问题的更简单的方法吗?
我不想改变模型对象以传递String而不是TestEnum,因为这个对象在很多地方都被使用。这可以在mybatis映射器中完成而不改变模型对象吗?
谢谢您的帮助 :)
MyBatis采用强大的基于OGNL的表达式
。 - Roman-Stop RU aggression in UA