记录一下学习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他解析成一个高阶函数了