欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring与Mybatis整合 将SqlSessionFactory的创建交给spring完成

程序员文章站 2022-07-15 11:10:14
...

1导入jar文件
导入spring相关的jar;
导入mybatis相关的jar
导入mybatis-spring-XXXX.jar
如果使用连接池,导入连接池的jar文件,如druid
使用mysql数据库,导入mysql的驱动jar文件


org.springframework
spring-context
5.1.5.RELEASE

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aop</artifactId>
		<version>5.1.5.RELEASE</version>
	</dependency>
	<!-- 事务会自动引入 -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>5.1.5.RELEASE</version>
	</dependency>

	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjrt</artifactId>
		<version>1.8.2</version>
	</dependency>
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjweaver</artifactId>
		<version>1.8.2</version>
	</dependency>
	<dependency>
		<groupId>aopalliance</groupId>
		<artifactId>aopalliance</artifactId>
		<version>1.0</version>
	</dependency>

	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.5</version>
	</dependency>
	
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis-spring</artifactId>
		<version>1.3.2</version>
	</dependency>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency>
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>1.0.18</version>
	</dependency>
	
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.39</version>
	</dependency>
</dependencies>

2 配置

<?xml version="1.0" encoding="UTF-8"?>

    <!-- 扫描相关注解 -->  
<context:component-scan base-package="com.qianfeng.sm"></context:component-scan>        
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
	  init-method="init" destroy-method="close">
	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
	<property name="url" value="jdbc:mysql://localhost:3306/j1806" />
	<property name="username" value="root" />
	<property name="password" value="root" />
	<!-- 配置初始化大小、最小、最大 -->
	<property name="initialSize" value="1" />
	<property name="minIdle" value="1" />
	<property name="maxActive" value="10" />
	<!-- 配置获取连接等待超时的时间 -->
	<property name="maxWait" value="10000" />
	<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
	<property name="timeBetweenEvictionRunsMillis" value="60000" />
	<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
	<property name="minEvictableIdleTimeMillis" value="300000" />
	<property name="testWhileIdle" value="true" />
	<!-- 这里建议配置为TRUE,防止取到的连接不可用 -->
	<property name="testOnBorrow" value="true" />
	<property name="testOnReturn" value="false" />
	
</bean>

<!-- 2 创建Mybatis的工厂对象 -->
<bean id="sqlSessionFactory"
	class="org.mybatis.spring.SqlSessionFactoryBean">
	<!--设置数据库连接池 -->
	<property name="dataSource" ref="dataSource"></property>
	<!-- 加载mybatis主配置文件 -->
	<property name="configLocation" value="classpath:mybatis2.xml"/>
	<!-- 加载映射文件 -->
	<property name="mapperLocations" value="classpath:com/qianfeng/sm/*.xml"/>
</bean>
<!--3设置Mybatis的映射接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
	<!-- 设置映射文件所在包 -->
	<property name="basePackage" value="com.qianfeng.sm"></property>
</bean>

3 web.xml的配置
如果使用web应用,需要在web.xml中引入如下配置

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <!-- classpath相当于/WEB-INF/classes -->
    <param-value>classpath:spring-bean.xml</param-value>
<!--     <param-value>/WEB-INF/classes/bean.xml</param-value> -->
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

注:servlet中注入的处理
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this);
}