首页 > 代码库 > Spring : 征服数据库 (三)
Spring : 征服数据库 (三)
上一篇我们简单的讲解了Spring和MyBatis的整合,但你不难发现,其配置起来还是够麻烦的。最明显的一点是,我们需要在自定义的Mapper接口写个很长的SQL注解,并且还要手动注册到Spring容器。本文主要讲解简化的方法。
首先,还是定义接口,但你已看不到任何框架的痕迹,
package org.chen.mybatis.mapper; import org.chen.domain.Spitter; public interface SpitterMapper { Spitter getSpitter(String email); }
如果使用的是Maven,在资源文件夹resouces,建立和org.chen.mybatis.mapper相同的目录结构,
文件SpitterMapper的名字必须和上面的接口同名。SpitterMapper的内容如下:
<?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.chen.mybatis.mapper.SpitterMapper"> <select id="getSpitter" resultType="org.chen.domain.Spitter"> select * from spitter where email = #{email} </select> </mapper>
id和接口对应的方法名同名,resultType是返回类名。(你可能觉得写这么长的类名很麻烦,确实是,等会有简化的方法)
接下来在Spring配置文件里,
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value=http://www.mamicode.com/"org.chen.mybatis.mapper" />>
这个bean的作用和自动检测的一样,就是自动把basePackage指定的包下的mapper注册成MyBatis.为了简化上面的resultType的书写,
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value=http://www.mamicode.com/"org.chen.domain" />>
添加一个typeAliasesPackage,即包名的别名,这样直接写resultType="Spitter"就可以了。最后我们向service注入Mapper,
@Service public class TestService { @Autowired private SpitterMapper spitterMapper; public void setSpitterMapper(SpitterMapper spitterMapper) { this.spitterMapper = spitterMapper; }Spring : 征服数据库 (三)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。