关于传参用new Users(id)的问题
为什么用findById的时候没有问题,调整到findAll的时候就需要new一个对象呢
6
收起
正在回答 回答被采纳积分+1
5回答
chrismorgen
2018-10-15 16:48:55
因为之前是直接传一个id进行查询,到findAll的时候,改为动态sql拼接了,之所以之前没报错是因为之前的代码逻辑符合MyBatis的设计规则,如果加上下图标记的代码,MyBatis会去Integer这个类中寻找id的getter方法,所以会报错,之所以回去Integer类中去寻找getter方法,是因为id在Users类中定义为Integer类型的,所以MyBatis会去Integer类中寻找getter方法,故而报错,为了解决这个报错,可以new Users(id),通过传递一个Users对象,MyBatis会去Users对象中通过getter方法来获取id的值,所以不会报错,祝学习愉快~
chrismorgen
2018-10-15 14:05:37
是这样的,如果只传一个id,或者一个参数,会造成写好多类似重复的sql语句,因为mybatis提供动态语句查询,所以当有多个查询参数时,我们就可以传递一个Users对象,然后从Users对象的属性中判断查询条件,从而来拼写动态sql,譬如下图这样,可以说,传一个Users对象是为了更好解决sql语句拼接的问题,如果还有哪里不明白,同学可以继续提问,祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
Java数据库开发与实战应用2018版
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星