• 互联网轻量级框架SSM-查缺补漏第三天


      简言:平安夜,继续慵懒的学习。我真的是不喜欢学习···

      第三章认识MyBatis核心组件

    3.1 持久层的概念和MyBatis的特点

      持久层:可以将业务数据存储带磁盘,具有长期存储的能力。一般执行持久任务的都是数据库系统。

      书中作者认为Mybatis成功的重要3点

    • 不屏蔽SQL,意味着可以精确的定位SQL语句,并可以对其进行优化和改造,有利于互联网系统性能的提高。
    • 提供强大、灵活的映射机制,方便Java开发者使用。
    • 提供Mapper的接口编程,只要一个接口和一个XML就能创建映射器,进一步简化我们的工作

    3.3MyBatis的核心组件

      MyBatis的核心组件四部分组成:注:红色部分为其生命周期

    • SqlSessionFactoryBuilder(构造器):它会根据配置或代码来生成SqlSessionFactory,采用分布构建Builder模式。

        SqlSessionFactoryBuilder的作用在于创建SqlSessionFactory,创建成功后SqlSessionFactoryBuilder就失去了作用,所以它只能存在与创建SqlSessionFactory的方法中,而不要长期存在。

    • SqlsessionFactory(工厂接口):SqlSession的唯一作用就是生产MyBatis的核心接口对象SqlSession,使用的是工厂模式。由两种方式构造SqlSessionFactory,一种是通过配置MyBatis的基本信息的XML文件,然后再通过XML构建SqlSessionFactory,另一种是直接采用Java代码的形式创建。

        SqlSessionFactory可以被认为是一个数据库连接池,它的作用是创建SqlSession接口对象。所以一旦创建了SqlSessionFactory,就要长期保存它,直至不在使用MyBatis应用,所以可以认为SqlSessionFactory的生命周期等同于MyBatis的应用周期。

    • SqlSession(会话):在MyBatis中,SqlSession是其核心接口。在MyBatis中有两个实现类,DefaultSqlSession(单线程时使用)和SqlSessionManager(多线程时使用)。SqlSession相当于JDBC中的Connection(数据库连接池中的一条数据连接),代表着一个连接资源的启用。它既可以发送SQL执行返回结果(不推荐用),也可以获取Mapper的接口。

        你可以在一个事物里面执行多条SQL,然后通过它的commit、rollback等方法,提交或者回滚事务。所以它应该存活在一个业务请求中,处理完整个请求后, 应该关闭这条连接,让它归还给SqlSessionFactory。

    • SQL Mapper(映射器):MyBatis新设计存在的组件,有一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则。它负责SQL去执行并返回结果。它可以用XML的方式进行映射或者注解的形式

        Mapper是一个接口,它由SqlSession说创建,所以它的最大生命周期至多和SqlSession保持一致,尽管它很好用,但是由于SqlSession的生命周期至多和SqlSession保持一致,尽管它很好用,但是由于SqlSession的关闭,它的数据库连接资源也会消失,所以它的生命周期应该小于等于SqlSession的生命周期。

      第四章MyBatis配置

      properties 属性

      properties属性可以给系统配置一些运行参数。有三种方式让我们使用properties:

    • property子元素
    • properties文件
    • 程序代码传递(利用properties对象读取properties文件中信息)

      三种方式的优先级

      程序传递 > properties文件 > property子元素 (优先级高的会覆盖优先级低的配置)

      settings设置

      能影响MyBatis底层的运行,但是大部分情况使用默认值就可以运行。很重要,但是太多了,用的时候查查把,记不住记不住···

      typeAliases别名

      类的全限定名称太长,需要大量使用的时候,就可以定义一个别名。除了配置文件中配置,也可以使用TypeAliasRegistry的registerAlias方法注册别名。一般通过Configuration.getTypeAliasRegustry()获取TypeAliasRegistry类对象。起别名的时候不要重复命名,导致出现其他问题

      XML中配置自定义的别名时,可以用typeAlias子标签去定义一个类的别名。也可以用package子标签去扫描整个包的类。并用其类名不区分大小写的方式作为别名。

  • 相关阅读:
    为Docker容器配置固定IP
    Docker CPU 资源限制——CPU分片功能测试
    Centos7下用命令下载jdk7及jboss-eap-6
    Docker CPU 资源限制——CPU固定核功能测试
    更改MySQL数据文件目录位置
    Linux下资源利用率监测利器—nmon使用
    图示-Centos7完整安装
    Photoshop图层混合模式计算公式大全
    HMC5883L地磁传感器驱动
    ADXL345加速度传感器驱动
  • 原文地址:https://www.cnblogs.com/shiboinfo/p/10169964.html
Copyright © 2020-2023  润新知