存储过程与高级查询专题测试
考察知识点
- 存储过程调用:
statementType="CALLABLE"的正确使用、JDBC 标准{CALL ...}语法、注解方式调用存储过程 - 输入输出参数:
mode=IN/OUT/INOUT参数模式的区别与使用场景、jdbcType在 OUT 参数中的必要性、参数回写机制 - 游标结果处理:REF_CURSOR 类型在不同数据库下的差异、游标参数的
mode=OUT配置、游标结果集与 resultMap 的配合使用 - 复杂查询封装:数据库视图的应用场景、
<sql>与<include>复用查询片段、嵌套<resultMap>处理一对多关系、延迟加载与 N+1 问题
1
单选题
在 MyBatis 中调用 MySQL 存储过程 calc_bonus(IN emp_id INT, OUT bonus DECIMAL),以下哪种 Mapper XML 配置是错误的?
2
多选题
在 MyBatis 中调用存储过程时,关于异常处理和事务管理,以下哪些说法是正确的?
3
多选题
在 MyBatis 中调用带有输入输出参数的存储过程时,关于参数配置的以下说法哪些是正确的?
4
填空题
在 MyBatis Mapper XML 中调用存储过程 sp_get_user_stats(IN user_id INT, OUT total_orders INT, OUT total_amount DECIMAL),补全以下配置中的空白部分:
XML
<select id="getUserStats" statementType="________" parameterType="map">
{CALL sp_get_user_stats(
#{userId,mode=______},
#{totalOrders,mode=______,jdbcType=_______},
#{totalAmount,mode=______,jdbcType=_______}
)}
</select>
5
单选题
在 MyBatis 中调用存储过程时,mode=INOUT 参数与 mode=OUT 参数的核心区别是什么?
6
多选题
在 MyBatis 中处理存储过程返回的游标(REF_CURSOR)结果集时,以下哪些做法是正确的?
7
判断题
在 MyBatis 中,不同数据库的游标类型名称不同(如 Oracle 使用 CURSOR,PostgreSQL 使用 REF_CURSOR,MySQL 不直接支持游标输出参数),因此需要在 Mapper XML 中针对不同的数据库使用不同的 jdbcType 值,否则存储过程调用会失败。这种说法是否正确?
8
多选题
在 MyBatis 中封装复杂查询(如多表 JOIN、子查询、动态条件组合)时,以下哪些策略是推荐的?
9
填空题
在 MyBatis 中,以下查询返回用户及其订单信息(一对多关系),补全 resultMap 配置中的空白部分:
XML
<resultMap id="userOrderMap" type="User">
<id property="id" column="user_id"/>
<result property="name" column="user_name"/>
<__________ property="orders" ofType="Order"
column="user_id"
select="____________________"/>
</resultMap>
<select id="selectUsers" resultMap="____________">
SELECT u.id AS user_id, u.name AS user_name
FROM users u
</select>
<select id="____________________" resultType="Order">
SELECT id, amount, create_time
FROM orders
WHERE user_id = _________
</select>
📝 发现内容有误?点击此处直接编辑
想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析
长按或扫描二维码,立即体验