IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java Mybatis 03 -> 正文阅读

[Java知识库]Java Mybatis 03

3.1 配置解析


在这里插入图片描述


3.2 environments 的讲解

environments 指的是 环境的集合。即 使用 mybatis 之前,你需要 提供一个 环境 给它。然后 它根据这个 环境配置,去 初始化,再去执行。

那么 environments 里面 就可以 包含多个 environment !

我们可能对数据库 会有 不同的 方案操作,那么 这里 其实也就体现了 mybatis 的一个好处。那就是 不同的 需求方案,我们可以 在 这个 配置文件里 直接 写 进去。只要 它们是 单独的 每个 environment 就可以了。这样的方式 是很方便的,而且 结构非常的清晰。

在这里插入图片描述
然后 你选择 当前 要 执行的 方案,只需要 修改 <environments default="方案的名字 or 环境的名字">在这里插入图片描述
当然 SqlSessionFactory 的实例 只能选择一个 环境被创建出来,所以 我们 可以 通过 传参的方式,来 指定 环境,创建 SqlSessionFactory 。

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);

我们 还可以 通过 再创建 一个 xml 配置文件的方式,来 进行 这个 xml 文件的 读取,再创建一个 SqlSessionFactory 也能达到目的


3.2.1 transactionManager 事务管理者

在 MyBatis 中 有两种 类型的 事务管理器,JDBC||MANAGED

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。 然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。


3.2.2 dataSource 数据源

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

大多数 MyBatis 应用程序会按示例中的例子来配置数据源。虽然数据源配置是可选的,但如果要启用延迟加载特性,就必须配置数据源。 有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI`]")

UNPOOLED: 就是没有 连接池子,每次 请求 都会 正常的 打开 和 关闭 连接。虽然 有点儿 慢,但 对于 那些 数据库 连接 性能 要求不是很高的。一些 简单的应用 来说,使用 该配置会更好些。它会让你配置最基本的 五个属性:

在这里插入图片描述

POOLED: 这种数据源 实现 利用 池 的概念,将 JDBC 连接对象 组织起来,避免了 创建 新的 连接实例时 所必需 的 初始化和 认证时间,这种 处理方式 是 很流行的,能使得 并发 Web 应用 快速响应 请求。

它除了 上述的 基本属性以外,还有 自己专属的 很多属性。

在这里插入图片描述

JNDI: 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。这种数据源配置只需要两个属性:

在这里插入图片描述


3.3 properties 属性

我们 可以通过 properties 属性 来实现 引用 配置文件。

这些属性 都是 可外部配置 且 能够动态替换的,即可以 在 典型的 Java 属性 文件种 配置,也可以 通过 properties 里面的 属性 来传递参数。

  • db.properties
driver = "com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username = root
password = 123123

properties 属性,在 我们的 mybatis 配置文件中,是 必须 在 第一个位置的。xml 文件 是可以 规定 标签顺序的,这个一定要 有所了解!
在这里插入图片描述
在这里插入图片描述

<!--  引入 外部配置文件  -->
    <properties resource="db.properties">
<!--   这里是 可以 在这 设置 properties 的 属性 和 属性值,而且优先级 要高于 文件里 提前写好的属性-->
        <property name="" value=""/>
    </properties>

在 property 里面设置的属性,优先级 是要高于 提前在 文件里 写好的属性的。所以 一旦 有 重复名 的属性,它 也会 优先选择 在 property 里设置的。


4.1 类型别名 typeAliases

类型别名 是 能够 为 Java 类型 设置一个 短的 名字的。存在的意义仅仅是 用来 减少 完全限定名 的 冗余。

说白了就是,Java 的一些对象类型,太tm 长了,每次写 都太费劲了,那我们 还不如 起个 别名,就跟 C 语言的 define 差不多,然后 你只要 调用这个 别名,就相当于是 调用了 原先的那个名字。

  • 一个 一个 类型的 去起 别名的方式
    <typeAliases>
        <typeAlias type="com.muquanyu.pojo.User" alias="User"></typeAlias>
    </typeAliases>
  • 指定一个 包名,然后 起别名,这个 别名 怎么 起呢?我们学过 注解 和反射吧,我们是不是 可以 读取到 一个类的 类注解。那么 当我们 读取到 有一个 注解 @Alias(“别名”) 的时候,我们 这个别名,就会自动设置为 @Alias 的注解值。
    <typeAliases>
<!--        <typeAlias type="com.muquanyu.pojo.User" alias="User"></typeAlias>-->
    <package name="com.muquanyu.pojo"/>
    </typeAliases>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
之前 讲 万能 Map 的时候,我们 用的 类型是 map,其实 就是用到了 别名机制,只是 mybatis 默认 把 Map 的别名设置为了 小写的 map。

注意点:如果 没有设定 该 注解,那么 就会 有个 默认值。所以 这里一定要注意,可能会 报错。


5.1 设置 settings

设置这东西,没有人 去背它。其实很多东西,真的不需要背。你只要 知道 它在哪里能查到,你 怎么样 能够 实现功能 就行了。
在这里插入图片描述
在这里插入图片描述

如果 想提高性能,这俩 配置可以看看。

在这里插入图片描述
在这里插入图片描述
数据库的 列名,大多数 都是 写成 last_Name 这样的形式的。因为之前 Oracle 数据库,会把 列名 全部转为大写,可读性 极差,导致 一大部分程序员 都习惯了 用 下划线,甚至 很多 新生程序员,都把这个 下划线 字段名,当作是一种 规范约束。所以 大多数 列名 都是 有下划线的。在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:11:09  更:2022-04-27 11:11:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:31:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码