spring与mybatis整合配置MapperFactoryBean 与 M…
2018-06-18 03:41:44来源:未知 阅读 ()
MapperFactoryBean 与 MapperScannerConfigurer
Spring注入映射器
使用mybatis进行数据处理的四种方式
①SqlSessionTemplate②SqlSessionDaoSupport③MapperFactoryBean④MapperScannerConfigurer
①SqlSessionTemplate:这个需要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制(非接口开发)
②SqlSessionDaoSupport(存在与比较老的jar包中):这个只需要在实现类中继承特殊类(例如HibernateDaoSupport)
就可以使用sqlsession(非接口方式开发)
③MapperFactoryBean:这个要写配置文件,把对应的所有接口在配置文件中引用即可,无需写实现类,需要手动注入(动态代理开发)
④MapperScannerConfigurer:这个要写配置文件,只要给出接口所在的包即可,会自动把包中的接口引入,
无需写实现类,使用注解扫描的方式@Autowired(动态代理)
在SpringMVC中,你可以不必为每一个DAO都去写相应的实现,而交给SpringMVC替你创建。
为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。
MapperFactoryBean
数据映射器接口可以按照如下做法加入到 Spring 中:
MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。 因为代理创建在运行时环境中(Runtime,译者注) ,那么指定的映射器必须是一个接口,而 不是一个具体的实现类。
如果 UserMapper 有一个对应的 MyBatis 的 XML 映射器文件, 如果 XML 文件在类路径的位置和映射器类相同时(即 .java 与 .xml 文件在同一个包下), 它会被 MapperFactoryBean 自动解析。没有必要在 MyBatis 配置文件中去指 定映射器 , 除非映射器的 XML 文件在不同的类路径下 。
注意,当 MapperFactoryBean 需要 SqlSessionFactory 或 SqlSessionTemplate 时。这些可以通过各自的 SqlSessionFactory 或 SqlSessionTemplate 属性来设置, 或者可以由 Spring 来自动装配。如果两个属性都设置了,那么 SqlSessionFactory 就会被忽略,因为 SqlSessionTemplate 是需要有一个 session 工厂的设置; 那个工厂会由 MapperFactoryBean 来使用。
你可以直接在 business/service 对象中以和注入任意 Spring bean 的相同方式直接注入映射器:
这个 bean 可以直接在应用程序逻辑中使用:
注意在这段代码中没有 SqlSession 或 MyBatis 的引用。也没有任何需要创建,打开或关闭 session 的代码, MyBatis-Spring 会来关心它的。
MapperScannerConfigurer
没有必要在 Spring 的 XML 配置文件中注册所有的映射器。相反,可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。
要创建 MapperScannerConfigurer,可以在 Spring 的配置中添加如下代码:
basePackage 属性是让你为映射器接口文件设置基本的包路径。 你可以使用分号或逗号 作为分隔符设置多于一
个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。
总结:
MapperFactoryBean 需要一个一个的配
MapperScannerConfigurer 可以配置多个
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:session浅析
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash