mapper映射文件,sql 语句中用到两个实体类参数问题

在教务管理系统开发中,遇到Mapper查询时需传入两个实体类参数的问题,导致运行错误。解决方案是在mapper.xml中使用@param注解明确参数名,如:@param(""student"") Student student, @param(""course"") Course course。同时,根据查询结果的不同,选择使用resultType或resultMap。这次经验提醒了在开发中注意参数传递和结果映射的正确使用。" 111974901,10542485,jQuery File Upload插件详细指南,"['前端开发', 'jQuery', '文件上传', '插件', 'JavaScript']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写ssm+shiro的教务管理系统学习过程中,查询某个学生的选课信息,在mapper中同时传入了两个形参:
List<SelectCourse > selectCourseByStudentId(PagingVO pagingVO,SelectCourse selectCourse);
mapper对应的xml为:

 <!--分页查询已选课表-->
    <select id="selectCourseByStudentId" resultMap="SelectCourse">
        select * from select_course
        where student_id = #{studentId} and mark is NULL
        limit #{toPageNo},#{pageSize}
    </select>

结果在运行的时候出现错误:

 Parameter 'studentId' not found. Available parameters are [0, 1, param1, param2]

经过一番排查和百度经验,发现如果mapper中同时传入了两个形参的时候,可以通过@param注解来解决这个问题:

/**
     *分页查询已选课程
     */
    List<SelectCourse > selectCourseByStudentId(@Param("pagingVO")PagingVO pagingVO, @Param("selectCourse")SelectCourse selectCourse);

对应的.xml为:

<!--分页查询已选课表-->
    <select id="selectCourseByStudentId" resultMap="SelectCourse">
        select * from select_course
        where student_id = #{selectCourse.studentId} and mark is NULL
        limit #{pagingVO.toPageNo},#{pagingVO.pageSize}
    </select>

问题得到解决!
另外,要注意resultMap和resultType的使用:当查询结果是一个参数时用resultType,当查询结果为多个参数组成的列表时用resultMap。

2018.8.10 教务管理系统遇到问题!
不忘初心,在实践中学习,在学习中成长!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值