Mybatis动态SQL习题练习

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属性需要注意的几点。

答案:

  1. 如果传入的是单参数且参数类型是一个数组或者List的时候,collection属性值分别为array和list(或collection); 2. 如果传入的参数是多个的时候,就需要把它们封装成一个Map了,当然单参数也可以封装成Map集合,这时候collection属性值就为Map的键。 3. 如果传入的参数是POJO包装类的时候,collection属性值就为该包装类中需要进行遍历的数组或集合的属性名。

老师布置的练习作业,有错误欢迎大家指出

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天一个秃顶小技巧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值