下面要给大家分享的是mybatis缓存面试题,那么一般mybatis面试题都有哪些内容呢?有哪些面试题是经常会问到的?下面一起来看看吧。
面试题
1、mybatis是什么?
答案:mybatis是一个半ORM框架,内部封装了JDBC,开发的时候,只要关注SQL语句/java/post/854.html本身,不要花费多余的精力去处理加载驱动、创建连接、创建statement等过程。
直接编写原生态sql,能够严格控制sql执行性能,灵活度高。
关于mybatis是什么的内容,大家可以通过以下的文章来进行更加详细的了解-mybatis原理都有哪些?mybatis是什么?
2、mybatis的优点有哪些?MyBatis框架的缺点有哪些?
答案:优点:基于SQL语句编程,非常的灵活,不会对应用程序或者是数据库的现有设计造成影响,SQL写在XML里面,解除sql和程序代码的耦合,有助于统一管理;提供XML标签,支持编写动态SQL语句,并可重用;和JDBC比较起来,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要去手动开关连接;可以很好的和各种数据库兼容;可以很好的和Spring集成;提供映射标签,支持对象和数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
缺点:编写工作量大,SQL语句依赖于数据库,数据库移植性差,不可以随意的去更换数据库。
3、MyBatis和Hibernate的区别有哪些?
答案:不完全是一个ORM框架;Mybatis直接编写原生态sql,能够严格控制sql执行性能,灵活度高,但是,假如要实现支持多种数据库的软件,那么就要自定义多套sql映射文件,工作量比较大;Hibernate对象和关系映射能力强,数据库无关性好,对于关系模型要求高的软件,假如要用hibernate开发,能够节省很多的代码,提高效率。
4、#{}和${}的有什么区别?
答案:#{}是预编译处理,${}是字符串替换;Mybatis在处理#{}的时候,会把sql当中的#{}替换成为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}的时候,会将${}替换成变量的值;使用#{}能够有效的防止SQL注入,提高系统安全性。
5、怎样批量插入?
创建一个insert语句
<insert id=”insertname”> 2 insert into names (name) values (#{value}) 3 </insert>
在java代码中执行批处理插入
list < string > names = new arraylist(); names.add(“fred”); names.add(“barney”); names.add(“betty”); names.add(“wilma”); // 注意这里 executortype.batch sqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch); try { namemapper mapper = sqlsession.getmapper(namemapper.class); for (string name: names) { mapper.insertname(name); } sqlsession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); throw e; } finally { sqlsession.close(); }
推荐阅读:mybatis批量插入数据如何实现?实现方式有哪些?
6、mybatis动态sql有什么用?执行原理是什么?有哪些动态sql?
答案:能够在Xml映射文件当中,用标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断并动态拼接sql的功能;提供了九种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。
7、ybatis是半自动ORM映射工具为什么要这样说?和全自动的区别是什么?
答案:Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者是关联集合对象的时候,能够依据对象关系模型直接获取,所以说,它是全自动的;而Mybatis在查询关联对象或关联集合对象的时候,则要手动编写sql来完成,所以,就叫做半自动ORM映射工具。
mybatis面试题就暂时给大家分享到这里了,还想了解更多的面试题,可以继续通过奇Q工具网的面试题栏目来了解。
推荐阅读: