错题解析
错题分析: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标签