初识MyBatis框架

初始MyBatis框架

在当前市场上,JavaEE(现称为 Jakarta EE)开发有许多主流框架,这些框架能帮助开发者更高效地构建企业级应用程序。

MyBatis

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

  • 它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射,开发者可以灵活地编写 SQL 语句,同时也能方便地将查询结果映射到 Java 对象中。例如,在一个电商系统中,使用 MyBatis 可以方便地实现商品信息的查询和更新操作。

初识框架,“框架”一词起初来自于建筑领域,指的是在建造房屋前期构建的建筑骨架。在编程领域,框架就是应用程序的骨架,开发人员可以在这个骨架上加入自己的东西,搭建出符合自己需求的应用系统

软件框架是一种通用的、可复用的软件环境,它提供特定的功能,促进软件应用、产品和解决方案的开发工作。软件框架会包含支撑程序、编译器、代码、库、工具集以及API,它把所有这些部件汇集在一起,以支持项目或系统的开发。

对比于早期java EE应用开发,使用框架进行开发有以下优势:

        1.提高开发效率:如果采用成熟、稳健的框架,那么一些通用的基础工作,如事务处理、安全性、数据流控制等都可以交给框架处理,程序员只需要集中精力完成系统的业务逻辑设计,降低了开发难度。

        2.提高代码规范性和可维护性:当多人协同进行开发时,代码的规范性和可维护性就变得非常重要。成熟的框架都有严格的代码规范,能保证团队整体的开发风格统一。

         3.提高软件性能:使用框架进行软件开发,可以减少程序中的冗余代码。例如,使用Spring框架开发时,通过Spring的IOC特性,可以将对象之间的依赖关系交给Spring控制,方便解耦,简化开发;使用MyBatis框架开发时,MyBatis提供了XML标签,支持动态的SQL,开发人员无需在类中编写大量的SQL语句,只需要在配置文件中进行配置即可。

MyBatis框架解决了jdbc编程的几个劣势:

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

        解决方案:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。

        问题二:SQL语句在代码中硬编码,造成代码不易维护。在实际应用的开发中,SQL变化的可能较大。在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。

        解决方案:MyBatis将SQL语句配置在MyBatis的映射文件中,实现了与Java代码的分离。

        问题三:使用preparedStatement向占位符传参数存在硬编码,因为SQL语句的where条件不一定,可能多也可能少,修改SQL需要修改代码,造成系统不易维护。

        解决方案:MyBatis自动将Java对象映射至SQL语句,通过Statement中的parameterType定义输入参数的类型。

        问题四:JDBC对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,造成系统不易维护。

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

使用MyBatis框架进行数据库开发之前,需要先搭建MyBatis环境,MyBatis环境搭建主要有如下基本步骤。

        (1)创建工程;

        (2)引入相关依赖;

IDEA默认集成的Maven,所以在第一次引入依赖时,需要在联网状态下进行,且引入依赖需要较长时间,耐心等待到依赖引入完成即可。

        (3)数据库准备;

        (4)编写数据库连接信息配置文件;

         (5)编写核心配置文件和映射文件。

具体步骤请看:我博客Mybatis环境搭架

接下来我们了解一下MyBatis工作原理

  MyBatis框架在操作数据库时,大体经过了8个步骤。下面结合MyBatis工作原理图对每一步流程进行详细讲解,具体如下。

        (1)MyBatis读取核心配置文件mybatis-config.xml:mybatis-config.xml核心配置文件主要配置了MyBatis的运行环境等信息。

        (2)加载映射文件Mapper.xml:Mapper.xml文件即SQL映射文件,该文件配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。

        (3)构造会话工厂:通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory,用于创建SqlSession。

        (4)创建会话对象:由会话工厂SqlSessionFactory创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

         (5)创建执行器:会话对象本身不能直接操作数据库,MyBatis底层定义了一个Executor接口用于操作数据库,执行器会根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责查询缓存地维护。

        (6)封装SQL信息:SqlSession内部通过执行器Executor操作数据库,执行器将待处理的SQL信息封装到MappedStatement对象中。

        (7)操作数据库:根据动态生成的SQL操作数据库。

        (8)输出结果映射:执行SQL语句之后,通过MappedStatement对象将输出结果映射至Java对象中。

### JavaEE企业级应用开发中的MyBatis框架介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。通过消除几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索,MyBatis 可以使用简单的 XML 或注解来配置和映射原始类型、接口和 Java 的 POJO(Plain Old Java Objects, 普通老式 Java 对象),使 Web 应用程序可以更专注于业务逻辑而不是数据访问控制[^2]。 #### MyBatis的核心组件 - **SQL 映射文件**:定义了如何将对象映射到数据库表上的规则。 - **SqlSessionFactoryBuilder**:读取配置并创建 SqlSessionFactory 实例。 - **SqlSessionFactory**:负责创建 SqlSession 实例。 - **SqlSession**:用于执行命令、获取映射器实例和管理事务。 ```java // 创建会话工厂 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 获取会话 try (SqlSession session = sqlSessionFactory.openSession()) { Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101); } ``` #### 配置MyBatis环境 为了初始化 MyBatis,在应用程序启动时需要加载一个全局配置文件 `mybatis-config.xml`。此文件包含了运行所需的全部设置信息,包括连接池大小、事务管理和映射文件的位置等重要属性[^3]。 ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值