<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=MyBatis</id>
	<title>MyBatis - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=MyBatis"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=MyBatis&amp;action=history"/>
	<updated>2026-07-18T19:58:55Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=MyBatis&amp;diff=2349408&amp;oldid=prev</id>
		<title>imported&gt;Cewbot：​清理跨語言連結增删改查成為內部連結:編輯摘要的紅色連結經繁簡轉換後存在，非bot錯誤編輯 (本次機械人作業已完成32.8%)</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=MyBatis&amp;diff=2349408&amp;oldid=prev"/>
		<updated>2025-02-02T17:50:08Z</updated>

		<summary type="html">&lt;p&gt;清理跨語言連結&lt;a href=&quot;/index.php?title=%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%A5&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;增删改查（页面不存在）&quot;&gt;增删改查&lt;/a&gt;成為內部連結:編輯摘要的紅色連結經繁簡轉換後存在，非bot錯誤編輯 (本次機械人作業已完成32.8%)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|1=zh-tw:程式碼;zh-cn:代码;&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Software&lt;br /&gt;
| name                   = MyBatis &lt;br /&gt;
| logo                   = &lt;br /&gt;
| screenshot             = &lt;br /&gt;
| caption                = &lt;br /&gt;
| developer              = MyBatis团队&lt;br /&gt;
| status                 = 活跃&lt;br /&gt;
| latest release version = 3.5.11&lt;br /&gt;
| latest release date    = {{Start date and age|2022|09|18}}&lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| operating system       = [[跨平台]]&lt;br /&gt;
| programming language   = [[Java]]&lt;br /&gt;
| genre                  = [[持久化框架]]&lt;br /&gt;
| license                = [[Apache许可证]] 2.0&lt;br /&gt;
| website                = https://mybatis.org/mybatis-3/zh_CN/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MyBatis&amp;#039;&amp;#039;&amp;#039;是一个[[Java]][[持久化框架]]，它通过[[XML]]描述符或注解把[[对象 (计算机科学)|对象]]与[[存储过程]]或[[SQL]]语句关联起来，映射成資料庫內對應的紀錄。{{R|:0|p=226}}&lt;br /&gt;
&lt;br /&gt;
MyBatis是在[[Apache许可证]] 2.0下分发的[[自由软件]]，是[[iBATIS]] 3.0的[[复刻_(软件工程)|分支版本]]，其维护团队也包含[[iBATIS]]的初创成员。&amp;lt;ref&amp;gt;{{Cite web |title=iBATIS Home |url=https://ibatis.apache.org/ |accessdate=2020-11-11 |work=ibatis.apache.org |archive-date=2020-07-11 |archive-url=https://web.archive.org/web/20200711001947/http://ibatis.apache.org/ |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==功能概况==&lt;br /&gt;
&lt;br /&gt;
与其他[[对象关系映射]]框架不同，MyBatis没有将[[Java]][[对象 (计算机科学)|对象]]与[[数据库]]表关联起来，而是将Java方法与[[SQL]]语句关联。MyBatis允许用户充分利用[[数据库]]的各种功能，例如存储过程、[[视图]]、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作，或者要完全控制SQL的执行，MyBatis是一个不错的选择。&lt;br /&gt;
&lt;br /&gt;
与[[JDBC]]相比，MyBatis简化了相关代码：SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎，声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言，或者使用[[Apache Velocity]]集成的插件，SQL语句可以被动态的生成。&lt;br /&gt;
&lt;br /&gt;
MyBatis与[[Spring Framework]]和{{tsl|en|Google Guice}}集成，这使开发者免于依赖性问题。&lt;br /&gt;
&lt;br /&gt;
MyBatis支持声明式数据缓存（declarative data caching）。当一条SQL语句被标记为“可缓存”后，首次执行它时从数据库取得的所有数据会被存储在一段[[高速缓存]]中，今后执行这条语句时就会从高速缓存中读取结果，而不是再次命中数据库。MyBatis提供了基于 Java HashMap 的默认缓存实现，以及用于与{{tsl|en|OSCache}}、{{tsl|en|Ehcache}}、{{tsl|en|Hazelcast}}和[[Memcached]]连接的默认连接器。MyBatis还提供[[API]]供其他缓存实现使用。&lt;br /&gt;
&lt;br /&gt;
==用法==&lt;br /&gt;
[[SQL]]语句存储在[[XML]]文件或[[Java 注解]]中。一个MyBatis映射的示例（其中用到了[[接口 (Java)|Java接口]]和MyBatis[[Java 注解|注解]]）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package org.mybatis.example;&lt;br /&gt;
&lt;br /&gt;
public interface BlogMapper {&lt;br /&gt;
    @Select(&amp;quot;select * from Blog where id = #{id}&amp;quot;)&lt;br /&gt;
    Blog selectBlog(int id);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
执行的示例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
BlogMapper mapper = session.getMapper(BlogMapper.class);&lt;br /&gt;
Blog blog = mapper.selectBlog(101);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SQL]]语句和映射也可以外化到一个XML文件中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE mapper PUBLIC &amp;quot;-//mybatis.org//DTD Mapper 3.0//EN&amp;quot; &amp;quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mapper namespace=&amp;quot;org.mybatis.example.BlogMapper&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;select id=&amp;quot;selectBlog&amp;quot; parameterType=&amp;quot;int&amp;quot; resultType=&amp;quot;Blog&amp;quot;&amp;gt;&lt;br /&gt;
        select * from Blog where id = #{id}&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;/mapper&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
也可以使用MyBatis API执行语句：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Blog blog = session.selectOne(&amp;quot;org.mybatis.example.BlogMapper.selectBlog&amp;quot;, 101);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
详细信息可以参考MyBatis网站所提供的用户手册。参见外部链接。&lt;br /&gt;
&lt;br /&gt;
==与Spring集成==&lt;br /&gt;
MyBatis与[[Spring Framework]]集成。Spring Framework允许MyBatis参与Spring事务，建立了MyBatis映射器和会话，并把他们注入到其他[[JavaBeans|bean]]中。&lt;br /&gt;
&lt;br /&gt;
如下所示是一个基本的XML配置示例：建立了映射器，并注入到“BlogService”[[JavaBeans|bean]]中。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;sqlSessionFactory&amp;quot; class=&amp;quot;org.mybatis.spring.SqlSessionFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;dataSource&amp;quot; ref=&amp;quot;dataSource&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bean id=&amp;quot;blogMapper&amp;quot; class=&amp;quot;org.mybatis.spring.mapper.MapperFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;sqlSessionFactory&amp;quot; ref=&amp;quot;sqlSessionFactory&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;mapperInterface&amp;quot; value=&amp;quot;org.mybatis.example.BlogMapper&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bean id=&amp;quot;blogService&amp;quot; class=&amp;quot;org.mybatis.example.BlogServiceImpl&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;blogMapper&amp;quot; ref=&amp;quot;blogMapper&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
现在调用MyBatis只需要调用一个[[JavaBeans|bean]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class BlogServiceImpl implements BlogService {&lt;br /&gt;
&lt;br /&gt;
    private BlogMapper blogMapper;&lt;br /&gt;
&lt;br /&gt;
    public void setBlogMapper(BlogMapper blogMapper) {&lt;br /&gt;
        this.blogMapper = blogMapper;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void doSomethingWithABlog(int blogId) {&lt;br /&gt;
        Blog blog = blogMapper.selectBlog(blogId);&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Velocity语言==&lt;br /&gt;
Velocity语言[[驱动程序]]允许用户使用[[Apache Velocity]]来快速生成动态SQL查询。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;select id=&amp;quot;findPerson&amp;quot; lang=&amp;quot;velocity&amp;quot;&amp;gt;&lt;br /&gt;
  #set( $pattern = $_parameter.name + &amp;#039;%&amp;#039; )&lt;br /&gt;
  SELECT *&lt;br /&gt;
  FROM person&lt;br /&gt;
  WHERE name LIKE @{pattern, jdbcType=VARCHAR}&lt;br /&gt;
&amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MyBatis生成器==&lt;br /&gt;
MyBatis提供了代码生成器。MyBatis生成器（MyBatis Generator）能对数据库表内省，生成执行的[[增删改查]]（CRUD）时所需的MyBatis代码。有相关的[[Eclipse]]插件可供使用。&lt;br /&gt;
&lt;br /&gt;
==MyBatis Migrations==&lt;br /&gt;
MyBatis Migrations{{notetag|可译作“MyBatis数据库迁移管理工具”。}}是一个[[Java]][[控制台应用程序]]，它通过管理[[数据定义语言]]（DDL）文件来跟踪{{tsl|en|Database schema|数据库模式}}的变更。{{notetag|即{{tsl|en|Schema migration|模式迁移}}}}&lt;br /&gt;
&lt;br /&gt;
Migrations可以查询当前数据库的状态，应用或恢复对{{tsl|en|Database schema|数据库模式}}的变更。它也有助于发现和解决由多个开发人员并行修改数据库模式的情况。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
&lt;br /&gt;
MyBatis项目继承自[[iBATIS]] 3.0，其维护团队也包含[[iBATIS]]的初创成员。&lt;br /&gt;
&lt;br /&gt;
2010年5月19日项目创建。当时Apache [[iBATIS]] 3.0发布，其开发团队宣布会在新的名字、新的站点中继续开发&amp;lt;ref&amp;gt;{{cite web|url=http://mail-archives.apache.org/mod_mbox/ibatis-user-java/201005.mbox/%3CAANLkTimXoLiHwI-3kbW6It7mH0771xJP4RqT609VKCXC@mail.gmail.com%3E|title=iBATIS Project Team Moving to Google Code|accessdate=2014-04-08|archive-date=2016-03-04|archive-url=https://web.archive.org/web/20160304113639/http://mail-archives.apache.org/mod_mbox/ibatis-user-java/201005.mbox/%3CAANLkTimXoLiHwI-3kbW6It7mH0771xJP4RqT609VKCXC@mail.gmail.com%3E|dead-url=no}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
2013年11月10日，项目迁移到了[[GitHub]]。&amp;lt;ref&amp;gt;{{cite web|url=http://blog.mybatis.org/2013/11/bye-google-code-welcome-github.html|title=Bye Google Code welcome Github|accessdate=2014-04-08|archive-date=2013-11-10|archive-url=https://web.archive.org/web/20131110093554/http://blog.mybatis.org/2013/11/bye-google-code-welcome-github.html|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
*[[Hibernate]]&lt;br /&gt;
*[[iBATIS]]&lt;br /&gt;
*[[JDBC]]&lt;br /&gt;
*[[Java持久化API]]（JPA）&lt;br /&gt;
*{{tsl|en|EclipseLink}}&lt;br /&gt;
*{{tsl|en|Ebean}}&lt;br /&gt;
*[[面向Java对象查询]]（jOOQ）&lt;br /&gt;
*{{tsl|en|Apache Cayenne}}&lt;br /&gt;
*[[pureQuery]]&lt;br /&gt;
*{{tsl|en|NHydrate}}&lt;br /&gt;
*[http://hydrate.sourceforge.net/ Hydrate]{{Wayback|url=http://hydrate.sourceforge.net/ |date=20190123020736 }}&lt;br /&gt;
*{{tsl|en|OpenJPA}}&lt;br /&gt;
*[[Spring Framework]]&lt;br /&gt;
*{{tsl|en|Google Guice}}&lt;br /&gt;
*[https://web.archive.org/web/20160111210342/http://orbroker.org/ O/R Broker]&lt;br /&gt;
*[https://github.com/braisdom/ObjectiveSql ObjectiveSql] {{Wayback|url=https://github.com/braisdom/ObjectiveSql |date=20201229135311 }}&lt;br /&gt;
&lt;br /&gt;
==注脚==&lt;br /&gt;
{{notefoot}}&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|refs=&lt;br /&gt;
&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{cite book|author=周冠亞、黃文毅|title=Spring 5企業級開發實戰|publisher=清華大學出版社|date=2019|isbn=9787302531029}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*{{Official website|http://www.mybatis.org/mybatis-3/zh/}}&lt;br /&gt;
&lt;br /&gt;
[[Category:对象关系映射]]&lt;br /&gt;
[[Category:持久化框架]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cewbot</name></author>
	</entry>
</feed>