kotlin使用mybatis plus lambdaQuery报错
记录一下学习kotlin中遇到的问题
报错
### Error querying database.
Cause: org.apache.ibatis.builder.BuilderException:
Error evaluating expression
'ew.sqlSegment != null and ew.sqlSegment != '''.
Cause: org.apache.ibatis.ognl.OgnlException:
sqlSegment [org.apache.ibatis.reflection.ReflectionException:
Error parsing property name 'querySingleAnnualIncomeBudget$lambda$2'. Didn't start with 'is', 'get' or 'set'.]
先把我的实体类贴一下
data class AnnualIncomeBudget(@TableId(type = IdType.ASSIGN_ID)var id: Long? = null,@ApiModelProperty("年份")var year: @NotNull(message = "[年份]不能为空") Int? = null,@ApiModelProperty("年初总收入预算金额")var totalBudget: @NotNull(message = "[年初总收入预算金额]不能为空") BigDecimal? = null,@ApiModelProperty("剩余开票额度")var remainingBudget: @NotNull(message = "[剩余开票额度]不能为空") BigDecimal? = null,@ApiModelProperty("创建时间")var createTime: @NotNull(message = "[创建时间]不能为空") LocalDateTime? = null,@ApiModelProperty("更新时间")var updateTime: @NotNull(message = "[更新时间]不能为空") LocalDateTime? = null,
)
然后时查询, 很简单
override fun querySingleAnnualIncomeBudget(year: Int): AnnualIncomeBudget? {return getOne(Wrappers.lambdaQuery<AnnualIncomeBudget>().eq(AnnualIncomeBudget::year, year))
}
直接贴解决方案
override fun querySingleAnnualIncomeBudget(year: Int): AnnualIncomeBudget? {return getOne(Wrappers.query<AnnualIncomeBudget>().eq(AnnualIncomeBudget::year.name, year))
}
放弃lambdaQuery改用query, lambdaquery最终还是会转换成string类型
Kotlin这里AnnualIncomeBudget::year他解析成一个高阶函数了