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他解析成一个高阶函数了