日期:2014-05-16  浏览次数:20533 次

mybatis3.x + Spring3 .x No DAO开发数据库应用


iBatis3 脱离 Apache 后,的确很给力:

1 、先后发布了 3.0 的多个子版本。

2 、在 Spring3.0 发布后任然只支持 iBatis2.x, 这倒不是 Spring 不给力,而是 Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了,那么很多山寨的 MyBatis3.0 Spring 支持就出现了,并且功能也很强大,但是却任然没有 MyBatis 社区提供的 Spring 整合支持包给力。

既然 MyBatis3 这么给力,我也给点力,就介绍一下如何应用这么给力的东东,这里只介绍我认为 MyBatis3 Spring 整合子项目最给力的 3 个东东: Mapper 接口代理、 SqlSessionFactoryBean MapperScannerConfigurer

第一步首先到 mybatis 官网下载:

http://mybatis.org/java.html

http://code.google.com/p/mybatis/wiki/Downloads?tm=2

如果鸟文不好也没关系,也提供了中文文档。

1、? Mapper 代理接口

这个东西的确好,我也说不出哪儿好,反正就是非常好,先举个例子:

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>

通常我们是这样来执行这个查询:

Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

如果写了 Mapper 代理接口,是这样来执行查询:

BlogMapper mapper = session.getMapper(BlogMapper.class);

Blog blog = mapper.selectBlog(101);

代码似乎没有少多少,仔细看看和想想,有了代理接口,不需要去记忆或拷贝 SQLID ,直接操作接口 API 就可以了,接口的实现也不需去写, MyBatis 自动为我们处理了,正所谓动态代理,看看 BlogMapper 中有些什么:

package org.my