【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
@青苗 我想提点改进的建议
下面这种写法是正确的
User user = mapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, 2));
然鹅,这样写也能通过编译,编译不报错,等到运行就出错了,因为id是数字,不是字符。
User user = mapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, "2"));
问题在于没有对值进行验证,我觉得应该对值加类型限制,方法改为类似于如下这种
eq(Expression<? extends Number> x, Number y);
这样的话如下语句是会报错,无法通过编译的。因为会限制了值只能为age相同的类型。
eq(User::getId, "2");
非常感谢您的建议,实际上这个地方如果写死强类型应用范围变窄了故而不能强制类型