理解MyBatis框架的作用和特点

目录

一. 什么是Mybatis

二.使用MyBatis的开发步骤

三.MyBatis与JDBC的对比

 四.MyBatis框架优缺点

优点

缺点

五.MyBatis基本要素

MyBatis的核心对象

六.mapper

七.select

八.总结


一. 什么是Mybatis

(1)Mybatis是一款优秀的持久层框架

(2)它支持定制化SQL、存储过程以及高级映射。

(3)Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

(4)Mybatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Object,普通老式Java对象)为数据库中的记录。

二.使用MyBatis的开发步骤

(1)下载mybatis-3.5.1.jar

(2)将所需jar文件导入工程

(3)编写MyBatis核心配置文件

(4)创建实体类(POJO)

(5)定义DAO层Mapper接口

(6)定义SQL映射文件

(7)创建测试类

         读取MyBatis核心配置文件

         创建SqlSessionFactory实例

         创建SqlSession实例

         创建Mapper实例

         执行SQL映射文件中的SQL语句

三.MyBatis与JDBC的对比

 四.MyBatis框架优缺点

优点

与JDBC相比,减少了50%以上的代码量

最简单的持久化框架,小巧并简单易学

SQL代码从程序代码中彻底分离,可重用

提供XML标签,支持编写动态SQL 提供映射标签,支持对象与数据库的ORM字段映射

缺点

SQL语句编写工作量大,对开发人员有一定要求 数据库移植性差

五.MyBatis基本要素

MyBatis的核心对象

(1)SqlSessionFactoryBuilder

用过即丢,其生命周期只存在于方法体内

负责构建SqlSessionFactory,并提供多个build()方法的重载

// 读取XML文件构造方式
String resource = "mybatis-config.xml";   
InputStream is = Resources.getResourceAsStream(resource);   
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

(2)SqlSessionFactory

SqlSessionFactory是每个MyBatis应用的核心

作用:创建SqlSession实例

生命周期与应用的生命周期相同

单例

存在于整个应用运行时,并且同时只存在一个对象实例

openSession( boolean autoCommit ) //true为开启事务控制,false为关闭事务控制(默认)

(3)SqlSession

包含了执行SQL所需的所有方法

非线程安全,不能共享

对应一次数据库会话,会话结束必须关闭

// 1. 创建SqlSession实例
SqlSession sqlSession = MyBatisUtil.createSqlSession();
try {
    // 2. do work
} finally {
    // 3. 关闭SqlSession
    MyBatisUtil.closeSqlSession(sqlSession);
}

MyBatis核心配置文件

主要元素

configuration        根节点

properties                  描述一些外部的、可替代的属性

配置properties元素的两种方式

1.通过指定外部属性文件(如下)

<properties  resource="database.properties" />

2.直接配置property子节点

<properties>
	<property  name="driver"  value="com.mysql.cj.jdbc.Driver" />
	<property  name="url"  value="jdbc:mysql://127.0.0.1:3306/……" />
	<property  name="user"  value="root" />
	<property  name="password"  value="123456" />
</properties>

settings                      修改MyBatis的运行时行为

用来修改MyBatis运行时的行为方式

主要是MyBatis的一些全局配置属性的设置

typeAliases                为Java类型指定一个别名

类型别名 在SQL映射文件中简化冗长的Java类名

typeHandlers             类型处理器

objectFactory             对象工厂

plugins                       插件

environments             环境配置

可以通过environment子元素节点配置MyBatis的多套运行环境

必须通过default属性指定其中一个为默认运行环境

<environments default="development">
	<environment id="development">
		<transactionManager type="JDBC"/>
		<dataSource type="POOLED">
			<property name="driver" value="${driver}"/>
			<property name="url" value="${url}"/>
			<property name="username" value="${user}"/>
			<property name="password" value="${password}"/>
		</dataSource>
	</environment>
	<environment id="test">
		……
	</environment>
</environments>

 environment                       一组环境配置

transactionManager   事务管理器

语法展示:

<transactionManager type="[ JDBC | MANAGED ]" />

dataSource                 数据源

dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源

有三种内建的数据源类型

 语法展示:

<dataSource type="[UNPOOLED|POOLED|JNDI]" />

databaseIdProvider    启用多数据库厂商支持

mappers                     映射器

SQL映射文件定义SQL语句映射

须在配置中引用SQL映射文件

 方式一:使用类资源路径获取资源

<mappers>
     <mapper  resource="cn/cvs/dao/sysUser/SysUserMapper.xml" />
     ……
</mappers>

 方式二:使用Mapper接口的包路径

<!-- 要求SQL映射文件与Mapper接口位于同一包路径下,并且名称相同 -->
<mappers>
     <package  name="cn.cvs.dao" />
</mappers>

SQL映射文件

MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单

SQL映射文件的几个顶级元素(按照定义的顺序)

mapper - namespace

cache - 配置给定命名空间的缓存

cache-ref – 从其他命名空间引用缓存配置

resultMap –用来描述数据库结果集和对象的对应关系

sql – 可以重用的SQL块,也可以被其他语句引用

insert – 映射插入语句

update – 映射更新语句

delete – 映射删除语句

select – 映射查询语句

六.mapper

MyBatis是一种Java持久化框架,它提供了一种将Java对象映射到关系型数据库的解决方案。Mapper是MyBatis中的一个重要组成部分,它就像是一个DAO(数据访问对象)一样,用于定义SQL语句及其与Java方法的映射关系。

Mapper中包含了一组方法,每个方法都对应着一个SQL语句。这些方法定义了如何访问数据库,以及如何将查询结果映射到Java对象中。Mapper文件通常是XML格式,但也可以使用注解或Java代码的方式定义。

Mapper的作用主要有以下几个方面:

  1. 定义SQL语句:Mapper文件中定义了一组SQL语句,包括查询、插入、更新、删除等操作。

  2. 映射Java对象:Mapper文件中的一个SQL语句通常会返回一组结果,这些结果需要映射到Java对象中。Mapper文件定义了如何将查询结果映射到Java对象中的细节。

  3. 提供可重用的数据访问代码:Mapper文件中定义的SQL语句可以被多个Java方法重用,从而避免了重复编写数据访问代码的问题。

总之,MyBatis中的Mapper是一个非常重要的组件,它定义了如何访问数据库,并将查询结果映射到Java对象中。它能够大幅提高Java应用程序中的数据访问效率。

七.select

MyBatis中的select元素是用来定义SQL查询语句的XML标签,主要用于从数据库中获取数据。该元素的结构如下:

<select id="selectUserById" parameterType="int" resultType="User">
  SELECT * FROM user WHERE id = #{id}
</select>

其中:

  • id:唯一标识符,需要与接口中的方法名对应。
  • parameterType:参数类型,用于指定传入SQL语句的参数类型,可以是Java类或基本数据类型。
  • resultType:结果类型,用于指定返回的结果类型,可以是Java类或基本数据类型。
  • SQL语句:定义实际的SQL查询语句。

在使用select元素时,一般要遵循以下几个步骤:

  1. 定义SQL语句,可以使用占位符#{}来引用参数。
  2. 在mapper文件中使用select元素,传入id、parameterType和resultType等属性。
  3. 在Java代码中使用MyBatis的SqlSession对象执行select语句,传入参数并获取结果。

示例代码如下:

定义SQL语句:

SELECT * FROM user WHERE id = #{id}

在mapper文件中定义select元素:

<select id="selectUserById" parameterType="int" resultType="User">
  SELECT * FROM user WHERE id = #{id}
</select>

在Java代码中执行select语句:

int userId = 1;
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("selectUserById", userId);

以上代码中,根据id查询用户信息,返回一个User对象。

八.总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值