MyBatis技术原理(笔记四)-MyBatis-Spring整合

第八章 MyBatis-Spring整合

配置 MyBatis-Spring 项目需要以下几步:

1 配置数据源
2 配置SqlSessionFactory
3 可选择的配置爱 SQLSessionTemplate。在同时配置SqlSessionTemplate和SqlSessionFactory的情况下,优先采用SqlSessionTemplate。
4 配置Mapper,可以配置单个Mapper,也可以通过扫描的方法生成Mapper,比较灵活。Spring IoC会生成对应接口的实例,这样就可以通过注入的方式来获取资源了。
5 事务管理。

配置SqlSessionFactoryBean

<!-- 数据库连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>  
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF8&amp;allowMultiQueries=true"/>
        <property name="user" value="root"/>  
        <property name="password" value="root"/>  
        <property name="maxPoolSize" value="100"/>  
        <property name="minPoolSize" value="10"/>  
        <property name="maxIdleTime" value="60"/>  
    </bean>
    
    <!-- mybatis 的 sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
	</bean>
	
	<!-- mybatis mapper接口自动扫描、自动代理 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	   <property name="basePackage" value="com.test.mapper" />
	</bean>
	
    <!-- 事务管理器 -->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 事务传播行为 -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="page*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="is*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <!-- 织入事务增强功能 -->
    <aop:config>
        <aop:pointcut id="txPointcut" expression="execution(* com.test.service..*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
    </aop:config>

     <!-- 配置扫描spring注解(@Component、@Controller、@Service、@Repository)时扫描的包,同时也开启了spring注解支持 -->
     <!-- 这个地方只需要扫描service包即可,因为controller包由springMVC配置扫描,mapper包由上面的mybatis配置扫描 -->
    <context:component-scan base-package="com.test.service"></context:component-scan>

    <!-- 开启spring aop 注解支持,要想aop真正生效,还需要把切面类配置成bean -->
    <aop:aspectj-autoproxy/>

配置 mybatis-config


<configuration>

    <settings>
        <!-- 使用log4j2作为日志实现 -->
        <setting name="logImpl" value="LOG4J2"/>
    </settings>

	<typeAliases>
        <!-- 为指定包下的pojo类自动起别名 -->
		<package name="com.test.pojo"/>
	</typeAliases>
	
	<mappers>
        <!-- 自动加载指定包下的映射配置文件 -->
        <package name="com.test.mapper"/>
	</mappers>

</configuration>

配置 Spring-MVC

<!-- 配置扫描spring注解时扫描的包,同时也开启了spring注解支持 -->
	<context:component-scan base-package="com.test" />

    <!-- 开启springMVC相关注解支持 -->
	<mvc:annotation-driven />
    
    <!-- 开启spring aop 注解支持 -->
    <aop:aspectj-autoproxy/>
    

	<!-- 约定大于配置:约定视图页面的全路径 = prefix + viewName + suffix -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>


	<!-- 文件上传解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="104857600" />
		<property name="defaultEncoding" value="UTF-8" />
		<property name="maxInMemorySize" value="40960" />
	</bean>
	
	<!-- 资源映射 -->
	<mvc:resources location="/css/" mapping="/css/**" />
	<mvc:resources location="/js/" mapping="/js/**" />
	<mvc:resources location="/images/" mapping="/images/**" />
	<mvc:resources location="/lib/" mapping="/lib/**" />

配置 web.xml

<!-- 初始化spring容器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>  
  
    <!-- 设置post请求编码和响应编码 -->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        <init-param>
            <!-- 为true时也对响应进行编码 -->
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <!-- 设置为/*时才会拦截所有请求,和servlet有点区别,servlet设置为/*只拦截所有的一级请求,如/xx.do,而不拦截/xx/xx.do;servlet设置为/时才会拦截所有请求 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
	        classpath:mybatis-beans.xml,
	        classpath:dispatcher-servlet.xml
        </param-value>
    </context-param>
 
  
    <!-- 初始化springMVC容器 -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
  
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

配置完以上 文件后 就可以进行 开发步骤,在根据项目需求做一定的配置调整。

猜你喜欢

转载自blog.csdn.net/Dullon_jiang/article/details/88670273