MyBatis:修订间差异
补救1个来源,并将0个来源标记为失效。) #IABot (v2.0 |
|||
第35行: | 第35行: | ||
[[SQL]]语句存储在[[XML]]文件或[[Java 注解]]中。一个MyBatis映射的示例(其中用到了[[接口 (Java)|Java接口]]和MyBatis[[Java 注解|注解]]): |
[[SQL]]语句存储在[[XML]]文件或[[Java 注解]]中。一个MyBatis映射的示例(其中用到了[[接口 (Java)|Java接口]]和MyBatis[[Java 注解|注解]]): |
||
< |
<syntaxhighlight lang="java"> |
||
package org.mybatis.example; |
package org.mybatis.example; |
||
第42行: | 第42行: | ||
Blog selectBlog(int id); |
Blog selectBlog(int id); |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
执行的示例: |
执行的示例: |
||
< |
<syntaxhighlight lang="java"> |
||
BlogMapper mapper = session.getMapper(BlogMapper.class); |
BlogMapper mapper = session.getMapper(BlogMapper.class); |
||
Blog blog = mapper.selectBlog(101); |
Blog blog = mapper.selectBlog(101); |
||
</syntaxhighlight> |
|||
</source> |
|||
[[SQL]]语句和映射也可以外化到一个XML文件中: |
[[SQL]]语句和映射也可以外化到一个XML文件中: |
||
< |
<syntaxhighlight lang="xml"> |
||
<?xml version="1.0" encoding="UTF-8" ?> |
<?xml version="1.0" encoding="UTF-8" ?> |
||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||
第62行: | 第62行: | ||
</select> |
</select> |
||
</mapper> |
</mapper> |
||
</syntaxhighlight> |
|||
</source> |
|||
也可以使用MyBatis API执行语句: |
也可以使用MyBatis API执行语句: |
||
< |
<syntaxhighlight lang="java"> |
||
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101); |
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101); |
||
</syntaxhighlight> |
|||
</source> |
|||
详细信息可以参考MyBatis网站所提供的用户手册。参见外部链接。 |
详细信息可以参考MyBatis网站所提供的用户手册。参见外部链接。 |
||
第77行: | 第77行: | ||
如下所示是一个基本的XML配置示例:建立了映射器,并注入到“BlogService”[[JavaBeans|bean]]中。 |
如下所示是一个基本的XML配置示例:建立了映射器,并注入到“BlogService”[[JavaBeans|bean]]中。 |
||
< |
<syntaxhighlight lang="xml"> |
||
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> |
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> |
||
<property name="dataSource" ref="dataSource" /> |
<property name="dataSource" ref="dataSource" /> |
||
第90行: | 第90行: | ||
<property name="blogMapper" ref="blogMapper" /> |
<property name="blogMapper" ref="blogMapper" /> |
||
</bean> |
</bean> |
||
</syntaxhighlight> |
|||
</source> |
|||
现在调用MyBatis只需要调用一个[[JavaBeans|bean]]: |
现在调用MyBatis只需要调用一个[[JavaBeans|bean]]: |
||
< |
<syntaxhighlight lang="java"> |
||
public class BlogServiceImpl implements BlogService { |
public class BlogServiceImpl implements BlogService { |
||
第108行: | 第108行: | ||
} |
} |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
==Velocity语言== |
==Velocity语言== |
||
Velocity语言[[驱动程序]]允许用户使用[[Apache Velocity]]来快速生成动态SQL查询。 |
Velocity语言[[驱动程序]]允许用户使用[[Apache Velocity]]来快速生成动态SQL查询。 |
||
< |
<syntaxhighlight lang="xml"> |
||
<select id="findPerson" lang="velocity"> |
<select id="findPerson" lang="velocity"> |
||
#set( $pattern = $_parameter.name + '%' ) |
#set( $pattern = $_parameter.name + '%' ) |
||
第120行: | 第120行: | ||
WHERE name LIKE @{pattern, jdbcType=VARCHAR} |
WHERE name LIKE @{pattern, jdbcType=VARCHAR} |
||
</select> |
</select> |
||
</syntaxhighlight> |
|||
</source> |
|||
==MyBatis生成器== |
==MyBatis生成器== |
2020年7月7日 (二) 03:25的版本
開發者 | MyBatis团队 |
---|---|
当前版本 | 3.4.6(2018年3月11日 | )
源代码库 | |
编程语言 | Java |
操作系统 | 跨平台 |
类型 | 持久化框架 |
许可协议 | Apache许可证 2.0 |
网站 | http://www.mybatis.org/mybatis-3/zh/ |
MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。
MyBatis是在Apache许可证 2.0下分发的自由软件,是iBATIS 3.0的分支版本。其维护团队也包含iBATIS的初创成员。
功能概况
与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。
与JDBC相比,MyBatis简化了相关代码:SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎,声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,或者使用Apache Velocity集成的插件,SQL语句可以被动态的生成。
MyBatis与Spring Framework和Google Guice集成,这使开发者免于依赖性问题。
MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库取得的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了基于 Java HashMap 的默认缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。
用法
SQL语句存储在XML文件或Java 注解中。一个MyBatis映射的示例(其中用到了Java接口和MyBatis注解):
package org.mybatis.example;
public interface BlogMapper {
@Select("select * from Blog where id = #{id}")
Blog selectBlog(int id);
}
执行的示例:
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
SQL语句和映射也可以外化到一个XML文件中:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
也可以使用MyBatis API执行语句:
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
详细信息可以参考MyBatis网站所提供的用户手册。参见外部链接。
与Spring集成
MyBatis与Spring Framework集成。Spring Framework允许MyBatis参与Spring事务,建立了MyBatis映射器和会话,并把他们注入到其他bean中。
如下所示是一个基本的XML配置示例:建立了映射器,并注入到“BlogService”bean中。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="org.mybatis.example.BlogMapper" />
</bean>
<bean id="blogService" class="org.mybatis.example.BlogServiceImpl">
<property name="blogMapper" ref="blogMapper" />
</bean>
现在调用MyBatis只需要调用一个bean:
public class BlogServiceImpl implements BlogService {
private BlogMapper blogMapper;
public void setBlogMapper(BlogMapper blogMapper) {
this.blogMapper = blogMapper;
}
public void doSomethingWithABlog(int blogId) {
Blog blog = blogMapper.selectBlog(blogId);
...
}
}
Velocity语言
Velocity语言驱动程序允许用户使用Apache Velocity来快速生成动态SQL查询。
<select id="findPerson" lang="velocity">
#set( $pattern = $_parameter.name + '%' )
SELECT *
FROM person
WHERE name LIKE @{pattern, jdbcType=VARCHAR}
</select>
MyBatis生成器
MyBatis提供了代码生成器。MyBatis生成器(MyBatis Generator)能对数据库表内省,生成执行的增删改查(CRUD)时所需的MyBatis代码。有相关的Eclipse插件可供使用。
MyBatis Migrations
MyBatis Migrations[1]是一个Java控制台应用程序,它通过管理数据定义语言(DDL)文件来跟踪数据库模式的变更。[2]
Migrations可以查询当前数据库的状态,应用或恢复对数据库模式的变更。它也有助于发现和解决由多个开发人员并行修改数据库模式的情况。
历史
MyBatis项目继承自iBATIS 3.0,其维护团队也包含iBATIS的初创成员。
2010年5月19日项目创建。当时Apache iBATIS 3.0发布,其开发团队宣布会在新的名字、新的站点中继续开发[3]。
参见
- Hibernate
- iBATIS
- JDBC
- Java持久化API(JPA)
- EclipseLink
- Ebean
- 面向Java对象查询(jOOQ)
- Apache Cayenne
- pureQuery
- NHydrate
- Hydrate
- OpenJPA
- Spring Framework
- Google Guice
- O/R Broker
参考文献
- ^ 可译作“MyBatis数据库迁移管理工具”。
- ^ 即模式迁移
- ^ iBATIS Project Team Moving to Google Code.
- ^ Bye Google Code welcome Github.