IT虾米网

Mybatis 入门详解

admin 2018年06月19日 编程语言 444 0

1.什么是Mybatis?

  MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录. mybatis提供一种“半自动化”的ORM实现。Mybatis主要业务是实现数据访问层

 

2.如何使用Mybatis?

  1.下载jar包;

  2.导入jar包;

  3.创建数据库连接;

  4.添加mabatis配置文件mybatis.cfg.xml;

    几个常用元素的作用如下:

    1.configuration:配置文件的根元素节点。

    2.properties:通过resource属性从外部制定properties属性文件(database。properties),该属性文件描述数据库连接的相关配置,位置也是再/resource目录下。

    3.settings:设置mybatis运行中的一些行为。

    4.environments:表示配置mybatis的多套运行环境,将SQL映射到多个不同的数据库上,该元素节点下可以配置对各environment子元素节点,但是必须制定其中一个默认运行环境。

    5.environment:配置Mybatis的一套运行环境,需指定运行环境ID,事务管理,数据源配置等相关信息。

    6.mappers:作用是告诉Mybatis去哪里找到SQL映射文件,整个项目中可以有1个或者多个SQL映射文件。

    7.mapper:mappers的子元素节点,具体制定sql映射文件的路径,其中resource属性的值表述了SQL映射文件的路径。

  5.创建对应的实体类

  6.创建方法接口和对应接口的XML配置文件。

  7.创建工具类util 实现获取sqlsession 和关闭sqlsession方法。

  8.编写测试类测试。

 

3.Mybatis的基本要素---核心对象

  》核心接口和类。

  》Mybatis核心配置文件(mybatis-config.xml)。

    mybatis-config.xml的文件结构

    

  》SQL映射文件(mapper.xml)。

    

  (1)每个mybatis的应用程序都以一个SqlsessionFactory对象的实列为核心。

  (2)首先获取SqlsessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实列构建该对象。

  (3)然后获取SqlsessionFactiory对象,该对象实例可以通过SqlsessionFactoryBulider对象来获得。

  (4)有了SqlsessionFactiory对象之后,就可以进而获取Sqlsession实例,Sqlsession对象中完全包含以数据库为背景的所有执行SQL操作的方法,可以用实例来直接执行已映射的SQL语句。

 

4.resultType 和 resultMap

  resultType直接表示返回类型,包括基础数据类型和复杂数据类型。

  resultMap则是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到具体哪一个resultMap上。

 

5.关联关系

  一对一关系:

  比如获取用户角色信息,就需要在javabean中添加一个角色对象,使用多表查询

   实列说明:

  association:映射到javaBean的某个“复杂类型”属性。

  使用association给角色对象进行赋值

  

 

  一对多关系:

  collection元素的作用和association元素的作用差不多一样,事实上,它们非常类似,也是映射捣javabean的某个"复杂类型"属性,只不过这个属性是一个集合列表。

  即JavaBean内部嵌套一个复杂数据类型属性,和使用association元素一样,我们使用嵌套查询,获取从连接中嵌套的结果集。

  示例,用户有多个住址:

  

  Mybatis对resultMap自动映射的三个匹配级别:

  》 NONE:禁止自动匹配。

  》 PARTIAL(默认):自动匹配所有属性,有内部嵌套(association,collection)的除外。

  》 FULL:自动匹配所有。

 

 6.使用动态SQL完成多条件查询

  》if:利用if实现简单的条件选择

  》choose(when,ohterwise):相当于Java中的switch语句,通常与when和otherwise搭配。

  》where:简化SQL语句中where的条件判断

  》set:解决动态更新语句

  》trim:可以灵活的去除多余关键字   

    属性:

      prefix:前缀,作用是通过自动识别是否有返回值后,在trim包含的内容上加上前缀。

      suffix:后缀,作用是在trim包含的内容上加上后缀。

      prefixOverrides:对于trim包含的首部进行指定内容的忽略。

      suffixOverrides:对于trim包含内容的首尾部进行指定内容的忽略。

  》foreach:迭代一个集合,通常用于IN条件

    属性:

      item:表示集合中每一个元素进行迭代时的别名。

      index:指定一个名称,用于表示在迭代过程中,每次迭代到的位置。

      open:表示该语句以什么开始。(如果是in条件语句,以“(”开始)

      separator:表示在每次进行迭代之间以什么符号作为分隔符。(如果是in条件语句,以“,”作为分隔符)

      close:表示该语句以什么结束。(如果是in条件语句,以“)”结束)

      collection:该属性必须指定,不同情况下,该属性的值是不一样的。主要有三种情况:

        若入参为单参数且参数类型是一个List的时候,collection属性值为list。

        若入参为单参数且参数类型是一个数组的时候,collection属性值为array。

        若传入参数为多参数,就需要把它们封装为一个Map进行处理。

 

7.    1)MyBatis框架的优点

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

  (2)MyBatis是最简单的持久化框架,小巧并且简单易学

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

  (4)提供XML标签,支持编写动态SQL语句

  (5)提供映射标签,支持对象与数据库的ORM字段关系映射

  2)MyBatis的缺点

  (1)SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求

  (2)SQL语句依赖与数据库,导致数据库移植性差,不能随意更换数据库

  3)MyBatis框架适用场合

  MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,对性能的要求很高,或者需求变化较多的项目,如互联网项目,那么MyBatis将是不错的选择。  

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

初识MyBatis详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。