习题
一、填空题
1.当在MyBaits文件中使用了<bind>元素,在SQL语句中可以直接引用<bind>元素的【 】属性值即可进行动态SQL组装。
2.在使用MyBaits的<foreach>时,如果传入的参数是多个的时候,就需要把它们封装成一个Map了,这时候collection属性值就为Map的【 】。
3.在MyBaits映射文件中使用<set>和<if>元素组合进行update语句动态SQL组装时,如果<set>元素内包含的内容都为空,则会出现【 】。
4.MyBaits中<trim>元素的作用是去除一些特殊的字符串,它的【 】属性代表的是语句的前缀,而prefixOverrides属性代表的是需要去除的哪些特殊字符串。
5.使用<set>和<if>元素相结合的方式来组装update语句时,<set>元素就会动态前置【 】关键字,同时也会消除SQL语句中最后一个多余的【 】。
二、判断题
1.可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给<foreach>作为集合参数。( )
2.在MyBaits映射文件中使用<set>和<if>元素组合进行update语句动态SQL组装时,如果<set>元素内包含的内容都为空,则会出现SQL语法错误。( )
3.MyBaits中对原始SQL中的“where1=1”的条件可以使用<where>与<if>元素组合进行替换。( )
4.在MyBatis中<if>元素用于单条件分支判断,当某个<if>的test属性判断成立,然后跳过其他<if>元素进行动态SQL组装。( )
5.MyBatis中的<foreach>元素可以用于对数组和集合循环遍历,批量执行SQL操作。( )
三、选择题
1.以下不属于<foreach>元素中使用的属性的是。( )
A: separator
B: collection
C: current
D: item
2.以下关于<foreach>元素中使用的几种属性的描述错误的是。( )
A: item:配置的是循环中当前的元素。
B: index:配置的是当前元素在集合的位置下标。
C: collection:配置的是传递过来的参数类型,它可以是一个array、list(或 collection)、Map集合的键、POJO包装类中数组或集合类型的属性名等。
D: separator:配置的是各个元素的间隔符。
3.以下关于MyBatis的<set>元素的使用及说法正确的是。( )
A: <set>元素主要用于更新操作,其主要作用是在动态包含的SQL语句前输出一个SET关键字,并将SQL语句中最后一个多余的逗号去除。
B: 使用MyBatis的<set>元素来更新操作时,前端需要传入所有参数字段,否则未传入字段会默认设置为空。
C: 在映射文件中使用<set>和<if>元素组合进行update语句动态SQL组装时, <set>元素内包含的内容可以都为空,<if>元素会进行判断处理。
D: 在映射文件进行更新操作时,只需要使用<set>元素就可以进行动态SQL组装。
4.以下有关MyBatis动态SQL中的主要元素说法错误的是。( )
A: <if>用于单条件分支判断。
B:<choose>(<when>、<otherwise>)用于多条件分支判断。
C:<foreach>循环语句,常用于in语句等列举条件中。
D: <bind>从OGNL表达式中创建一个变量,并将其绑定到上下文,只于模糊查询的sql中。
5.当有多个选择的情况是,值需要从多个选项中选择一个去执行时,可以使用的动态SQL元素是。( )
A: <if>
B:<choose>、<when>、<otherwise>
C: <when>
D: <set>
四、简答题
1.请简述MyBatis动态SQL中的主要元素及说明。

