关于MyBatis3,dataSource在Spring的配置文件里配置好,不过多解释了,主要记录下关于Mapper部分
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="driverClass"><value>${jdbc.driverClass}</value></property>
<property name="jdbcUrl"><value>${jdbc.url}</value></property>
<property name="user"><value>${jdbc.user}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
<property name="initialPoolSize"><value>${jdbc.initialPoolSize}</value></property>
<property name="minPoolSize"><value>${jdbc.minPoolSize}</value></property>
<property name="maxPoolSize"><value>${jdbc.maxPoolSize}</value></property>
</bean>
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatisConfig.xml"></property>
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="sqlSession"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
MyBatis3,主要是多了一个目录自动扫描
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.xxx.mapper" />
</bean>
这样的写法就可以不必每一个Mapper都写到配置文件里,它会自动的扫描整个目录里的Mapper
另一种就是把需要的Mapper配置到配置文件里面
<bean id="xxxMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="org.xxx.mapper.XXXMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
当然还可以像iBatis2一样的传统写法,用Spring把sqlSessionFactory注入到接口里,写接口实现
以上两种写法不需要写接口实现,只要定义接口就可以了
需要注意的两点是
1.Mapper中的nameSpace指向的接口文件路径需要是正确的
2.Mapper的Interface和xml文件名相同,否则没法对应相应接口的实现
------------------------------------
这里一直有个疑问
就是对于MyBatis3来说,省去了,接口实现那一部分,那到底还是否需要Dao这个东西?
如果需要的话,还有没有什么好的写法??
原来的DAO接口定义的话,现在我的写法就是在MyBatis里面再定义一个空接口,来继承DAO的接口,这样集成了DAO,也可以自动生成MyBatis的实现
不过是否有这个必要,有没有人讲讲~