开发者学堂课程【MyBatis持久层框架入门:配置文件解析 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/21/detail/443
配置文件解析
内容简介:
一、Mybatis 基础
二、基本的 crud 操作
三、配置文件解析以及配置优化
一、Mybatis 基础
MyBatis 本是 apache 一个开源项目 iBatis ,2010年,这个项目由 apache software foundation 迁移到了 Google code ,并且改名为 MyBatis。
2013年11月迁移到 Github。iBATIS 一词来源于 internet 和 abati s组合,是一个基于 java 的持久层框架, Ibatis 提供的持久层框架包括 SQL Maps 和 Data Access Object。
持久层指的是完成持久化工作的代码。Mybetis 是基于 java 的持久层框架。Mybetis 就是帮助程序员将数据存入数据库中,从数据库中取出数据。
完成持久层代码块的就是 dao , Mybati 就是帮助程序员将数据存入到数据库中和从数据库中取出数据。
二、基本的 crud 操作
1.搭建 mybatis 框架
a.导入相关 ja r包
b.编写核心配置文件。配置数据库连接的相关信息以及配置了 Mapper 映射文件,所谓的映射文件,就是查询了数据库sql语句的映射。
c.编写 mapper 映射文件
d.编写实体类
c.编写 dao 进行测试
d.编写 mapper 映射文件
e.编写实体类
2.Crud实现内容
Mybatis cfg xml
User mapper xml文件
User java
调用 dao 进行测试
三、配置文件解析以及配置优化
1.mybatis cfg.cxml
通过这个文件获得一个 sql session factory,本身来说就是一个核心配置文件,所有操作都是从 factory 中出发。
Configuration 是根标签,指的配置信息,在其中有较多操作。Environments 指的是 mybatis 可以配置多个环境,Default 指向默认的环境,也就是模式。
模式和环境可以配置很多个,每个环境都能创建对应的 Sqlsessionfactory 。
首先读取配置文件,通过 builder 创建对象,调用的是文件,就会出现默认的Environments 和 properties。
查看构造方法在 configuration 里面,jdbc 等会全部被加载进来。
每一个 sql session factory 对应一个环境 environment,Id 是唯一的。存在一个事务管理,事务管理分为两种,一种是 jdbc,一种是 managed。
Jdbc 指的就是 gdbc 的事物,Managed 就是自己管理的事务,也就是自己管理事务的操作。
Jdbc 这个配置直接使用 jdbc 的提交和回滚功能,它依赖于从数据源获得连接来管理事务的生命周期,Managed 这个配置基本上什么都不做,他从不提交或回滚一个连接的失误,而是让容器来管理事务的生命周期,默认情况下它会关闭连接,但是一些容器并不会如此,因此如果您通过关闭连接来停止事物,将属性 close connection 设置为 false。
pooled 指的是连接词,Data source 元素使用标准的 gdpc 数据源接口来配制 jdbc 连接对象元。
大部分 my bet is 应用,都像上面例子那样,配置一个数据源,但这不是必需的,需要认清的是,只有使用了延迟加载,才需要数据源。
My bet is 内置了三种数据源类型。此操作就是之前做 jdbc 的操作。
对于 java 来说,不能直接鉴别行连接,所以每次打开关闭的操作是很费时间的。形象关系如下
每次关闭连接耗费时间且浪费资源,需要通过系统资源来连接,并且建立连接,服务器这一块并不是马上建立。
如果有其他应用需要建立连接,就需要排队。如果一个服务器只支持在线人数1000人,但如果因特殊情况,连接的人数增加,服务器支撑不了超过1000人数,服务器会很慢,就会崩。
所以这种操作十分不安全。连接的越多,消耗的资源越大,解决方法就是重启,重启对于一个正在运行的服务器,这是致命的操作。所以现在可以创建一个池子,提前和数据库建立好许多连接,当有一个用户需要连接,先找池子,直接连接池子后,可以直接连接服务器就使用,不需要自己再建立文件。
创建连接和连接资源的时间缩短。
当超过最大连接数,就开始排队,但超过连接之后的人不是不能访问,但至少可以满足有1000人可以访问连接,虽然支持1000人,但远远不止于1000人。
因为连好之后,另外一些人可以取得数据,下一次需要时直接取就可以。时间相对较短,不是无限取连接。所以很少采用 unpooled 这种方法。
Pooled 这个数据源的实现缓存了 jdbc 连接对象,用于避免每次创建新的数据库连接时都初始化和进行认证,加快程序响应,并发 web 应用通常通过这种做法来快速获得响应。
另外除了上面 unpooled 的属性外,对于普利的数据源还有很多属性可以设置。例如相应的连接数字,等待时间等等。
Jndi 这个数据源的配置是为了准备与向 spring 或应用服务器能够在外部或者内部配置数据源的容器一起使用,然后再 gndi 上下文中引用它,这个数据源只需配置两个属性。
一个是 initial context,另外一个是 data source。也是采用数据源的形式去取得。
Mapper 指的就是现在,hyEatis 的行为属性都已经在上面的配置元素中配置好了,接下来开始定义映射 SQL 语句。
但首先,我们需要告诉XyBatit在哪里能够找到我们定义的映射 SOL 语句。
在这方面,JAVA自动发现没有提供好的方法,因此最好的方法是告诉划 MyBatia 在哪里能够找到这些映射文件。您可以使用类资源路径或者 URL(包括file:///URLs)。
所以说 mapper 其实就是映射 sql 语句,映射的文件可能会有多个,以上为关于mybatis 配置文件相关的作用。
2.Mapper文件
Namespace 的意思就是命名空间。Java 内的分包管理是为了防止命名重复,此处的命名空间也是为了防止Sql语句的id重复。
Namespace 命名对应实体类的包名加类名或是包名加 Mapper 文件名。
Id 在该文件中唯一,只有唯一才能找到语句。查找用户只根据 id 去找。
Parametertype 指的是 Sql 语句参数类型。Resulttype 指的是返回结果类型。
Use generatedkeys=''true'' 使用自增主键。