MyBatis:支持定制化 SQL、存储过程以及高级映射的持久层框架

 ,  ,  , 

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis-logo

安装

  1. 直接导入jar包: 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。
  2. 使用Maven:需将下面的 dependency 代码置于 pom.xml 文件中:

构建 SqlSessionFactory

基于 MyBatis 的应用都是以 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

1、从 XML 中构建 SqlSessionFactory

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。

XML 配置文件简单示例:

2、不使用 XML 构建 SqlSessionFactory

MyBatis 提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。

从 SqlSessionFactory 中获取 SqlSession

既然有了 SqlSessionFactory ,顾名思义,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:

或者:

接下来我们探究一下这里到底是怎么执行的。

探究已映射的 SQL 语句

关于 SqlSession 和 Mapper 到底执行了什么操作。下面是简要介绍,这里会给出几个例子。

在上面提到的两个例子中,一个语句应该是通过 XML 定义,而另外一个则是通过注解定义

通过 XML 定义:

在命名空间“com.mybatis.example.BlogMapper”中定义了一个名为“selectBlog”的映射语句,这样它就允许你使用指定的完全限定名“org.mybatis.example.BlogMapper.selectBlog”来调用映射语句,就像上面的例子中做的那样:

第一个例子:

这个命名可以直接映射到在命名空间中同名的 Mapper 类,并在已映射的 select 语句中的名字、参数和返回类型匹配成方法。这样你就可以向上面那样很容易地调用这个对应 Mapper 接口的方法。

第二个例子:

第二例子有很多优势,首先它不是基于字符串常量的,就会更安全;其次,如果你的 IDE 有代码补全功能,那么你可以在有了已映射 SQL 语句的基础之上利用这个功能。

通过注解定义:

对于像 BlogMapper 这样的映射器类(Mapper class)来说,可以使用 Java 注解。比如,上面的 XML 示例可被替换如下:

选择何种方式以及映射语句的定义的一致性对你来说有多重要这些完全取决于你和你的团队。换句话说,永远不要拘泥于一种方式,你可以很轻松的在基于注解和 XML 的语句映射方式间自由移植和切换。

官方网站:http://mybatis.github.io/mybatis-3/zh/index.html
开源地址:https://github.com/mybatis/mybatis-3

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 2 收藏

资源整理者简介:刘立华

java开发,技术爱好者,乐于助人。 个人主页 · 贡献了32个资源 · 1 ·  


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer