
MyBatis
文章平均质量分 80
智慧浩海
源码资源仅供个人研究参考学习,不得将内容资源用于商业或者非法用途,否则,一切后果请用户自负,暂不提供安装服务和技术支持。文档资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。
展开
-
MyBatis与Spring的整合实例
下面通过一个实例实现 MyBatis 与。原创 2023-08-24 08:52:05 · 133 阅读 · 0 评论 -
MyBatis与Spring的整合步骤
从之前的代码中可以看出直接使用 MyBatis 框架的 SqlSession 访问数据库并不简便。MyBatis 框架的重点是 SQL 映射文件,为方便后续学习,本节讲解 MyBatis 与的整合。教程的后续讲解中将使用整合后的框架进行演示。原创 2023-08-24 08:51:22 · 132 阅读 · 0 评论 -
MyBatis bind标签
在进行模糊查询时,如果使用“${}”拼接字符串,则无法防止 SQL 注入问题。如果使用字符串拼接函数或连接符号,但不同数据库的拼接函数或连接符号不同。例如的 concat 函数、Oracle 的连接符号“||”,这样 SQL 映射文件就需要根据不同的数据库提供不同的实现,显然比较麻烦,且不利于代码的移植。幸运的是,MyBatis 提供了 元素来解决这一问题。原创 2023-08-23 08:37:44 · 1116 阅读 · 0 评论 -
MyBatis foreach标签
foreach> 元素主要用在构建 in 条件中,它可以在 SQL 语句中迭代一个集合。 元素的属性主要有 item、index、collection、open、separator、close。原创 2023-08-23 08:36:25 · 551 阅读 · 0 评论 -
MyBatis trim、where、set标签
本节主要讲解 MyBatis 动态 Sql 的 trim、where、set 标签。原创 2023-08-22 08:39:49 · 883 阅读 · 0 评论 -
MyBatis choose、when、otherwise标签
有些时候不想用到所有的条件语句,而只想从中择取一二,针对这种情况,MyBatis 提供了 元素,它有点像中的 switch 语句。原创 2023-08-22 08:39:06 · 643 阅读 · 0 评论 -
MyBatis if标签
开发人员通常根据需求手动拼接 SQL 语句,这是一个极其麻烦的工作,而 MyBatis 提供了对 SQL 语句动态组装的功能,恰能解决这一问题。MyBatis 的动态 SQL 元素与 J或 XML 文本处理器相似,常用 、、、、、、、 和 等元素。创建 myBatisDemo03 应用,并将《》的 MyBatis-应用的所有 JAR 包和 src 中所有。原创 2023-08-21 08:54:53 · 263 阅读 · 0 评论 -
多对多关联查询
其实,MyBatis 没有实现多对多级联,这是因为多对多级联可以通过两个一对多级联进行替换。例如,一个订单可以有多种商品,一种商品可以对应多个订单,订单与商品就是多对多的级联关系,使用一个中间表(订单记录表)就可以将多对多级联转换成两个一对多的关系。下面以订单和商品(实现“查询所有订单以及每个订单对应的商品信息”的功能)为例讲解多对多级联查询。原创 2023-08-21 08:54:20 · 163 阅读 · 0 评论 -
一对多关联查询
在《》教程中学习了 MyBatis 如何处理一对一级联查询,那么 MyBatis 又是如何处理一对多级联查询的呢?在实际生活中一对多级联关系有许多,例如一个用户可以有多个订单,而一个订单只属于一个用户。下面以用户和订单之间的关系为例讲解一对多级联查询(实现“根据 uid 查询用户及其关联的订单信息”的功能)的处理过程,读者只需参考该实例即可学会一对多级联查询的 MyBatis 实现。原创 2023-08-21 08:53:42 · 135 阅读 · 0 评论 -
一对一关联查询
一对一级联关系在现实生活中是十分常见的,例如一个大学生只有一张一卡通,一张一卡通只属于一个学生。再如人与身份证的关系也是一对一的级联关系。MyBatis 如何处理一对一级联查询呢?在 MyBatis 中,通过 元素的子元素 处理这种一对一级联关系。在 元素中通常使用以下属性。下面以个人与身份证之间的关系为例讲解一对一级联查询的处理过程,读者只需参考该实例即可学会一对一级联查询的 MyBatis 实现。原创 2023-08-19 08:53:13 · 202 阅读 · 0 评论 -
MyBatis级联查询
如果表 A 中有一个外键引用了表 B 的主键,A 表就是子表,B 表就是父表。当查询表 A 的数据时,通过表 A 的外键将表 B 的相关记录返回,这就是级联查询。例如,当查询一个人的信息时,同时根据外键(身份证号)将他的身份证信息返回。更新和删除的级联关系很简单,由数据库内在机制即可完成。本节只讲述级联查询的相关实现。级联关系是一个数据库实体的概念,有 3 种级联关系,分别是一对一级联、一对多级联以及多对多级联。级联的优点是获取关联数据十分方便,但是级联过多会增加数据库系统的复杂度,同时降低系统的性能。原创 2023-08-19 08:52:18 · 161 阅读 · 0 评论 -
MyBatis resultMap
元素表示结果映射集,是 MyBatis 中最重要也是最强大的元素,主要用来定义映射规则、级联的更新以及定义类型转化器等。原创 2023-08-19 08:51:43 · 179 阅读 · 0 评论 -
insert、update、delete和sql标签
如果在实际工程中使用的数据库不支持主键自动递增(例如 Oracle),或者取消了主键自动递增的规则,可以使用 MyBatis 的 元素来自定义生成主键。具体配置示例代码如下:-- 添加一个用户,#{uname}为 com.mybatis.po.MyUser 的属性值 -->-- 先使用selectKey元素定义主键,然后再定义SQL语句 -->原创 2023-08-18 11:41:26 · 233 阅读 · 0 评论 -
Mybatis select标签
元素用于映射 SQL 的 select 语句,其示例代码如下:--根据uid查询一个用户信息 -->原创 2023-08-18 11:40:55 · 695 阅读 · 0 评论 -
MyBatis environments
在 MyBatis 中,运行环境主要的作用是配置数据库信息,它可以配置多个数据库,一般而言只需要配置其中的一个就可以了。它下面又分为两个可配置的元素:事务管理器(transactionManager)、数据源(dataSource)。在实际的工作中,大部分情况下会采用对数据源和数据库的事务进行管理,这些我们教程后面都会进行讲解。本节我们会探讨 MyBatis 自身实现的类。运行环境配置,代码如下所示。原创 2023-08-16 08:45:36 · 147 阅读 · 0 评论 -
MyBatis ObjectFactory
在默认的情况下,MyBatis 会使用其定义的对象工厂——DefaultObjectFactory(org.apache.ibatis.reflection.factory.DefaultObjectFactory)来完成对应的工作。在大部分的情况下,我们都不需要自定义返回规则,因为这些比较复杂而且容易出错,在更多的情况下,都会考虑继承系统已经实现好的 DefaultObjectFactory ,通过一定的改写来完成我们所需要的工作,如下所示。然后对它进行配置,如下所示。原创 2023-08-16 08:44:42 · 179 阅读 · 0 评论 -
MyBatis BlobTypeHandler读取Blob字段
MyBatis 对数据库的 Blob 字段也进行了支持,它提供了一个 BlobTypeHandler,为了应付更多的场景,它还提供了 ByteArrayTypeHandler,只是它不太常用,这里为读者展示 BlobTypeHandler 的使用方法。在现实中,一次性地将大量数据加载到 JVM 中,会给服务器带来很大压力,所以在更多的时候,应该考虑使用文件流的形式。更多的时候,大型互联网的网站会采用文件服务器的形式,通过更为高速的文件系统操作。加粗的代码,使用了 Blob 字段,用于存入文件。原创 2023-08-16 08:44:08 · 674 阅读 · 0 评论 -
自定义TypeHandler
在一些因为数据库返回为空导致无法断定采用哪个 typeHandler 来处理,而又没有注册对应的 javaType 的 typeHandler 时,MyBatis 无法知道使用哪个 typeHandler 转换数据,我们可以采用这样的方式来确定采用哪个 typeHandler 处理,这样就不会有异常出现了。有时候由于枚举类型很多,系统需要的 typeHandler 也会很多,如果采用配置也会很麻烦,这个时候可以考虑使用包扫描的形式,那么就需要按照以下代码配置了。原创 2023-08-16 08:43:37 · 196 阅读 · 0 评论 -
系统定义的TypeHandler
setParameter 方法,是使用 typeHandler 通过 PreparedStatement 对象进行设置 SQL 参数的时候使用的具体方法,其中 i 是参数在 SQL 的下标,parameter 是参数,jdbcType 是数据库类型。其中有 3 个 getResult 的方法,它的作用是从 JDBC 结果集中获取数据进行转换,要么使用列名(columnName)要么使用下标(columnIndex)获取数据库的数据,其中最后一个 getResult 方法是存储过程专用的。原创 2023-08-15 09:10:54 · 155 阅读 · 0 评论 -
typeHandler类型转换器
系统提供的 typeHandler 能覆盖大部分场景的要求,但是有些情况下是不够的,比如我们有特殊的转换规则,枚举类就是这样。在很多情况下我们并不需要去配置 typeHandler、jdbcType、javaType,因为 MyBatis 会探测应该使用什么类型的 typeHandler 进行处理,但是有些场景无法探测到。对于那些需要使用自定义枚举的场景,或者数据库使用特殊数据类型的场景,可以使用自定义的 typeHandler 去处理类型之间的转换问题。图 1 typeHandler的作用。原创 2023-08-15 09:10:00 · 192 阅读 · 0 评论 -
MyBatis typeAliases
在 MyBatis 的初始化过程中,系统自动初始化了一些别名,如下表所示。别名Java类型是否支持数组_bytebyte是_longlong是_shortshort是_intint是_integerint是_doubledouble是_floatfloat是_booleanboolean是stringString是byteByte是longLong是shortShort是intInteger是integerInteger是doubleDouble是。原创 2023-08-15 09:09:25 · 182 阅读 · 0 评论 -
MyBatis settings
settings 的配置项很多,但是真正用到的不会太多,我们把常用的配置项研究清楚就可以了,比如关于缓存的 cacheEnabled,关于级联的 lazyLoadingEnabled 和 aggressiveLazy Loading,关于自动映射的 autoMappingBehavior 和 mapUnderscoreToCamelCase,关于执行器类型的 defaultExecutorType 等。settings 配置项说明,如表 1 所示。这里给出一个全量的配置样例,如下所示。原创 2023-08-15 09:08:47 · 223 阅读 · 0 评论 -
MyBatis properties
properties 属性可以给系统配置一些运行参数,可以放在 XML 文件或者 properties 文件中,而不是放在编码中,这样的好处在于方便参数修改,而不会引起代码的重新编译。原创 2023-08-14 08:44:59 · 142 阅读 · 0 评论 -
MyBatis配置文件详解
本节的任务是了解 MyBatis 配置项的作用,其中 properties、settings、typeAliases、typeHandler、plugin、environments、mappers 是常用的内容。-- 事务管理器 -->-- 数据源 -->-- 类型处理器 -->-- 环境变量 -->-- 类型命名 -->-- 配置环境 -->-- 映射器 -->原创 2023-08-14 08:44:25 · 110 阅读 · 0 评论 -
第一个MyBatis程序
在创建项目之前,首先在数据库中创建 mybatis 数据库和 user 表,sql 语句如下所示:下面通过一个实例讲解如何使用 MyEclipse 开发 MyBatis 入门程序。原创 2023-08-14 08:43:42 · 94 阅读 · 0 评论 -
MyBatis核心组件的作用域和生命周期
我们已经掌握了 MyBatis 组件的创建及其基本应用,但这是远远不够的,还需要讨论其生命周期。生命周期是组件的重要问题,尤其是在多线程的环境中,比如互联网应用、Socket 请求等,而 MyBatis 也常用于多线程的环境中,错误使用会造成严重的多线程并发问题,为了正确编写 MyBatis 的应用程序,我们需要掌握 MyBatis 组件的生命周期。所谓生命周期就是每一个对象应该存活的时间,比如一些对象一次用完后就要关闭,使它们被。原创 2023-08-14 08:42:44 · 131 阅读 · 0 评论 -
MyBatis SqlSession和Mapper接口执行Sql
本节主要介绍 MyBatis 执行 SQL 语句的两种方式和它们的区别。原创 2023-08-12 08:57:34 · 241 阅读 · 0 评论 -
Mybatis实现映射器的2种方式
映射器是 MyBatis 中最重要、最复杂的组件,它由一个接口和对应的 XML 文件(或注解)组成。本节阐述两种实现映射器的方式,XML 文件形式和注解形式。不过在此之前,先用以下 SQL 语句创建 role 表。并且定义一个 POJO,它十分简单,如下所示。映射器的主要作用就是将 SQL 查询到的结果映射为一个 POJO,或者将 POJO 的数据插入到数据库中,并定义一些关于缓存等的重要内容。注意,开发只是一个接口,而不是一个实现类。原创 2023-08-12 08:56:50 · 488 阅读 · 0 评论 -
MyBatis SqlSession
因为它代表着一个数据库的连接资源,使用后要及时关闭它,如果不关闭,那么数据库的连接资源就会很快被耗费光,整个系统就会陷入瘫痪状态,所以用 finally 语句保证其顺利关闭。注意,SqlSession 只是一个门面接口,它有很多方法,可以直接发送 SQL。它就好像一家软件公司的商务人员,是一个门面,而实际干活的是软件工程师。先来掌握它的创建方法,有了 SqlSessionFactory 创建的 SqlSession 就十分简单了,如下所示。SqlSession 控制数据库事务的方法,如下所示。原创 2023-08-12 08:56:02 · 247 阅读 · 0 评论 -
MyBatis SqlSessionFactory
使用 MyBatis 首先是使用配置或者代码去生产 SqlSessionFactory,而 MyBatis 提供了构造器 SqlSessionFactoryBuilder。它提供了一个类 org.apache.ibatis.session.Configuration 作为引导,采用的是 Builder 模式。具体的分步则是在 Configuration 类里面完成的,当然会有很多内容,包括你很感兴趣的插件。原创 2023-08-12 08:55:16 · 220 阅读 · 0 评论 -
MyBatis的核心组件
在现有的技术中,一般我们会让其在业务逻辑代码中“消失”,而使用的是 MyBatis 提供的 SQL Mapper 接口编程技术,它能提高代码的可读性和可维护性。1)SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成 SqlSessionFactory,采用的是分步构建的 Builder 模式。我们先来看 MyBatis 的“表面现象”——组件,并且讨论它们的作用,然后讨论它们的实现原理。4)SQL Mapper(映射器):MyBatis 新设计存在的组件,它由一个。原创 2023-08-11 08:35:26 · 240 阅读 · 0 评论 -
MyBatis的工作原理
在讲解 MyBatis 工作原理之前,先来了解一下 MyBatis 的下载。教程中使用 MyBatis 3.4.5 作为本教程的实践环境,也希望读者下载该版本,以便于学习。MyBatis 的版本可以通过“”网址下载。在下载时只需选择 mybatis-3.4.5.zip 即可,解压后得到如图 1 所示的目录。图 1 MyBatis 的目录。原创 2023-08-11 08:34:04 · 101 阅读 · 0 评论 -
MyBatis是什么
在移动互联网时代,MyBatis 成为了目前互联网持久框架的首选。MyBatis 本是 Apache 的一个开源项目——iBatis,2010 年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis。MyBatis 是一个基于 Java 的持久层框架。原创 2023-08-11 08:33:33 · 126 阅读 · 0 评论