Mybatis动态SQL习题练习
选择题
1.SQL语句中,where后直接跟and,这在运行时肯定会报()错误。
A.SQL语法
B.无效字符
C.参数异常
D.MySQL版本
答案:A
2.当有多个选择的情况是,值需要从多个选项中选择一个去执行时,可以使用的动态SQL元素是()
A. <if>
B .<choose>、<when>、<otherwise>
C.<when>
D.<set>
答案:B
3.以下不属于<foreach>
元素中使用的属性的是()
A.separator
B.collection
C.current
D.item
答案:C
4.以下关于<foreach>
元素中使用的几种属性的描述错误的是()
A.item:配置的是循环中当前的元素
B.index:配置的是当前元素在集合的位置下标
C.collection:配置的是传递过来的参数类型,它可以是一个array、list(或collection)、Map集合的键、POJO包装类中数组或集合类型的属性名等
D.separator:配置的是各个元素的间隔符
答案:C
5.以下关于MyBatis的<set>
元素的使用及说法正确的是()
A <set>
元素主要用于更新操作,其主要作用是在动态包含的SQL语句前输出一个SET关键字,并将SQL语句中最后一个多余的逗号去除
B.使用MyBatis的<set>
元素来更新操作时,前端需要传入所有参数字段,否则未传入字段会默认设置为空
C.在映射文件中使用<set>
和<if>
元素组合进行update语句动态SQL组装时, <set>
元素内包含的内容可以都为空,<if>
元素会进行判断处理
D.在映射文件进行更新操作时,只需要使用<set>
元素就可以进行动态SQL组装
答案:A
6.以下有关MyBatis动态SQL中的主要元素说法错误的是()
A.<if>
用于单条件分支判断
B.<choose>(<when>、<otherwise>)
用于多条件分支判断
C.<foreach>
循环语句,常用于in语句等列举条件中
D.<bind>
从OGNL表达式中创建一个变量,并将其绑定到上下文,只于模糊查询的sql中
7.MyBatis动态SQL中的主要元素包含有()。
A.<if>
B.<trim>
C.<set>
D. <bind>
答案:ABCD
8.以下关于MyBatis动态SQL中<trim>
元素<where>
元素说法错误的是()
A.使用<where>
元素替换条件“where 1=1”后,既保证了where后面的条件成立,又避免了where后面第一个词是and或者or之类的关键词
B.使用<where>
元素对“where 1=1”条件进行了替换,只用当<where>
元素的test属性成立才会在拼接SQL中加入where关键字,否则将不会添加
C.<trim>
元素和<where>
元素功能相同,都是对对“where 1=1”条件进行替换,并去除多余字符
D.以上说法都正确
答案:BCD
10.关于<if>
元素的使用及说法正确的是()
A.在MyBatis中,<if>
元素是最常用的判断语句,它类似于Java中的if语句,主要用于实现某些简单的多条件分支判断
B.使用<if>
元素的test属性可以对传入参数进行条件判断,如果传入的条件成立就进行动态SQL组装
C.<if>
元素可以出现多个
D.以上说法都正确
答案:BC
判断题
1.MyBatis动态SQL中<trim>
元素就是为了去除组装的SQL语句中第一个多余的and或or。
A 正确
B 错误
答案:B
2.使用了<choose>
元素进行SQL拼接,只要<when>
元素中的条件为真,就会进行组装。
A 正确
B 错误
答案:B
3.在使用<if>
元素时,只要test属性中的表达式为true,就会执行元素中的条件语句。
A 正确
B 错误
答案:A
4.可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给<foreach>
作为集合参数()。
A 正确
B 错误
答案:A
5.在MyBaits映射文件中使用<set>
和<if>
元素组合进行update语句动态SQL组装时,如果<set>
元素内包含的内容都为空,则会出现SQL语法错误()。
A 正确
B 错误
答案:A
6.MyBaits中对原始SQL中的“where 1=1”的条件可以使用<where>
与<if>
元素组合进行替换()。
A 正确
B 错误
答案:A
7.MyBaits中<trim>
元素的作用是去除一些特殊的字符串,它的prefix属性代表的是语句的前缀,而prefixOverrides属性代表的是需要去除的哪些特殊字符串()。
A 正确
B 错误
答案:A
8.MyBaits中的<choose>、<when>、<otherwise>
元素用于多条件分支判断,当<when>
元素中的条件为真,就进行动态组装<when>
元素内的SQL片段,以此类推()。
A 正确
B 错误
答案:B
9.在MyBatis中<if>
元素用于单条件分支判断,当某个<if>
的test属性判断成立,然后跳过其他<if>
元素进行动态SQL组装()。
A 正确
B 错误
答案:B
10.在MyBatis中<if>
元素用于单条件分支判断,当某个<if>
的test属性判断成立,然后跳过其他<if>
元素进行动态SQL组装()。
A 正确
B 错误
答案:B
11.<bind>
元素中value的属性值就是拼接的查询字符串,即必须与传递的参数变量名一致,如username()
A 正确
B 错误
答案:B
12.MyBatis提供了<bind>
元素可以解决模糊查询时SQL注入问题,且不会影响数据库移植()
A 正确
B 错误
答案:A
13.当前端传递参数名为ids的封装id的集合参数时,<foreach>
元素的collection属性值需要跟参数名ids对应()
A 正确
B 错误
答案:B
14.MyBatis中的<foreach>
元素可以用于对数组和集合循环遍历,批量执行SQL操作()
A 正确
B 错误
答案:A
15.使用MyBatis的<set>
元素来更新操作时,前端需要传入所有参数字段,否则未传入字段会默认设置为空()
A 正确
B 错误
答案:B
16.在MyBatis中,<if>
元素是最常用的判断语句,它类似于Java中的if语句,主要用于实现某些简单的条件选择()
A 正确
B 错误
答案:A
简答题
1.请简述MyBatis动态SQL中的主要元素及说明。
MyBatis动态SQL中的主要元素及说明如下:
答案:<if>
:判断语句,用于单条件分支判断;
<choose>(<when>、<otherwise>)
:相当于Java中的switch…case…default语句,用于多条件分支判断; <where>、<trim>、<set>
:辅助元素,用于处理一些SQL拼装、特殊字符问题;
<foreach>
:循环语句,常用于in语句等列举条件中;
<bind>
:从OGNL表达式中创建一个变量,并将其绑定到上下文,常用于模糊查询的sql中。
2.请简述MyBaits映射文件中<bind>
元素的使用。
答案:
先使用<bind>
元素的name属性定义一个变量,<bind>
元素中value的属性值就是拼接的查询字符串,如username;然后在SQL语句中,直接引用<bind>
元素的name属性值即可进行动态SQL组装。
3.请简述在使用<foreach>
时,collection属性需要注意的几点。
答案:
- 如果传入的是单参数且参数类型是一个数组或者List的时候,collection属性值分别为array和list(或collection); 2. 如果传入的参数是多个的时候,就需要把它们封装成一个Map了,当然单参数也可以封装成Map集合,这时候collection属性值就为Map的键。 3. 如果传入的参数是POJO包装类的时候,collection属性值就为该包装类中需要进行遍历的数组或集合的属性名。
老师布置的练习作业,有错误欢迎大家指出