上海油压工作室

mybatis面试题及答案

时间:2022-05-10 18:21:16 面试技巧 我要投稿
  • 相关推荐

mybatis面试题及答案

上海油压工作室  求职者如果想在求职MyBatis中力挫群雄,找到一份称心如意的工作,就必须要做好求职前的准备。下面阳光网小编精心整理了一些mybatis面试题及答案的例文,希望可以帮到你!

mybatis面试题及答案

  mybatis面试题及答案(一)

  1.讲下MyBatis和Hibernate的区别?

上海油压工作室  MyBatis是JDBC的轻量级封装,把Sql和java代码独立出来,性能相对比较高,写SQL语句相对于比较灵活,并且容易调试,一般用在大型项目中.

  Hibernate是JDBC的重量级封装,开发速度比较快,但是性能比较低,调试不方便,一般适合对进度要求的比较高的中小型项目

上海油压工作室  2.什么是MyBatis的接口绑定,有什么好处

  接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,

  这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置.

  3.接口绑定有几种实现方式,分别是怎么实现的?

上海油压工作室  接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select @Update等注解里面包含Sql语句来绑定,另外一种就是通过xml里面写SQL来绑定,在这种情况下,

上海油压工作室  要指定xml映射文件里面的.namespace必须为接口的全路径名.

  4.什么情况下用注解绑定,什么情况下用xml绑定

上海油压工作室  当Sql语句比较简单时候,用注解绑定,当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多

上海油压工作室  5.MyBatis实现一对一有几种方式?具体怎么操作的

上海油压工作室  有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置association节点配置一对一的类就可以完成;

  嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表的查询通过select属性配置

  mybatis面试题及答案(二)

  1.如果要查询的表名和返回的实体Bean对象不一致,那你是怎么处理的?

上海油压工作室  在MyBatis里面最主要最灵活的的一个映射对象的ResultMap,在它里面可以映射键值对, 默认里面有id节点,result节点,它可以映射表里面的列名和对象里面的字段名. 并且在一对一,一对多的`情况下结果集也一定要用ResultMap

  2.MyBatis里面的动态Sql是怎么设定的?用什么语法?

上海油压工作室  MyBatis里面的动态Sql一般是通过if节点来实现,通过OGNL语法来实现,但是如果要写的完整,必须配合where,trim节点,

  where节点是判断包含节点有内容就插入where,否则不插入,trim节点是用来判断如果

上海油压工作室  动态语句是以and 或or开始,那么会自动把这个and或者or取掉

  3.MyBatis在核心处理类叫什么

上海油压工作室  MyBatis里面的核心处理类叫做SqlSession

  4.IBatis和MyBatis在细节上的不同有哪些

上海油压工作室  在sql里面变量命名有原来的#变量# 变成了#{变量} 原来的$变量$变成了${变量}, 原来在sql节点里面的class都换名字交type

  原来的queryForObject queryForList 变成了selectOne selectList

上海油压工作室  原来的别名设置在映射文件里面放在了核心配置文件里

上海油压工作室  5.讲下MyBatis的缓存

上海油压工作室  MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,

  默认是打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置

  mybatis面试题及答案(三)

上海油压工作室  一.MyBatis(IBatis)的好处是什么

  ibatis把sql语句从Java源程序中独立出来,放在单独的XML文件中编写,给程序的维护带来了很大便利。

上海油压工作室  ibatis封装了底层JDBC API的调用细节,并能自动将结果集转换成Java Bean对象,大大简化了Java数据库编程的重复工作。

  因为Ibatis需要程序员自己去编写sql语句,程序员可以结合数据库自身的特点灵活控制sql语句,

  因此能够实现比hibernate等全自动orm框架更高的'查询效率,能够完成复杂查询。 ###12.MyBatis里面怎么处理分页

  用插件分页

  二.MyBatis里面怎么样获得刚插入的主键

  把节点的useGeneratedKeys=true设置先生成主键,然后keyProperty="id",把生成的主键指向属性.

上海油压工作室  三、如何获取自动生成的(主)键值?

   方法总是返回一个int值 - 这个值代表的是插入的行数。而自动生成的键值在

上海油压工作室  方法执行完后可以被设置到传入的参数对象中。

  示例:

  01.< id="Name" useGeneratedKeys="true" keyProperty="id">

上海油压工作室  02.  into names (name) values (#{name})

  03.</>

  01.Name name = new Name();

  02.name.setName("Fred");

  03.

  04.int rows = mapper.Name(name);

上海油压工作室  05.// 完成后,id已经被设置到对象中

  06.System.out.println("rows ed = " + rows);

  07.System.out.println("generated key value = " + name.getId());

上海油压工作室  四、在mapper中如何传递多个参数?

  Java的反射机制并不能让框架获取到参数的名字(方法签名中只有参数类型,可以说是为了优化,也可以说设计就是如此,总之名字无意义), 所以MyBatis默认的命名为: param1,param2……

上海油压工作室  如果想给他们指定名称,可以使用 @param注解:

上海油压工作室  01.importorg.apache.ibatis.annotations.Param;

上海油压工作室  02.public interface UserMapper {

  03. User selectUser(@Param("username") String username,

  04. @Param("hashedPassword") String hashedPassword);

  05.}

  然后,就可以在xml像下面这样使用(推荐封装为一个Map,作为单个参数传递给Mapper): 01.

  02. select id, username, hashedPassword

上海油压工作室  03. from some_table

上海油压工作室  04. where username = #{username}

上海油压工作室  05. andhashedPassword = #{hashedPassword}

  06.

【mybatis面试题及答案】相关文章:

过期面包与难民情景面试题解析及答案04-20

微软的面试题11-18

面试题的妙答11-17

实习经历与面试题11-22

面试题的考查点11-18

Zappos的面试题目11-18

硅谷的趣味面试题11-17

副职竞聘的面试题11-16

服从意识的面试题11-17

公司面试题解析11-18