错题解析

 

   错题分析:Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL,因此选项C是正确的

 

 

   resource里的属性,路径不是点出来的,而是  cn/bdqn/dao/U...

 

       1 没有else        2when元素的test属性中直接书写表达式即可,即test=”表达式”。

     选择 D  此题考查MyBatis对于增删改查的配置,选项d误把parameterType写成了resultType,parameterType表示参数配置而resultType表示返回值配置

 

 一般SqlSession实例不提倡定义为一个类的静态变量,只因为SqlSession是线程不安全,实例不能共享的;而SqlSessionFactory实例建议定义为静态变量。

 

 为什么不选A,因为Hibernate是典型的ORM(Object Relational Mapping对象关系映射)框架。 为什么不选B,因为Mybatis是ORM框架。 为什么不选C,因为EclipseLink是ORM框架。

  就是  例如 List<String>  String就是集合中的类型  resultType就写String

   Column属性设置关联的主键列,用于嵌套查询SQL语句传入参数

SqlSessionFactoryBuilder因为可以直接实例化,并且创建SqlSessionFactory之后就销毁,因此它是方法范围,SqlSessionFactory应该在应用运行期间都存在,不能频繁销毁和创建,因此它是应用范围,SqlSession是线程不安全的,不同线程之间不能共享使用,因此d不正确

Mybatis的特点就是功能相对简单时,性能很高,所以非常适合Mybatis,C描述说不适合Mybatis

使用collection, javaBean里的属性不是普通属性,而是一个集合,那么property:指的是User这个POJO里的属性名(addressList)

ofType:指的是addressList这个list里面存放的是:Address对象,result的column对应的sql语句中的字段名(这里起了个别名:a_id)

   全局二级缓存默认是开启的

 resultType表示从该语句中返回的期望类型的类的完全限定名或别名,resultType=”Integer” 其中Integer不是别名,别名是integer,映射类型是java.lang.Integer

  

 

嵌套查询(select) 方式才会产生n+1问题,嵌套查询,你执行了一个单独的 SQL 语句来获取结果列表(就是“+1”) ,

对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是“N”)。推荐使用关联的嵌套结果方式。

  useGeneratedKeys:允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,默认值为false,其他设置项都默认值为true

     在mybatis-config.xml中加入 <setting name="logImpl" value="STDOUT_LOGGING"/> 可以在控制台打印sql语句。

组合使用的不是if、else标签而是when、otherwise标签

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/LWLDD/p/8528821.html