ssm框架使用详解&配置两个数据源

学习ssm框架已经快一年了,今天把这个框架总结一下。

 

SSM 就是指 spring、SpringMVC和Mybatis。先说一下基本概念(百度上搜的)

 

1、基本概念

1.1、Spring

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

 

扫描二维码关注公众号,回复: 972768 查看本文章

2、开发环境

开发环境需要搭建maven,这里就不介绍了

 

3、新建一个maven项目

File--->New--->Maven Project

 

看到如下界面,点next

 

选择最下面的1.0,然后next

 

 

 

然后写好Group id 和 Artifact id,点击finish

 

 

这样,一个maven项目就建好了。

 

注意:刚建好的项目是不完整的,所以还要进行如下操作

 

 

右键项目--->Properties

Others改为UTF-8

Java Build Path--->Libraries,选中1.5后点击Edit..

选择jdk1.8

最后项目如果是这样那就说明修改完成了

4、SSM整合

4.1 修改web.xml文件

 

文件配置如下

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

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

    version="3.0">

    <display-name>Archetype Created Web Application</display-name>

    <!-- Spring和mybatis的配置文件 -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring-mybatis.xml</param-value>

    </context-param>

    <!-- 编码过滤器 -->

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <async-supported>true</async-supported>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- Spring监听器 -->

    <listener>

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

    </listener>

    <!-- 防止Spring内存溢出监听器 -->

    <listener>

        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

    </listener>

   

     <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>/resources/*</url-pattern>

    </servlet-mapping>

 

    <!-- Spring MVC servlet -->

    <servlet>

        <servlet-name>SpringMVC</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>classpath:spring-mvc.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

        <async-supported>true</async-supported>

    </servlet>

    <servlet>

        <description>

        </description>

        <display-name>FileUploadServlet</display-name>

        <servlet-name>FileUploadServlet</servlet-name>

        <servlet-class>am.controller.FileUploadServlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>SpringMVC</servlet-name>

        <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->

        <url-pattern>/</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>FileUploadServlet</servlet-name>

        <url-pattern>/FileUploadServlet</url-pattern>

    </servlet-mapping>

    <welcome-file-list>

        <welcome-file>/index.jsp</welcome-file>

    </welcome-file-list>

    <!-- 配置SESSION超时,单位是分钟 -->

    <session-config>

        <session-timeout>15</session-timeout>

    </session-config>

 

</web-app>

 

 

4.2 配置jdbc

将数据库配置(jdbc.properties),日志配置(log4j.properties),spring-mvc配置(spring-mvc.xml),mybatis配置(spring-mybatis.xml)全部放在resources下面

 

 

 

jdbc配置如下:

 

 

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://112.74.51.37:3306/am?useUnicode=true&characterEncoding=utf-8&useSSL=false

username=root

password=tq2016

#定义初始连接数

initialSize=0

#定义最大连接数

maxActive=20

#定义最大空闲

maxIdle=20

#定义最小空闲

minIdle=1

#定义最长等待时间

maxWait=60000

 

4.3 配置log4j

 

#定义LOG输出级别

log4j.rootLogger=INFO,Console,File

#定义日志输出目的地为控制台

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.Target=System.out

#可以灵活地指定日志输出格式,下面一行是指定具体的格式

log4j.appender.Console.layout = org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

 

#文件大小到达指定尺寸的时候产生一个新的文件

log4j.appender.File = org.apache.log4j.RollingFileAppender

#指定输出目录

log4j.appender.File.File = logs/ssm.log

#定义文件最大大小

log4j.appender.File.MaxFileSize = 10MB

# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志

log4j.appender.File.Threshold = DEBUG

log4j.appender.File.layout = org.apache.log4j.PatternLayout

log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

 

4.4 配置spring-mvc

 

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

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xmlns:task="http://www.springframework.org/schema/task"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 

                        http://www.springframework.org/schema/context 

                        http://www.springframework.org/schema/context/spring-context-3.1.xsd 

                        http://www.springframework.org/schema/mvc 

                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

                        http://www.springframework.org/schema/task 

                        http://www.springframework.org/schema/task/spring-task-3.1.xsd">

    <!-- <bean id="timer" class="com.entrym.cloud.utils.Timer"/>

    <task:annotation-driven /> -->

    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->

    <context:component-scan base-package="com.entrym.cloud.controller" />

    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->

    <bean id="mappingJacksonHttpMessageConverter"

        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

        <property name="supportedMediaTypes">

            <list>

                <value>text/html;charset=UTF-8</value>

            </list>

        </property>

    </bean>

   

    <mvc:resources mapping="/*.txt" location="/" cache-period="31556926" />

   

    <mvc:annotation-driven/>

   

    <!-- <mvc:interceptors>  

        <mvc:interceptor>  

            <mvc:mapping path="/blog/xiaohuo/**"/>  

            <bean  class="com.entrym.cloud.controller.BooksController" />  

        </mvc:interceptor>  

    </mvc:interceptors>  

     -->

    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射

    <bean

        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

        <property name="messageConverters">

            <list>

                <ref bean="mappingJacksonHttpMessageConverter" />   

            </list>

        </property>

    </bean>

    -->

    <!-- 定义跳转的文件的前后缀 ,视图模式配置-这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址-->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/jsp/" />

        <property name="suffix" value=".jsp" />

    </bean>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/txt/" />

        <property name="suffix" value=".txt" />

    </bean>

   

   

    <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->

    <bean id="multipartResolver" 

        class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 

        <property name="defaultEncoding" value="utf-8" /> 

        <!-- 文件大小最大值 -->

        <property name="maxUploadSize" value="10485760000" /> 

        <!-- 内存中的最大值 -->

        <property name="maxInMemorySize" value="40960" /> 

    </bean>

 

</beans>

 

 

4.5 配置spring-mybatis

 

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

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 

                        http://www.springframework.org/schema/context 

                        http://www.springframework.org/schema/context/spring-context-3.1.xsd 

                        http://www.springframework.org/schema/mvc 

                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 自动扫描 -->

    <context:component-scan base-package="com.entrym.cloud.*" />

    <!-- 引入配置文件 -->

    <bean id="propertyConfigurer"

        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="location" value="classpath:jdbc.properties" />

    </bean>

 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName" value="${driver}" />

        <property name="url" value="${url}" />

        <property name="username" value="${username}" />

        <property name="password" value="${password}" />

        <!-- 初始化连接大小 -->

        <property name="initialSize" value="${initialSize}"></property>

        <!-- 连接池最大数量 -->

        <property name="maxActive" value="${maxActive}"></property>

        <!-- 连接池最大空闲 -->

        <property name="maxIdle" value="${maxIdle}"></property>

        <!-- 连接池最小空闲 -->

        <property name="minIdle" value="${minIdle}"></property>

        <!-- 获取连接最大等待时间 -->

        <property name="maxWait" value="${maxWait}"></property>

    </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/entrym/cloud/mappering/*.xml"></property>

    </bean>

 

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <property name="basePackage" value="com.entrym.cloud.dao" />

        <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>

 

</beans>

 

4.6 pom.xml配置

pom文件中引入dependency以后可以自动下载相关jar包

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>hobby</groupId>

    <artifactId>ssm</artifactId>

    <packaging>war</packaging>

    <version>0.0.1-SNAPSHOT</version>

    <name>ssm Maven Webapp</name>

    <url>http://maven.apache.org</url>

    <properties>

        <!-- spring版本号 -->

        <spring.version>4.0.2.RELEASE</spring.version>

        <!-- mybatis版本号 -->

        <mybatis.version>3.1.1</mybatis.version>

        <!-- log4j日志文件管理包版本 -->

        <slf4j.version>1.7.7</slf4j.version>

        <log4j.version>1.2.17</log4j.version>

    </properties>

 

    <dependencies>

        <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi</artifactId>

            <version>3.15</version>

        </dependency>

   

        <dependency>

            <groupId>com.belerweb</groupId>

            <artifactId>pinyin4j</artifactId>

            <version>2.5.0</version>

        </dependency>

        <dependency>

            <groupId>dom4j</groupId>

            <artifactId>dom4j</artifactId>

            <version>1.6.1</version>

        </dependency>

        <dependency>

            <groupId>commons-httpclient</groupId>

            <artifactId>commons-httpclient</artifactId>

            <version>3.1</version>

        </dependency>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.11</version>

            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->

            <scope>test</scope>

        </dependency>

        <!-- spring核心包 -->

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-core</artifactId>

            <version>${spring.version}</version>

        </dependency>

 

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-web</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-oxm</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-tx</artifactId>

            <version>${spring.version}</version>

        </dependency>

 

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-jdbc</artifactId>

            <version>${spring.version}</version>

        </dependency>

 

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-webmvc</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-aop</artifactId>

            <version>${spring.version}</version>

        </dependency>

 

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context-support</artifactId>

            <version>${spring.version}</version>

        </dependency>

 

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-test</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <!-- mybatis核心包 -->

        <dependency>

            <groupId>org.mybatis</groupId>

            <artifactId>mybatis</artifactId>

            <version>${mybatis.version}</version>

        </dependency>

        <!-- mybatis/spring包 -->

        <dependency>

            <groupId>org.mybatis</groupId>

            <artifactId>mybatis-spring</artifactId>

            <version>1.1.0</version>

        </dependency>

        <!-- 导入java ee jar 包 -->

        <dependency>

            <groupId>javax</groupId>

            <artifactId>javaee-api</artifactId>

            <version>7.0</version>

        </dependency>

        <!-- 导入Mysql数据库链接jar包 -->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <version>5.1.30</version>

        </dependency>

        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->

        <dependency>

            <groupId>commons-dbcp</groupId>

            <artifactId>commons-dbcp</artifactId>

            <version>1.2.2</version>

        </dependency>

        <!-- JSTL标签类 -->

        <dependency>

            <groupId>jstl</groupId>

            <artifactId>jstl</artifactId>

            <version>1.2</version>

        </dependency>

        <!-- 日志文件管理包 -->

        <!-- log start -->

        <dependency>

            <groupId>log4j</groupId>

            <artifactId>log4j</artifactId>

            <version>${log4j.version}</version>

        </dependency>

 

 

        <!-- 格式化对象,方便输出日志 -->

        <dependency>

            <groupId>com.alibaba</groupId>

            <artifactId>fastjson</artifactId>

            <version>1.1.41</version>

        </dependency>

 

 

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-api</artifactId>

            <version>${slf4j.version}</version>

        </dependency>

 

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-log4j12</artifactId>

            <version>${slf4j.version}</version>

        </dependency>

        <!-- log end -->

        <!-- 映入JSON -->

        <dependency>

            <groupId>org.codehaus.jackson</groupId>

            <artifactId>jackson-mapper-asl</artifactId>

            <version>1.9.13</version>

        </dependency>

        <dependency>

            <groupId>org.apache.httpcomponents</groupId>

            <artifactId>httpclient</artifactId>

            <version>4.5.2</version>

        </dependency>

 

        <!-- 上传组件包 -->

        <dependency>

            <groupId>commons-fileupload</groupId>

            <artifactId>commons-fileupload</artifactId>

            <version>1.3.1</version>

        </dependency>

        <dependency>

            <groupId>commons-io</groupId>

            <artifactId>commons-io</artifactId>

            <version>2.4</version>

        </dependency>

        <dependency>

            <groupId>commons-codec</groupId>

            <artifactId>commons-codec</artifactId>

            <version>1.9</version>

        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->

        <dependency>

            <groupId>org.apache.commons</groupId>

            <artifactId>commons-email</artifactId>

            <version>1.4</version>

        </dependency>

 

        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-annotations</artifactId>

            <version>2.8.1</version>

        </dependency>

        <dependency>

 

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-core</artifactId>

            <version>2.8.1</version>

        </dependency>

        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-databind</artifactId>

            <version>2.8.1</version>

        </dependency>

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>javax.servlet-api</artifactId>

            <version>3.1.0</version>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupId>com.google.code.gson</groupId>

            <artifactId>gson</artifactId>

            <version>2.6.2</version>

        </dependency>

 

    </dependencies>

    <build>

        <finalName>ssm</finalName>

    </build>

</project>

 

需要注意的是:必须在main/java下面加这四个包,如果不加的话就把spring-mvc.xml和spring-mybatis.xml文件中的相关部分注释掉,否则会报错。

需加如下四个包

 

 

如果不加需要注释掉spring-mvc.xml中

 

 

 

 

和spring-mybatis.xml中

 

 

这样就OK了

 

 

5、接下来开始配置两个数据源

 

5.1 将jdbc和mybatis文件各复制一份

jdbc就不多说了,和原版一样,换一下数据库就好了,如下

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/zizai?useUnicode=true&characterEncoding=utf-8

username=root

password=root

#aimo数据库连接

#url=jdbc:mysql://112.74.51.37:3306/back?useUnicode=true&characterEncoding=utf-8

#username=root

#password=tq2017

#定义初始连接数

initialSize=0

#定义最大连接数

maxActive=20

#定义最大空闲

maxIdle=20

#定义最小空闲

minIdle=1

#定义最长等待时间

maxWait=60000

 

 

5.2 配置spring-mybatis-back.xml

 

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

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 

                        http://www.springframework.org/schema/context 

                        http://www.springframework.org/schema/context/spring-context-3.1.xsd 

                        http://www.springframework.org/schema/mvc 

                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 自动扫描 -->

    <context:component-scan base-package="com.entrym.cloud.back.*" />

    <!-- 引入配置文件 -->

    <bean id="propertyConfigurer"

        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="location" value="classpath:jdbc2.properties" />

    </bean>

   

    <bean id="dataSourceBack" class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName" value="${driver}" />

        <property name="url" value="${url}" />

        <property name="username" value="${username}" />

        <property name="password" value="${password}" />

        <!-- 初始化连接大小 -->

        <property name="initialSize" value="${initialSize}"></property>

        <!-- 连接池最大数量 -->

        <property name="maxActive" value="${maxActive}"></property>

        <!-- 连接池最大空闲 -->

        <property name="maxIdle" value="${maxIdle}"></property>

        <!-- 连接池最小空闲 -->

        <property name="minIdle" value="${minIdle}"></property>

        <!-- 获取连接最大等待时间 -->

        <property name="maxWait" value="${maxWait}"></property>

    </bean>

 

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->

    <bean id="sqlSessionFactoryBack" class="org.mybatis.spring.SqlSessionFactoryBean">

        <property name="dataSource" ref="dataSourceBack" />

        <!-- 自动扫描mapping.xml文件 -->

        <property name="mapperLocations" value="classpath:com/entrym/cloud/back/mapping/*.xml"></property>

    </bean>

 

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <property name="basePackage" value="com.entrym.cloud.back.dao" />

        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBack"></property>

    </bean>

 

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->

    <bean id="transactionManager"

        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <property name="dataSource" ref="dataSourceBack" />

    </bean>

 

</beans>

 

 

5.3 配置spring-mybatis-front.xml

 

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

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 

                        http://www.springframework.org/schema/context 

                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  

                        http://www.springframework.org/schema/mvc 

                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 自动扫描 -->

    <context:component-scan base-package="com.entrym.cloud.front.*" />

    <!-- 引入配置文件 -->

    <bean id="propertyConfigurer"

        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="location" value="classpath:jdbc.properties" />

    </bean>

 

    <bean id="dataSourceFront" class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName" value="${driver}" />

        <property name="url" value="${url}" />

        <property name="username" value="${username}" />

        <property name="password" value="${password}" />

        <!-- 初始化连接大小 -->

        <property name="initialSize" value="${initialSize}"></property>

        <!-- 连接池最大数量 -->

        <property name="maxActive" value="${maxActive}"></property>

        <!-- 连接池最大空闲 -->

        <property name="maxIdle" value="${maxIdle}"></property>

        <!-- 连接池最小空闲 -->

        <property name="minIdle" value="${minIdle}"></property>

        <!-- 获取连接最大等待时间 -->

        <property name="maxWait" value="${maxWait}"></property>

    </bean>

 

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->

    <bean id="sqlSessionFactoryFront" class="org.mybatis.spring.SqlSessionFactoryBean">

        <property name="dataSource" ref="dataSourceFront" />

        <!-- 自动扫描mapping.xml文件 -->

        <property name="mapperLocations" value="classpath:com/entrym/cloud/front/mapping/*.xml"></property>

    </bean>

 

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <property name="basePackage" value="com.entrym.cloud.front.dao" />

        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryFront"></property>

    </bean>

 

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->

    <bean id="transactionManager"

        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <property name="dataSource" ref="dataSourceFront" />

    </bean>

 

</beans>

 

5.4 配置web.xml

只需要在原来的基础上多引入一个配置文件即可

 

<!-- Spring和mybatis的配置文件 -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>

        classpath:spring-mybatis-front.xml,

        classpath:spring-mybatis-back.xml

        </param-value>

    </context-param>

 

 

 

注意:

1、项目目录最好分开写

2、我配置好以后在项目启动时不会报错,但是调用方法时会报错

 

严重: Servlet.service() for servlet [SpringMVC] in context with path [/twodatasource] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${driver}'

### The error may exist in file [D:\aimospace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\twodatasource\WEB-INF\classes\com\twodatasource\front\mapping\UserMapper.xml]

### The error may involve com.twodatasource.front.dao.UserMapper.selectAll

### The error occurred while executing a query

### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${driver}'] with root cause

java.lang.ClassNotFoundException: ${driver}

    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)

    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)

    at java.lang.Class.forName0(Native Method)

    at java.lang.Class.forName(Class.java:260)

    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)

    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)

    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)

    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

    at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)

    at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:66)

    at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:279)

    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:69)

    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:56)

    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)

    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:141)

    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)

    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)

    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:101)

    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:95)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:483)

    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355)

 

错误信息是加载不了{driver}

后来在配置文件中把它写死了就可以了

 

<bean id="dataSourceFront" class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName" value="com.mysql.jdbc.Driver" />

        <property name="url" value="jdbc:mysql://112.74.51.37:3306/front" />

        <property name="username" value="root" />

        <property name="password" value="tq2016" />

        初始化连接大小

        <property name="initialSize" value="${initialSize}"></property>

        连接池最大数量

        <property name="maxActive" value="${maxActive}"></property>

        连接池最大空闲

        <property name="maxIdle" value="${maxIdle}"></property>

        连接池最小空闲

        <property name="minIdle" value="${minIdle}"></property>

        获取连接最大等待时间

        <property name="maxWait" value="${maxWait}"></property>

    </bean>

 

关于这一点我也在网上搜索了一些答案,但是都没有能够正确的解决的。所以如果有哪位大神搞定了还请不吝啬赐教一下。

 

猜你喜欢

转载自www.cnblogs.com/banma/p/9069905.html