前面已完成了整个框架,只是使用mybatis还是使用的最原始的方法。
即:
1.在mybatis的主配置文件中连接数据库,配置各映射文件(后面不再需要)
<!-- 配置mybatis运行环境 -->
<environments default="cybatis">
<environment id="cybatis">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 告知映射文件方式1,一个一个的配置-->
<mapper resource="com/gary/mapper/PersonMapper.xml"/>
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件
<package name="com.gary.mapper"/> -->
</mappers>
2.为各表写自己的接口文件和映射文件(后面还需要)
3.提供一个DBTools类(后面不再需要)
用来读取mybatis主配置文件,创建sessionFactory。并提供getSession方法
4.使用的地方通过session拿到接口(后面使用注解)
SqlSession session=DBTools.getSession();
PersonMapper mapper=session.getMapper(PersonMapper.class);
再调用接口的相应方法。
1.导包
c3p0-0.9.2.1.jar
spring-jdbc-4.2.1.RELEASE.jar
spring-tx-4.2.1.RELEASE.jar
mchange-commons-java-0.2.3.4.jar
2.在spring配置文件中配置数据源
<!-- 引入配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:mysql.properties" />
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxPoolSize" value="${maxActive}" />
<property name="initialPoolSize" value="${initialSize}" />
<property name="maxIdleTime" value="${maxWait}" />
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/gary/mapper/*.xml"></property>
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.gary.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
同时,之前在mybatis的主配置文件中配置的数据库连接和扫描配置都可以去掉了。
3. DBTools类不再需要
4.使用的地方
之前是
SqlSession session=DBTools.getSession();
PersonMapper mapper=session.getMapper(PersonMapper.class);
现在有两种方案:
方案一:
定义sessionFactory的成员变量
@Resource(name="sqlSessionFactory")
private SqlSessionFactory sessionFactory;
使用时如下:
SqlSession session = sessionFactory.openSession();
PersonMapper mapper=session.getMapper(PersonMapper.class);
方案二:
直接定义PersonMapper
@Resource
PersonMapper personMapper;
使用的时候直接使用它调用方法,如:
personMapper.selectByName(name);