当前使用版本(必填,否则不予处理)
3.5.4.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
在SQL中使用${}访问枚举
重现步骤(如果有就写完整)
枚举定义
import com.bhxq.common.enums.BaseEnum;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum CompanyQueryInfoTargetEnum implements BaseEnum<String> {
/**
* 本企业
*/
SELF("SELF", "3,5", "本企业"),
/**
* 所有企业
*/
ALL("ALL", "2,4", "所有企业");
/**
* json传输值
*/
@JsonValue
private final String jsonValue;
/**
* 枚举值
*/
private final String value;
/**
* 枚举描述
*/
private final String desc;
}
import com.baomidou.mybatisplus.annotation.IEnum;
/**
* @author YangAo
*/
public interface BaseEnum<T extends Serializable> extends IEnum<T> {
/**
* 获取枚举值对应的描述
*
* @return 描述
*/
String getDesc();
/**
* 获取枚举值对应的值
*
* @param <V> 值类型
* @param <E> 枚举类型
* @param value 值
* @param enumType 枚举类型的Class
* @return 值
*/
static <V extends Serializable, E extends BaseEnum<V>> E getInstance(V value, Class<E> enumType) {
for (E enumConstant : enumType.getEnumConstants()) {
if (enumConstant.getValue().equals(value)) {
return enumConstant;
}
}
return null;
}
}
SQL语句
```sql
RELEASE_SCOPE in (${queryDTO.publishTarget})
```
期望结果
```sql
RELEASE_SCOPE in (2,3)
```
实际结果
```sql
RELEASE_SCOPE IN (SELF)
```
报错信息
### The error occurred while executing a query
### SQL: SELECT COUNT(*) AS total FROM BHXQ_INFO i LEFT JOIN BHXQ_INFORMATION_TYPE it ON i.INFORMATION_TYPE = it.ID LEFT JOIN BHXQ_INFO_AREA ia ON i.ID = ia.BHXQ_INFO_ID WHERE i.DEL_FLAG = '0' AND i.PUBLISH_STATUS = '5' AND i.PUBLICATION_TYPE = '1' AND (ia.ENTERPRISE_ID IS NULL OR ia.ENTERPRISE_ID = ?) AND RELEASE_SCOPE IN (SELF)
### Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
非法的THIS访问
; 第1 行附近出现错误:
非法的THIS访问; nested exception is dm.jdbc.driver.DMException: 第1 行附近出现错误:
非法的THIS访问]
Comment From: miemieYaho
mybatis就这样的