当前位置:首页 > 技术分析 > 正文内容

大数据:MyBatis,玩数据库必不可少的组件


一.Mybatis介绍

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

二.Mybatis的优缺点

优点:

简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

提供映射标签,支持对象与数据库的orm字段关系映射

提供对象关系映射标签,支持对象关系组建维护

提供xml标签,支持编写动态sql。

缺点:

编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

三.Mybatis的核心配置

1、properties 元素

这个元素通常用来将内部的配置外在化,即通过外部的配置来动态的替换内部定义的属性。

2、settings 元素

settings 元素的作用是设置一些非常重要的设置选项,用于设置和改变 MyBatis 运行中的行为,比如此处设置 MyBatis 的 log 日志实现为 LOG4J,即使用 log4j 实现日志功能。

3.typeAliases

该元素用于为配置文件中的Java类型设置一个简短的名字,即设置别名。别名的设置与XML配置相关,其使用的意义在于减少全限定类名的冗余。

<typeAliases>

<typeAlias alias="user" type="com.itheima.po.User"/>

</typeAliases>

也可以这样(这样的话,在domain.blog目录想的javaBean的别名为首字母小写的类名)

<typeAliases>

<package name="domain.blog"/>

</typeAliases>

以上配置,可以让我们在映射文件中,简写parameterType、resultType。MyBatis 框架还默认为许多常见的 Java类型(如数值、字符串、曰期和集合等)提供了相应的类型别名。

4.typeHandler元素

typeHandler的作用就是将预处理语句中传入的参数从javaType(Java类型)转换为jdbcType(JDBC类型),或者从数据库取出结果时将jdbcType转换为javaType。
<typeHandler>元素可以在配置文件中注册自定义的类型处理器,它的使用方式有两种。
4.1.注册一个类的类型处理器

<typeHandlers>

<typeHandler handler="com.itheima.type.CustomtypeHandler" />

</typeHandlers>

4.2注册一个包中所有的类型处理器

<typeHandlers>

<package name="com.itheima.type" />

</typeHandlers>

5 .ObjectFactory元素

MyBatis中默认的ObjectFactory的作用是实例化目标类,它既可以通过默认构造方法实例化,也可以在参数映射存在的时候通过参数构造方法来实例化。通常使用默认的ObjectFactory即可。当然,也可以自定义ObjectFactory。

6.plugins元素

MyBatis允许在已映射语句执行过程中的某一点进行拦截调用,这种拦截调用是通过插件来实现的。元素的作用就是配置用户所开发的插件。
如果用户想要进行插件开发,必须要先了解其内部运行原理,因为在试图修改或重写已有方法的行为时,很可能会破坏MyBatis原有的核心模块。
只需了解元素的作用即可,有兴趣的读者可以查找官方文档等资料自行学习。

7、environments 元素

表示配置 MyBatis 的多套运行环境,MyBatis 可以配置多套运行环境,如开发环境、测试环境、生产环境等,我们可以灵活选择不同的配置,从而将 SQL 映射应用到不同的数据库环境上。这些不同的运行环境,就可以通过 environments 元素来配置。environments 元素节点下通过配置多个 environment 子元素节点,实现配置多套运行环境,但是不管增加几套运行环境,都必须要明确选择出当前的唯一一个运行环境(即默认运行环境:通过 default 指定)。这是因为毎个数据库都是对应一个 SqlSessionFactorγ 实例的,需要指明哪个运行环境将被创建,并把运行环境中设置的参数传递给 SqlSessionFactoryBuilder。

注意点:

1、默认的运行 ID :通过 default 属性来指定当前的运行环境 ID 为 development ,对于环境 ID 的命名要确保唯一。

2、transactionManager 事务管理器,设置其类型为 JDBC(MyBatis 有两种事务管理类型,即JDBC、MANAGED),直接使用 JDBC 的提交和回滚功能,依赖于从数据源获得连接来管理事务的生命周期。

3、dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。 MyBatis 提供了三种数据源类型(UNPOOLED、POOLED、JNDI),这里我们使用 POOLED 数据源类型。该类型的实现利用 “池” 的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间,是 MyBatis 实现的简单的数据库连接池类型,它使数据库连接可被复用,不必在每次请求时都去创建一个物理连接。这对于高并发的 Web 应用是一种流行的处理方式,有利于快速响应请求。

8. mappers

该元素用于指定MyBatis映射文件的位置。有4种方式指定映射器文件的位置:

1. 使用类路径引入

<mappers>

<mapper resource="com/itheima/mapper/UserMapper.xml"/>

</mappers>

1. 使用本地文件路径引入

<mappers>

<mapper url="file:///D:/com/itheima/mapper/UserMapper.xml"/>

</mappers>

1. 使用接口类引入

<mappers>

<mapper class="com.itheima.mapper.UserMapper"/>

</mappers>

1. 使用包名引入

<mappers>

<package name="com.itheima.mapper"/>

</mappers>

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4653.html

分享给朋友:

“大数据:MyBatis,玩数据库必不可少的组件” 的相关文章

宽带客户收费管理系统--维修版

宽带客户收费管理系统--维修版headerfooter《宽带客户收费管理系统——维修版》是一款适合宽带运营商使用的管理系统。软件主要包括以下功能:1.主要功能包括用户开户、收费录入、工单登记、故障处理;2.自定义套餐及收费功能;3.强大的查询功能和数据备份功能以及严密的用户权限功能;4.界面设计简洁...

Linux发行版Debian推出12.2及11.8版本,修复多个安全问题

IT之家 10 月 9 日消息,Debian 是最古老的 GNU / Linux 发行版之一,也是许多其他基于 Linux 的操作系统的基础,包括 Ubuntu、Kali、MX 和树莓派 OS 等,近日 Debian 推出了 12.2 和 11.8 版本,主要修复了多个安全问题。▲ 图源 Debia...

vue3中父子传值、defineProps用法、defineEmits用法

Vue3中新增了一个 script setup 语法糖模式,可以在单文件组件中更简洁地编写组件逻辑。使用 script setup 语法后,props、data、computed、methods 等选项不再需要独立定义,而是可以直接在 setup 函数中声明,代码结构更加清晰,并且可以更方便地使用响...

学会使用Vue JSX,一车老干妈都是你的

作者:子君转发链接:https://mp.weixin.qq.com/s/eAOivpHeowLShfwPfW8-BA?君自前端来,应知前端事。需求时时变,bug改不完。?连续几篇文章,每篇都有女神,被老铁给吐槽了,今天不提了女神了,反正女神都是别人的(扎心了)。这两天小编看了腾讯与老干妈的事情,晚...

面试被逼疯:聊聊Python Import System?

面试官一个小时逼疯面试者:聊聊Python Import System?对于每一位Python开发者来说,import这个关键字是再熟悉不过了,无论是我们引用官方库还是三方库,都可以通过import xxx的形式来导入。可能很多人认为这只是Python的一个最基础的常识之一,似乎没有可以扩展的点了,...

抖音 Android 性能优化系列:启动优化实践

启动性能是 APP 使用体验的门面,启动过程耗时较长很可能使用户削减使用 APP 的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向...