Java Mybatis无吸气剂性质
我正在使用Mybatis 3.2.6并实现一个定制的resulthandler。在使用一个简单的数据类型参数之前,我已经这样做了,并且没有任何问题。这次我需要传递几个参数。。。我用的签名是Java Mybatis无吸气剂性质,java,orm,mybatis,ibatis,ibatis.net,Java,Orm,Mybatis,Ibatis,Ibatis.net,我正在使用Mybatis 3.2.6并实现一个定制的resulthandler。在使用一个简单的数据类型参数之前,我已经这样做了,并且没有任何问题。这次我需要传递几个参数。。。我用的签名是 session.select(statement, parameter, handler); 对于参数,我创建了一个简单的POJO,以便轻松地发送所需的内容。详情如下: public class DifferenceParam { private int current; private int comp
session.select(statement, parameter, handler);
对于参数,我创建了一个简单的POJO,以便轻松地发送所需的内容。详情如下:
public class DifferenceParam {
private int current;
private int compare;
private String table;
private String comparator;
/**
* Constructor excluding comparator. Will default a value of
* "code" to compare content on, e.g., <br/>
* {@code select * from a minus select * from b where a.code = b.code } <br/>
* @param table
* @param current
* @param compare
*/
public DifferenceParam(String table, int current, int compare) {
this(table, "code", current, compare);
}
/**
* Constructor providing a specific column to compare on, e.g. <br/>
* {@code select * from a minus select * from b where a.[comparator] = b.[comparator] } <br/>
* @param table
* @param comparator
* @param current
* @param compare
*/
public DifferenceParam(String table, String comparator, int current, int compare) {
this.table = table;
this.comparator = comparator;
this.current = current;
this.compare = compare;
}
/** Appropriate setters and getters to follow **/
}
我遇到的问题是通过映射器执行,例如
session.getMapper(DifferenceParam.class);
工作正常,但是当我在会话上通过select调用时,会出现以下异常
Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'param' in 'class com.mmm.his.cer.cerval.uidifference.map.param.DifferenceParam'
Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'param' in 'class com.mmm.his.cer.cerval.uidifference.map.param.DifferenceParam'
我已经在Mybatis中调试了尽可能多的程序,但是我运气不好
提前感谢…当您使用session.getMapperDifferenceParam.class;,mybatis查找@Param注释并在查询中使用其值
调用session.selectstatement、参数、处理程序;,这样的映射不会发生
尝试将公共DifferenceParam getParam{return this;}添加到DifferenceParam以解决此问题。当MyBatis查询只有一个参数时。不需要{param.}引用 因为它默认使用唯一的参数 因此,当您使用${param.table}时,它实际上使用了{DifferenceParam.param.table}
因为它认为{DifferenceParam.}中的${param.}您尝试过从select中删除parameterType属性吗?您应该使用它并直接引用参数的属性${table},而不是${param.table},或者不使用它。您完全正确!在语句的原始构造中,在使用resultHandler之前,我有相似的参数和相似的成员,因此我使用参数名来区分,但是我仍然有一些语句是以${a.b}和{a.b}的形式编写的,它们工作得很好。如果只使用ResultHandler,这会是一个问题吗?
session.getMapper(DifferenceParam.class);
Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'param' in 'class com.mmm.his.cer.cerval.uidifference.map.param.DifferenceParam'
Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'param' in 'class com.mmm.his.cer.cerval.uidifference.map.param.DifferenceParam'