从配置到实例:MyBatis 基础入门

前置说明

本质而言,ORM(Object-Relation Mapping),是一种编程技术,能够实现面向对象编程语言与关系型数据库之间的数据转换(映射)。

MyBatis 即为互联网行业流行的 ORM 框架。在正式开始 MyBatis 之前,我们列出本文涉及的工具和组件,并约定版本:

使用 Gradle,全部的包依赖:

其中:fastjson、lombok作为本文中的辅助工具。

本文中使用 MySQL 作为关系型数据库,基于数据表 keyword 构建案例,keyword 数据表的创建语句:

数据表映射为 Java 对象:

MyBatis 基础结构说明

1

MyBatis 核心组件

MyBatis 核心组件包括:

:构建器,完成构建即应当销毁

:创建的 “工厂”,应用程序中,每一个数据库应当只维护的单例

:作为访问数据库的 “会话”,通常理解为应用程序和数据库的连接,此外,通过能够获取映射器

映射器:由 Java 接口和 XML 文件(或注解)构成,其负责定义参数、SQL、查询结果与对象的映射

1

入门案例

查询数据表中,关键词出价等于 10 元(1000 分)的关键词 Id 集合。涉及的代码包括:

resources/mybatis-config.xml

代码所示,通过文件进行 MyBatis 配置:

定义了 MyBatis 日志形式:输出到控制台

定义了事务管理类型、数据库连接信息(url、username、password)

定义了映射器:

更多关于 MyBatis 配置,请参阅 《MyBatis 的配置、映射器以及动态 SQL》 章节。

resources/com/gitchat/mybatis/KeywordMapper.xml

代码所示,即为映射器的 XML 文件:

通过与映射器的 Java 接口关联

定义查询语句,需要说明,定义的类型,既能够表示查询结果的类型,亦能够表示查询结果作为集合时,集合元素的类型

java/com/gitchat/mybatis/KeywordMapper.java

代码所示,即为映射器的 Java 接口:

方法与映射器 XML 定义的查询语句名称一致

使用注解进行了查询语句定义

映射器的 Java 接口被调用时,XML(或注解)定义的 SQL,即 Prepared Statements 的形式,提交数据库执行(传递 1000L 作为 bid 参数):

需要说明:

通常,不建议使用注解的形式进行 SQL 定义

映射器的 Java 接口,其实现由 MyBatis 基于 “动态代理” 机制,于运行时提供

关于映射器的更多内容,请参阅 《MyBatis 的配置、映射器以及动态 SQL》 章节。

java/com/gitchat/mybatis/Main.java

代码所示:

通过使用配置文件完成创建

通过获得,由 try-with-resource 确保释放

特别说明:提供了、、等接口,能够直接进行数据库查询,然而,使用映射器既能够最大程度地使用 MyBatis 的 ORM,亦能确保良好的编程风格。

配置、映射器以及动态 SQL

1

配置

《MyBatis 基础结构》章节的 “入门案例”,通过 resources/mybatis-config.xml 进行 MyBatis 配置,本章节,我们重点讨论 MyBatis 的配置。

需要说明:MyBatis 的 XML 配置文件,必须符合 mybatis-3-config.dtd 约束。

能够用于承载属性的 “键” - “值”,并于配置文件的上下文中使用,使用方式即为。支持子元素和配置文件引入两种方式。

子元素

子元素的 name 和value,即作为属性的 “键”、“值”。“入门案例” 中,即使用承载了数据库连接信息。

配置文件引入

使用配置文件,例如,数据库连接的配置文件 db.properties:

引入方式:

若出现 “键” 相同的属性,“配置文件” 的属性 “值” 具有更高优先级。

此外,MyBatis 支持以 “参数传递” 的方式设置属性的 “值”(最高优先级),但本文并不推荐使用,因此,不予展开讨论。

即为 MyBatis配置,能够控制 MyBatis 行为。通常而言,不需要关注,保持默认值即可正常运行。

关于中 “配置项” 的完整列表,请参阅:http://www.mybatis.org/mybatis-3/configuration.html#settings。

即为 “别名”:作为名称过长时的 “简单指代”。MyBatis “别名” 区分 “系统定义别名” 和 “自定义别名”。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180508G1UD4Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券