第二次分班考试之 ---纠错19/25题

.

1.

B选项正确,那么a就是错误的。a选项中的配置文件是全局的配置文件,应该配置和具体的mapper无关的信息。

 

2.正确答案:

D

才是开启二级缓存的开关

3.

D选项错误,应该是:通过environments元素的default属性来指定默认的运行环境ID,这个运行环境ID必须是一个已经定义好的运行环境ID

 

节点名称就是resultMap,type属性的值就是映射的类型。

 

 

题目考查的是使用@Param注解实现多参数入参。 为什么不选择B、C、D,因为可以用@Param注解、Map作为函数参数、#{参数位置索引}等几种方式实现传递多个参数,因此B、C、D选项都不对。 因此答案选择A

 

typeAliases此属性定义一个全局的别名,那么就不能定义在Mapper.xml文件中。所以也不能推断某个Mapper.xml中有一个resultMap属性值为blog。

 

MyBatis的缓存全局开关默认是true;在Mapper XML文件中,默认是关闭缓存的;Mabatis支持对个别查询单独设置缓存

 

 

 typeAliasesPackage:它一般对应实体类所在的包,这个时候会自动取对应包中不包括包名的简单类名作为包括包名的别名,此配置是可选的,因此这里选择d

 

 

 此题考查对MyBatis相关配置文件的理解记忆程度,cacheEnabled 用来设置启用或禁用缓存,defaultStatementTimeout 用来设置全局超时时间,defaultExecutorType用来配置默认执行器,lazyLoadingEnabled用来设置启用或禁用延迟加载

 

 

答案A 由于<需要在XML中转义,所以将运行出错。 答案B可以使用hashmap动态获得参数,所以是正确的 答案C 可以使用hashmap,所以答案是错误的 答案D mybatis使用resultType会自动将结果转换成List集合,所以答案是错误的 综上所述答案是AB

 

 

 

 

 

B选项的格式是正确的

 

 

 

 #{ids}表示占位符,主要用来防止SQL注入,这里假如是#{ids},则表示in (?),那么当我们传入一个”1,2,3”时,将会变成in (“1,2,3“),这与我们想要的结果in(1,2,3)不符,而使用${ids}则可以完美解决此问题

 

B选项当title不为null时1=1和title = #{title}之间没有AND连接同样会有运行时异常

 

SqlSessionDaoSupport和SqlSessionTemplate最终都会使用动态代理器(SqlSessionProxy)来执行SQL,代理器内部会getSqlSession和closeSqlSession,所以AB均不会产生线程安全问题,C本身就正确

 

posted @ 2017-07-24 12:30  liuzhe01  阅读(232)  评论(0编辑  收藏  举报