Java Mybatis无吸气剂性质

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

我正在使用Mybatis 3.2.6并实现一个定制的resulthandler。在使用一个简单的数据类型参数之前,我已经这样做了,并且没有任何问题。这次我需要传递几个参数。。。我用的签名是

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
 * &quot;code&quot; 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'