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

  • 相关阅读:
    “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
    深入浅出 eBPF 安全项目 Tracee
    Unity3d开发的知名大型游戏案例
    Unity 3D 拥有强大的编辑界面
    Unity 3D物理引擎详解
    Unity 3D图形用户界面及常用控件
    Unity 3D的视图与相应的基础操作方法
    Unity Technologies 公司开发的三维游戏制作引擎——Unity 3D
    重学计算机
    windows cmd用户操作,添加,设备管理员组,允许修改密码
  • 原文地址:https://www.cnblogs.com/godliwei/p/9197918.html
Copyright © 2011-2022 走看看