1.引入jdbc的配置文件 使用配置文件 不是使用系统属性
<context:property-placeholder location="jdbc.properties" system-properties-mode="FALLBACK"/>
- 配置数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
- 配置SqlSessionFactoryBean 对象
[mybatis.xml] (https://www.jianshu.com/p/4fcd802faf82)
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- mybatis 核心配置文件 -->
<property name="configLocation" value="mybatis.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
mybatis里面的数据源、日志、别名、插件、mapper都被整合到<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
标签
<!-- 配置 Configuration-->
<bean id="configuration" class="org.apache.ibatis.session.Configuration">
<!-- 指定日志工具 -->
<property name="logImpl" value="org.apache.ibatis.logging.log4j.Log4jImpl"/>
<!-- 配置缓存 -->
<property name="cacheEnabled" value="true"/>
</bean>
<!--3. 配置SqlSessionFactoryBean 对象-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置包下类别名 多个包之间使用 逗号分隔 -->
<property name="typeAliasesPackage" value="com.bjpowernode.domain"/>
<!-- 配置插件 -->
<property name="plugins">
<array>
<bean id="pageInterceptor" class="com.github.pagehelper.PageInterceptor"/>
</array>
</property>
<!-- 注入configuration -->
<property name="configuration" ref="configuration"/>
<!-- 配置映射文件 -->
<property name="mapperLocations" value="mapper/**/*Mapper.xml"></property>
</bean>
<!-- 4.扫描所有的Mapper接口 自动创建Mapper的代理对象 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 待扫描的mapper 接口的包名 多个之间使用逗号分隔 -->
<property name="basePackage" value="com.bjpowernode.mapper"/>
<!--注入SqlSessionFactoryBean 用于创建SqlSession -->
<!--
SqlSessionFactoryBean 是可以自动装配的 但是 如果存在多个数据源时,可以指定SqlSessionFactoryBean
区分数据源
-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
</bean>
4.扫描所有的Mapper接口 自动创建Mapper的代理对象
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 待扫描的mapper 接口的包名 多个之间使用逗号分隔 -->
<property name="basePackage" value="com.bjpowernode.dao"/>
<!--注入SqlSessionFactoryBean 用于创建SqlSession -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
</bean>
5.事务管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 配置数据源 指定要管理那个数据源的事务 -->
<property name="dataSource" ref="dataSource" />
</bean>
6.开启组件扫描
<context:component-scan base-package="com.*" />
7.开启事务注解
<tx:annotation-driven transaction-manager="transactionManager" />