zoukankan      html  css  js  c++  java
  • Mybatis 入门

    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将是不错的选择。  

  • 相关阅读:
    应用连接Redis报错处理
    粗谈RESTFul API接口-认识粗谈RESTFul API接口-认识
    策略模式有效解决过多的if-else
    slice的共享内存时需要注意的问题
    swoole中使用wss
    swoole版本和PHP版本的对应关系
    php中关于新引入object的坑
    Java Object Serialization Specification.
    php将索引数组转换成关联数组
    Gson解析json字符串的坑
  • 原文地址:https://www.cnblogs.com/godliwei/p/9197918.html
Copyright © 2011-2022 走看看