我正在使用myBatis,我需要使用Java Reflection调用生成的 andFieldEqualTo 方法。
Class<?> cls = Class.forName("com.example.model.MyBatisExample");
Object obj = cls.newInstance();
Method method = cls.getDeclaredMethod("createCriteria");
Method method2 = method.invoke(obj).getclass().getDeclaredMethod("andFieldEqualTo",String.class);
当我运行上面的代码时,出现此错误:
java.lang.NoSuchMethodException:com.oneconnectft.sg.smartdocu.model.UserGroupExample $ Criteria.andFieldEqualTo(java.lang.String)
作为参考,这是MyBatisExample类
package com.example.model;
import java.util.ArrayList;
import java.util.List;
public class MyBatisExample {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
protected String orderByClause;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
protected boolean distinct;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
protected List<Criteria> oredCriteria;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public MyBatisExample() {
oredCriteria = new ArrayList<Criteria>();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public String getOrderByClause() {
return orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public boolean isDistinct() {
return distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getallCriteria() {
return criteria;
}
public List<Criterion> getcriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition,Object value,String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition,value));
}
protected void addCriterion(String condition,Object value1,Object value2,String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition,value1,value2));
}
public Criteria andFieldIsnull() {
addCriterion("field is null");
return (Criteria) this;
}
public Criteria andFieldIsnotNull() {
addCriterion("field is not null");
return (Criteria) this;
}
public Criteria andFieldEqualTo(String value) {
addCriterion("field =",value,"field");
return (Criteria) this;
}
public Criteria andFieldNotEqualTo(String value) {
addCriterion("field <>","field");
return (Criteria) this;
}
public Criteria andFieldGreaterThan(String value) {
addCriterion("field >","field");
return (Criteria) this;
}
public Criteria andFieldGreaterThanOrEqualTo(String value) {
addCriterion("field >=","field");
return (Criteria) this;
}
public Criteria andFieldLessThan(String value) {
addCriterion("field <","field");
return (Criteria) this;
}
public Criteria andFieldLessThanOrEqualTo(String value) {
addCriterion("field <=","field");
return (Criteria) this;
}
public Criteria andFieldLike(String value) {
addCriterion("field like","field");
return (Criteria) this;
}
public Criteria andFieldNotLike(String value) {
addCriterion("field not like","field");
return (Criteria) this;
}
public Criteria andFieldIn(List<String> values) {
addCriterion("field in",values,"field");
return (Criteria) this;
}
public Criteria andFieldNotIn(List<String> values) {
addCriterion("field not in","field");
return (Criteria) this;
}
public Criteria andFieldBetween(String value1,String value2) {
addCriterion("field between",value2,"field");
return (Criteria) this;
}
public Criteria andFieldNotBetween(String value1,String value2) {
addCriterion("field not between","field");
return (Criteria) this;
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated do_not_delete_during_merge Fri Nov 08 16:30:42 CST 2019
*/
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table smrtdocu.MY_BATIS
*
* @mbg.generated Fri Nov 08 16:30:42 CST 2019
*/
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listvalue;
private String typeHandler;
public String getcondition() {
return condition;
}
public Object getvalue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isnoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListvalue() {
return listvalue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition,String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listvalue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition,Object value) {
this(condition,null);
}
protected Criterion(String condition,Object secondValue,String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition,Object secondValue) {
this(condition,secondValue,null);
}
}
}