【MyBatis】第一章

第一章、基础理论

1.传统javaEE的缺点

jsp+servlet开发

  • 软件应用和系统可维护性差
  • 代码重用性低
    MyBatis是一个优秀的持久层框架,它可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(Object/Relation Mapping,即对象关系映射)实现。

2. JDBC

JDBC是Java程序实现数据访问的基础,JDBC的劣势主要有以下几个方面。
(1)数据库连接创建、释放频繁会造成系统资源浪费,从而影响系统性能。
(2) SQL语句在代码中硬编码,造成代码不易维护。在实际应用的开发中,SQL变化的可能性较大。在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。
(3)用PreparedStatement向占位符传参数存在硬编码,因为SQL语句的where条件不一定,可能多也可能少,修改SQL需要修改代码,造成系统不易维护。
(4) JDBC对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,造成系统不易维护。

3.持久层

将数据持久化
------------------>
将程序的数据由瞬时状态转化成持久状态

  • 数据库、IO
  • 内存断电即失

持久层

完成持久化工作的代码层块

4.mybatis概念

    MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,
    它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,
    使用简单的XML或注解进行配置和原始映射,将接口和Java的POJO映射成数据库中的记录,
    使得Java开发人员可以使用面向对象的编程思想来操作数据库。

ORM

在这里插入图片描述

Mybatis对jdbc的优化

  1. 问题一:数据库链接创建、释放频繁会造成系统资源浪费,从而影响系统性能。

    解决方案:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。
    
  2. 问题二:SQL语句在代码中硬编码,造成代码不易维护。在实际应用的开发中,SQL变化的可能较大。在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。

    解决方案:MyBatis将SQL语句配置在MyBatis的映射文件中,实现了与Java代码的分离。
    
  3. 问题三:使用preparedStatement向占位符传参数存在硬编码,因为SQL语句的where条件不一定,可能多也可能少,修改SQL需要修改代码,造成系统不易维护。

    解决方案:MyBatis自动将Java对象映射至SQL语句,通过Statement中的parameterType定义输入参数的类型。
    
  4. 问题四:JDBC对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,造成系统不易维护。

    解决方案:MyBatis自动将SQL执行结果映射至Java对象,通过Statement中的resultType定义输出结果的类型。
    

5.MyBatis工作原理

理论

在这里插入图片描述

原理图解析

  1. MyBatis读取mybatis-config.xml文件,获取运行环境环境等信息
  2. 加载映射文件-------Mapper.xml文件,就是SQl语句文件,实现具体的CRUD,需要通过在mybatis-config.xml加载
<mappers>
        <mapper resource="mapper/UserMapper.xml"/>
 </mappers>
  1. 利用mybatis-config.xml等配置信息创建会话工厂,SqlSessionFactory------>SqlSession
  2. Sqlsession对象用法类似于PareStmt,用于执行SQL
  3. MyBatis底层内部创建Executor接口,执行SQL
  4. 操作数据库
  5. 将执行SQL语句的输出结果,通过MappedStatement映射到POJO对象。

代码讲解理论

  1. 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory
    的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从
    XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
SqlSessionFactory sqlMapper = new
                SqlSessionFactoryBuilder().build(reader);

Configuration:

<configuration>
    <properties resource="db.properties"/>
    <!--默认使用id来运行-->
    <environments default="development">
        <environment id="development">
<!--            用jdbc建立事务管理-->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接相关配置 ,db.properties文件中的内容-->
            <dataSource type="POOLED">
                *************
       *********
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值