我觉得这是一个简单的问题,但我试过的东西都不适合我。我有一个枚举,我有字符串构造函数的原因是因为Java不允许枚举数字..我直接尝试AA,AB,2C没有字符串构造函数,但是,这给出了一个错误。请注意,对于现有的枚举,我将添加C(“2C”)。Java MyBatis枚举字符串值
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()},它给了我一个不存在的getter为属性名称toString()错误。我试过#{testEnum.display}和#{testEnum.name},它们仍然插入C,而我希望它插入2C。你们知道一个更简单的方法来处理这个问题吗?
我不想改变模型对象来传递字符串而不是TestEnum,因为这个对象正在很多地方使用。是否有一种方法可以在mybatis映射器中完成而无需更改模型对象?
感谢您的帮助:)
太棒了,正是我需要的。非常感谢你 –