mybatis-spring集成遇到问题
来源:互联网 发布:mac版录音 编辑:程序博客网 时间:2024/04/30 07:51
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:Configuration.xml"/><!-- <property name="mapperLocations"><list><value>classpath*:xieguannan/store/user/dao/*-mapper.xml</value></list></property> --></bean><!-- 扫描该包下所有继承SqlMapper的接口 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="xieguannan"/><property name="markerInterface" value="xieguannan.common.dao.SqlMapper"/> </bean>
报错内容是markerInterface 需要一个Class属性,但是赋给的是一个String属性,百思不得其解啊,估摸应该就是配置问题。
网上搜索半天资料,Mybatis可以通过MapperScannerConfigurer进行匹配MapperFactoryBean,如果你不用它的话,你每次写一个Mapper,就需要在spring的配置文件里,加入下列的代码:
<bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.tiantian.mybatis.mapper.BlogMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>
这样数量少的话,还好说,多了就麻烦。再说有自动化的,谁还想去用手动的呢。。。所以,为了不这么麻烦,我们可以通过配置MapperScannerConfigurer这个bean来达到自动匹配的目的,下面我直接拷贝过来“对于MapperScannerConfigurer而言有一个属性是我们必须指定的,那就是basePackage。basePackage是用来指定Mapper接口文件所在的基包的,在这个基包或其所有子包下面的Mapper接口都将被搜索到。多个基包之间可以使用逗号或者分号进行分隔。最简单的MapperScannerConfigurer定义就是只指定一个basePackage属性,这样MapperScannerConfigurer就会扫描指定基包下面的所有接口,并把它们注册为一个个MapperFactoryBean对象。
有时候我们指定的基包下面的并不全是我们定义的Mapper接口,为此MapperScannerConfigurer还为我们提供了另外两个可以缩小搜索和注册范围的属性。一个是annotationClass,另一个是markerInterface。
- annotationClass:当指定了annotationClass的时候,MapperScannerConfigurer将只注册使用了annotationClass注解标记的接口。
- markerInterface:markerInterface是用于指定一个接口的,当指定了markerInterface之后,MapperScannerConfigurer将只注册继承自markerInterface的接口。
如果上述两个属性都指定了的话,那么MapperScannerConfigurer将取它们的并集,而不是交集。即使用了annotationClass进行标记或者继承自markerInterface的接口都将被注册为一个MapperFactoryBean。”
OK,CTRL+C结束。。我这里没有试过annotationClass这个注解,应该是每个Mapper上边加个注解就可以了吧?这里重点说makerInterface,这里指定的接口,其实可以指定一个空接口,我记得在备忘录模式中,这样的接口还有个特有的名字——窄接口,代码也贴一下好了~
package xieguannan.common.dao;public interface SqlMapper {}
这里需要提一下sqlSessionFactory中的mapperLocations属性,在上边的配置中,我是注释掉了,这个属性是做什么的呢?
mapperLocations:它表示我们的Mapper文件存放的位置,当我们的Mapper文件跟对应的Mapper接口处于同一位置的时候可以不用指定该属性的值。
为了避免每次都需要指定这个东西,我们将Mapper接口和Mapper.xml文件放一个包下,就可以把它注掉了,注意这两个文件的名字除了尾缀格式不一样,其他都一样的才可以。否则在调用DAO时候会报错Invalid bound statement (not found)
- mybatis-spring集成遇到问题
- mybatis-spring集成:配置多数据库源中遇到的问题
- spring集成mybatis事务问题
- mybatis spring集成注意问题
- mybatis-spring集成:配置多数据库源中遇到的问题--MapperScannerConfigurer配置
- springmvc+spring+mybatis集成问题汇总
- spring和mybatis集成出现的问题
- Spring 整合mybatis时遇到的问题
- Spring、SpringMVC、Mybatis整合遇到的问题
- maven-spring-mybatis 遇到一些问题
- spring整合mybatis遇到的问题
- intellij-maven-spring-mybatis遇到的问题
- Spring项目集成Spring-Session以及可能遇到的问题
- mybatis注解+spring集成
- Spring集成MyBatis
- Spring集成Mybatis
- mybatis和spring集成
- spring 集成 mybatis
- DOM window.location.href 和 navigate()
- 看淡你的权力
- Javascript 面向对象编程(一):封装
- Android中数据的存储之------SharedPreferences存储数据
- Javascript面向对象编程(二):构造函数的继承
- mybatis-spring集成遇到问题
- 高扩展Web应用HTTP Session共享方案
- mq消息头详细介绍
- VC调用javascript的几种方法
- applicationContext.xml 配置文件的一些认识
- 炮兵阵地 - POJ 1185 状压dp
- 马士兵struts2视频教程第十四集
- Throwable中的fillInStackTrace
- extjs知识总结留档