mybatis面试知识点总结

MyBatis 是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架,

MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解(实体和数据库的映射可以在XML中间中,也可以使用注解),将接口和Java的POJOs(Plain Old Java Objects,普通的java对象)映射成数据库中的记录。

一 、MyBatis框架的优点;

    1. 与JDBC 相比,减少了50%以上的代码量

    2. MyBatis 是最简单的持久层框架,小巧并且简单易学。

    3. MyBatis 灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。

    4  提供XML 标签,支持编写动态SQL语句(XML中使用if,else)。

    5. 提供映射标签,支持对象与数据库的ORM字段关系映射(在xml中配置映射关系,也可以使用注解

二、MyBatis框架的缺点:

    1. SQL语句的编写工作量较大,尤其是字段多,关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。

    2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

三 、MyBatis框架适用场合:

    MyBatis专注于Sql本身,是一个灵活的Dao层解决方案。

    对性能要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。


四、#{ } 和 ${ }的区别是什么?

    ${ }是Properties文件的变量占位符,他可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver

    #{ } 是sql的参数占位符,MyBatis会将sql中的#{ }替换为?,在sql执行前会使用PreParedStatementde 的参数设置方法,按序给sql的的?号占位符设置参数值。

五 ResultType和ResultMap的区别

resultMap:主要用于封装已经在其他mybatis的配置文件中已经映射了resultMap的id名称,mybatis会自动根据map中的key去对应映射文件的column属性,直至全部对应完成。

resultType:主要用于封装在JDK中已经存在了的数据类型,例如Map,String,int等,但是注意了。当你需要返回对象的List集合时,需要使用的是ResultMap并将其值设置为你想要存在List中的已经被xml文件映射了的对象。

myBatis在使用select标签查询之后的结果默认是用Map来封装的。其中key是字段名,value是值。所以当你想要直接返回该表的部分字段的时候,你就需要将resultType设置成为HashMap。

六、parameterType 输入参数

       resulType:返回参数

        resultMap 当涉及配置映射关系是 resultMap的名称

七 映射关系

    1. 一对一映射:javaType

<association property="subject"javaType="Subject">

    <id column="sub_id"property="subId"/>

    <result column="sub_type"property="subType"/>

    <result column="sub_time"property="subTime"/>

</association>


2. 一对多映射:ofType

<collection property="classInfoList"ofType="ClassInfo">

    <id    property="classId"column="class_id"/>

    <result property="teaTime"column="tea_time"/>

    <result property="classSess"column="class_sess"/>

    <result property="classHour"column="class_hour"/>

3. 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,866评论 0 4
  • MyBatis 理论篇 [TOC] 什么是MyBatis  MyBatis是支持普通SQL查询,存储过程和高级映射...
    有_味阅读 3,011评论 0 26
  • Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache...
    day_Sunny阅读 2,761评论 0 6
  • 之前在面试工作的时候,我当时用的是hibernate,但是现在互联网项目并发量大,一般都会选择使用Mybatis,...
    唐伟耀阅读 575评论 1 0
  • 现在市面上大多数的膏药,一贴至少 25元,还不一定有祛除风湿,减轻病痛的疗效。 或者你可以用苜蓿膏药,仅需15.8...
    哈伦2019阅读 1,244评论 0 0