关于mapper的疑问

关于mapper的疑问

为什么如下mapper不需要Users的构造函数,只要UsersDAO的findById函数传递id参数就可以了

<select id="findById" resultType="com.damu.entity.Users">
    select * from users where id = #{id};
</select>

但是下面的mapper却需要通过Users构造函数传递id呢

<select id="findUsers" resultType="com.damu.entity.Users">
    select * from users
    <if test="id != null">
        where id = #{id}
    </if>
</select>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
吃吃吃鱼的猫 2019-05-12 18:58:20

同学你好,mapper中的#{id}是一个int类型的变量,如图所示,通过selectOne方法调用mapper中的findById方法,并传入一个int类型的id参数。这里的参数与类型有关,与名称无关。

http://img1.sycdn.imooc.com//climg/5cd7fba50001d69b10180342.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-05-12 17:05:25

同学你好,在findById方法中,只需要传入int类型的id,对id进行判断就可以找到相应的数据。所以不需要Users的构造方法。

findUsers方法,需要传递带有id的Users对象,在方法中取出对象中的id进行判断,所以需要加入带有id的构造方法。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 慕盖茨80918386 #1
    谢谢,还有一个疑问,findById的mapper中的参数名称#{id}与函数public Users findById(Integer id) 中的形参名称id有什么关系,我这边测试它们名称不同,程序也可以正常运行
    2019-05-12 17:24:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师