1. 要搭建的项目的项目结构如下(使用的框架为:Spring、SpingMVC、MyBatis):

2.pom.xml中的配置如下(注意,本工程分为几个小的子工程,另外两个工程最终是jar包):

其中pom.xml中的内容如下,其中${ip}为ip地址:

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

<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>xxx.xxx.xxx</groupId>

<artifactId>xxx</artifactId>

<packaging>pom</packaging>

<version>1.0-SNAPSHOT</version>

<name>App tpl</name>

<modules>

<module>xxx-api</module>

<module>xxx-impl</module>

<module>xxx-webapp</module>

</modules>

<scm>

<connection>scm:svn:http://${ip}/svn/xxx/trunk</connection>

<developerConnection>scm:svn:http://${ip}/svn/xxx/trunk</developerConnection>

<url>http://${ip}/svn/xxx/trunk</url>

</scm>

</project>

其中xxx-xxx-webapp中的pom配置如下:

其中maven项目的目录结构:

xxx-xxx-webapp

--src

--main

---java

---resources

---webapp

--test

--pom.xml

<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>xxx.xxx.xxx</groupId>

<artifactId>xxx-xxx-webapp</artifactId>

<packaging>war</packaging>

<version>1.0-SNAPSHOT</version>

<name>xxx-xxx-webapp</name>

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

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.0.2</version>

<configuration>

<source>1.5</source>

<target>1.5</target>

<fork>true</fork>

<meminitial>128m</meminitial>

<maxmem>512m</maxmem>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<plugin>

<artifactId>maven-eclipse-plugin</artifactId>

<version>2.5.1</version>

<configuration>

<additionalProjectnatures>

<projectnature>

org.springframework.ide.eclipse.core.springnature

</projectnature>

</additionalProjectnatures>

<additionalBuildcommands>

<buildcommand>

org.springframework.ide.eclipse.core.springbuilder

</buildcommand>

</additionalBuildcommands>

<downloadSources>false</downloadSources>

<downloadJavadocs>false</downloadJavadocs>

<wtpversion>1.5</wtpversion>

</configuration>

</plugin>

<!-- 要加上下面的一句,否则执行:mvn package -Dmaven.test.skip=true的时候会报错 -->

<plugin>

<artifactId>maven-war-plugin</artifactId>

<version>2.1.1</version>

</plugin>

</plugins>

</build>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<spring.version>4.0.3.RELEASE</spring.version>

</properties>

<dependencies>

<!-- Spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-orm</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-test</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</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-jms</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</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-oxm</artifactId>

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

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.2</version>

</dependency>

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.2</version>

</dependency>

<!-- Test -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.7</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>aopalliance</groupId>

<artifactId>aopalliance</artifactId>

<version>1.0</version>

</dependency>

<dependency>

<groupId>commons-dbcp</groupId>

<artifactId>commons-dbcp</artifactId>

<version>1.3</version>

</dependency>

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3</version>

</dependency>

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>1.4</version>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.1.3</version>

</dependency>

<dependency>

<groupId>commons-pool</groupId>

<artifactId>commons-pool</artifactId>

<version>1.5.4</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc14</artifactId>

<version>10.2.0.3.0</version>

</dependency>

<dependency>

<groupId>taglibs</groupId>

<artifactId>standard</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>commons-codec</groupId>

<artifactId>commons-codec</artifactId>

<version>1.6</version>

</dependency>

<dependency>

<groupId>commons-lang</groupId>

<artifactId>commons-lang</artifactId>

<version>2.1</version>

</dependency>

<dependency>

<groupId>net.sf.ezmorph</groupId>

<artifactId>ezmorph</artifactId>

<version>1.0.6</version>

</dependency>

<dependency>

<groupId>commons-httpclient</groupId>

<artifactId>commons-httpclient</artifactId>

<version>3.1</version>

</dependency>

<dependency>

<groupId>net.sf.json-lib</groupId>

<artifactId>json-lib</artifactId>

<version>2.3</version>

<classifier>jdk15</classifier>

</dependency>

<dependency>

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

<artifactId>poi</artifactId>

<version>3.7</version>

</dependency>

<dependency>

<groupId>org.jasig.cas.client</groupId>

<artifactId>cas-client-core</artifactId>

<version>3.2.0</version>

</dependency>

<dependency>

<groupId>org.jasig.cas.client</groupId>

<artifactId>ucap-cas-client</artifactId>

<version>3.2.1</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.2.8</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.2</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>transaction</artifactId>

<version>3.1.1</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>web.servlet</artifactId>

<version>3.1.1</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<version>2.0</version>

<scope>provided</scope>

</dependency>

<!--CMS引用json -->

<dependency>

<groupId>org.json</groupId>

<artifactId>org.json</artifactId>

<version>chargebee-1.0</version>

</dependency>

<!-- json -->

<dependency>

<groupId>net.sf.json-lib</groupId>

<artifactId>json-lib</artifactId>

<version>2.4</version>

<classifier>jdk15</classifier>

</dependency>

<dependency>

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

<artifactId>jackson-core-lgpl</artifactId>

<version>1.9.13</version>

</dependency>

<dependency>

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

<artifactId>jackson-mapper-lgpl</artifactId>

<version>1.9.13</version>

</dependency>

<dependency>

<groupId>org.json</groupId>

<artifactId>json</artifactId>

<version>20140107</version>

</dependency>

<dependency>

<groupId>com.ucap.webservice</groupId>

<artifactId>uservices-api</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>org.mybatis.caches</groupId>

<artifactId>mybatis-ehcache</artifactId>

<version>1.0.2</version>

</dependency>

<!-- 提交兼容MySQL的依赖 -->

<dependency>

<groupId>mysql</groupId>

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

<version>5.1.38</version>

</dependency>

<!-- 阿里巴巴的druid数据源配置 -->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.0.7</version>
</dependency>

<!-- 整合redis所需的jar包 -->
        <dependency>
   <groupId>org.springframework.data</groupId>
   <artifactId>spring-data-redis</artifactId>
   <version>1.6.0.RELEASE</version>
</dependency>
<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.7.3</version>
</dependency>

</dependencies>

</project>

其中xxx-api工程的pom文件如下:

工程结构:

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

<parent>

<!—和第一个pom文件中的pom.xml相同-->

<groupId>xxx.xxx.xxx</groupId>

<!—和第一个pom文件中的pom.xml相同à

<artifactId>xxx</artifactId>

<version>1.0-SNAPSHOT</version>

</parent>

<groupId>xxx.xxx.xxx</groupId>

<artifactId>xxx-xxx-api</artifactId>

<packaging>jar</packaging>

<name>App tpl Api</name>

<version>1.0-SNAPSHOT</version>

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.0.2</version>

<configuration>

<source>1.5</source>

<target>1.5</target>

<fork>true</fork>

<meminitial>128m</meminitial>

<maxmem>512m</maxmem>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<plugin>

<artifactId>maven-eclipse-plugin</artifactId>

<version>2.5.1</version>

<configuration>

<additionalProjectnatures>

<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>

</additionalProjectnatures>

<additionalBuildcommands>

<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>

</additionalBuildcommands>

<downloadSources>false</downloadSources>

<downloadJavadocs>false</downloadJavadocs>

<wtpversion>1.5</wtpversion>

</configuration>

</plugin>

</plugins>

</build>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<dependencies>

<!—这里放置的是工程中的jar依赖-->

</dependencies>

</project>

其中xxx-xxx.impl工程中的pom文件如下:

工程结构如下:

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

<parent>

<groupId>xxx.xxx.xxx</groupId>

<artifactId>xxx</artifactId>

<version>1.0-SNAPSHOT</version>

</parent>

<groupId>xxx.xxx.xxx</groupId>

<artifactId>xxx-xxx-xxx</artifactId>

<packaging>jar</packaging>

<name>App tpl Api</name>

<version>1.0-SNAPSHOT</version>

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.0.2</version>

<configuration>

<source>1.5</source>

<target>1.5</target>

<fork>true</fork>

<meminitial>128m</meminitial>

<maxmem>512m</maxmem>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<plugin>

<artifactId>maven-eclipse-plugin</artifactId>

<version>2.5.1</version>

<configuration>

<additionalProjectnatures>

<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>

</additionalProjectnatures>

<additionalBuildcommands>

<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>

</additionalBuildcommands>

<downloadSources>false</downloadSources>

<downloadJavadocs>false</downloadJavadocs>

<wtpversion>1.5</wtpversion>

</configuration>

</plugin>

<!-- 要加上下面的一句,否则执行:mvn package -Dmaven.test.skip=true的时候会报错 -->

<plugin>

<artifactId>maven-war-plugin</artifactId>

<version>2.1.1</version>

</plugin>

</plugins>

</build>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<spring.version>4.0.3.RELEASE</spring.version>

</properties>

<dependencies>

<!--

Spring,使用下面的方式之后能够使用 @RunWith(SpringJUnit4ClassRunner.class)

的方式编写单元测试了

-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-orm</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-test</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</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-jms</artifactId>

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

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</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-oxm</artifactId>

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

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.2</version>

</dependency>

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.2</version>

</dependency>

<!-- Test -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.7</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>aopalliance</groupId>

<artifactId>aopalliance</artifactId>

<version>1.0</version>

</dependency>

<dependency>

<groupId>commons-dbcp</groupId>

<artifactId>commons-dbcp</artifactId>

<version>1.3</version>

</dependency>

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3</version>

</dependency>

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>1.4</version>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.1.3</version>

</dependency>

<dependency>

<groupId>commons-pool</groupId>

<artifactId>commons-pool</artifactId>

<version>1.5.4</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc14</artifactId>

<version>10.2.0.3.0</version>

</dependency>

<dependency>

<groupId>taglibs</groupId>

<artifactId>standard</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>commons-codec</groupId>

<artifactId>commons-codec</artifactId>

<version>1.6</version>

</dependency>

<dependency>

<groupId>commons-lang</groupId>

<artifactId>commons-lang</artifactId>

<version>2.1</version>

</dependency>

<dependency>

<groupId>net.sf.ezmorph</groupId>

<artifactId>ezmorph</artifactId>

<version>1.0.6</version>

</dependency>

<dependency>

<groupId>commons-httpclient</groupId>

<artifactId>commons-httpclient</artifactId>

<version>3.1</version>

</dependency>

<dependency>

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

<artifactId>httpclient</artifactId>

<version>4.3.1</version>

</dependency>

<dependency>

<groupId>org.apache</groupId>

<artifactId>httpmime</artifactId>

<version>4.3</version>

</dependency>

<dependency>

<groupId>net.sf.json-lib</groupId>

<artifactId>json-lib</artifactId>

<version>2.3</version>

<classifier>jdk15</classifier>

</dependency>

<dependency>

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

<artifactId>poi</artifactId>

<version>3.7</version>

</dependency>

<dependency>

<groupId>com.ucap.utils</groupId>

<artifactId>utils</artifactId>

<version>1.4-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>com.ucap.base</groupId>

<artifactId>base</artifactId>

<version>1.6-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>com.ucap.wcm</groupId>

<artifactId>website-api</artifactId>

<version>1.6-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>xxx.xxx.xxx</groupId>

<artifactId>app-tpl-api</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>org.jasig.cas.client</groupId>

<artifactId>cas-client-core</artifactId>

<version>3.2.0</version>

</dependency>

<dependency>

<groupId>org.jasig.cas.client</groupId>

<artifactId>ucap-cas-client</artifactId>

<version>3.2.1</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.2.8</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.2</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>transaction</artifactId>

<version>3.1.1</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>web.servlet</artifactId>

<version>3.1.1</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

</dependency>

<dependency>

<groupId>com.ucap.rpc</groupId>

<artifactId>rpc</artifactId>

<version>1.1-SNAPSHOT</version>

</dependency>

</dependencies>

</project>

3.在web.xml中配置使用的Spring配置的文件,代码如下:

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>spring_Modle</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>

<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>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>characterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping> 
    
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:context-dispatcher.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>

<!-- druid -->
<servlet>
   <servlet-name>DruidStatView</servlet-name>
   <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>DruidStatView</servlet-name>
   <url-pattern>/druid/*</url-pattern>
</servlet-mapping>

<session-config>
   <!-- 设置过期时间为一年,相当于是一年都不过期 -->
<session-timeout>525600</session-timeout>
</session-config>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

4、接着配置spring的applicationContext.xml,配置如下:

依赖的文件是:jdbc.properties、mybatis.xml、context-dispatcher.xml

jdbc.properties的配置如下:

##配置数据库类型,参数可以填写成mysql,oracle,默认是oracle的数据库

dbType=oracle

#如果是mysql的配置成

#dbType=mysql

##Oracle对应的数据库相关配置

oracleDriver=oracle.jdbc.driver.OracleDriver

oracleUrl=jdbc:oracle:thin:@localhost:1521:orcl

oracleUsername=cmspro

oraclePassword=cmspro

##针对MySQL版本的时候进行如下配置

mysqlDriver=com.mysql.jdbc.Driver

mysqlUrl=jdbc\:mysql\://localhost\:3306/test

mysqlUsername=root

mysqlPassword=

mybatis.xml的配置如下:

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

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD  Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!--开启延迟加载 -->

<settings>

<!--全局的延迟加载的开关必须要开启 -->

<setting name="lazyLoadingEnabled" value="true" />

<!--积极加载设置成false -->

<setting name="aggressiveLazyLoading" value="false" />

<!--开启二级缓存,缓存中只要是需要配置的针对的都是二级缓存 -->

<setting name="cacheEnabled" value="true" />

</settings>

<typeAliases>

<typeAlias type="xxx.xxx.xxx.entity.Component" alias="component" />

<typeAlias type="xxx.xxx.xxx.entity.Layout" alias="layout" />

<typeAlias type="xxx.xxx.xxx.entity.Master" alias="master" />

<typeAlias type="xxx.xxx.xxx.entity.MasterType" alias="masterType" />

<typeAlias type="xxx.xxx.xxx.entity.Special" alias="special" />

<typeAlias type="xxx.xxx.xxx.entity.SpecialShare" alias="specialShare" />

<typeAlias type="xxx.xxx.xxx.entity.SpecialVersion" alias="specialVersion" />

<typeAlias type="xxx.xxx.xxx.entity.Style" alias="style" />

<typeAlias type="xxx.xxx.xxx.entity.Block" alias="block" />

<typeAlias type="xxx.xxx.xxx.entity.InnerStyle" alias="innerStyle" />

<typeAlias type="xxx.xxx.xxx.entity.RoleFunction" alias="roleFunction" />

<typeAlias type="xxx.xxx.xxx.entity.SpecialSharedInfo" alias="specialSharedInfo" />

</typeAliases>

<plugins>

<plugin interceptor="xxx.xxx.xxx.interceptor.PageInterceptor"></plugin>

</plugins>

<!-- 下面的Mapper文件在app-tpl-impl中定义 -->

<!--

<mappers>

<mapper resource="sqlmaps/ComponentMapper.xml" />

<mapper resource="sqlmaps/LayoutMapper.xml" />

<mapper resource="sqlmaps/MasterMapper.xml" />

<mapper resource="sqlmaps/MasterTypeMapper.xml" />

<mapper resource="sqlmaps/SpecialMapper.xml" />

<mapper resource="sqlmaps/SpecialShareMapper.xml" />

<mapper resource="sqlmaps/SpecialVersionMapper.xml" />

<mapper resource="sqlmaps/StyleMapper.xml" />

<mapper resource="sqlmaps/BlockMapper.xml" />

<mapper resource="sqlmaps/InnerStyleMapper.xml" />

<mapper resource="sqlmaps/RoleFunctionMapper.xml" />

</mappers>

-->

</configuration>

context-dispatcher.xml的配置如下:

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

<beans default-lazy-init="true"

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

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

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

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

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

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

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

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

       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!-- 使用注解的包,包括子集 -->

<context:component-scan base-package="xxx.xxx.xxx" />

<!-- 通过注解,把URL映射到Controller上,该标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter

-->

<mvc:annotation-driven>

<mvc:message-converters>

<bean class="org.springframework.http.converter.StringHttpMessageConverter">

<constructor-arg value="UTF-8" />

</bean>

</mvc:message-converters>

</mvc:annotation-driven>

<!-- 视图解析器 -->

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

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />

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

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

</bean>

<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>

<bean id="multipartResolver"

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

<!--<bean id="multipartResolver" class="xxx.xxx.xxx.resolver.MyCommonsMultipartResolver">

<property name="maxUploadSize" value="20480000"/>1024*20即20k

<property name="resolveLazily" value="true"/>resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常

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

</bean>

-->

<!-- 拦截器 -->

<mvc:interceptors>

<bean class="xxx.xxx.xxx.interceptor.LoginInterceptor">

<property name="redirectUrl" value="http://127.0.0.1:8888/cas/logout?service=http://127.0.0.1:8888/website-webapp/" />

</bean>

</mvc:interceptors>

<!-- 总错误处理 -->

<!--

<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

<property name="defaultErrorView">

<value>/error/error</value>

</property>

<property name="defaultStatusCode">

<value>500</value>

</property>

<property name="warnLogCategory">

<value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver</value>

</property>

</bean>

-->

<!-- 对静态资源文件的访问  -->

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

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

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

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

</beans>

applicationContext.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:tx="http://www.springframework.org/schema/tx"
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/tx   
    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 
    http://www.springframework.org/schema/cache 
    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd 
    http://www.springframework.org/schema/task 
    http://www.springframework.org/schema/task/spring-task-3.1.xsd
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    
    <!-- 缓存配置
    <ehcache:annotation-driven cache-manager="cacheManager" />  
    <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
        <property name="configLocation" value="classpath:ehcache.xml"/>  
    </bean>
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="cacheManagerFactory" />
    </bean>
     -->
<!-- 打开注解 -->
<context:annotation-config />
<!-- 打开自动扫描 -->
<context:component-scan base-package="xxx.xxx.xxx" />

<!-- 定时器驱动 -->
<task:annotation-driven/>

<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties,classpath:redis.properties" />

<!-- 
以下用于配置多数据源
配置parentDataSource的父bean,再配置多个数据源继承这个bean,对driverClassName、
url、username、password等数据源连接参数进行各自的重写、例如mysqlDataSource、
在DataSource bean中要注入所要切换的数据、并且设置默认的数据源
-->
<!--<bean id="parentDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"></bean>
创建MySQL对应的jdbc数据源 
<bean id="mysqlDataSource" parent="parentDataSource">
<property name="driverClassName" value="${mysqlDriver}"></property>
<property name="url" value="${mysqlUrl}"></property>
<property name="username" value="${mysqlUsername}"></property>
<property name="password" value="${mysqlPassword}"></property>
</bean>
-->

<!-- 数据源 org.apache.commons.dbcp.BasicDataSource com.alibaba.druid.pool.DruidDataSource -->
<bean id="parentDataSource" class="com.alibaba.druid.pool.DruidDataSource">
   <!-- 初始化连接大小 -->
   <property name="initialSize" value="8" />
   <!-- 连接池最大使用连接数量 -->
   <property name="maxActive" value="32" />
   <!-- 连接池最小空闲 -->
   <property name="minIdle" value="4" />
   <!-- 获取连接最大等待时间 -->
   <property name="maxWait" value="60000" />
   
   <!--<property name="validationQuery"><value>SELECT 1</value></property>-->
   <property name="testOnBorrow" value="false" />
   <property name="testOnReturn" value="false" />
   <property name="testWhileIdle" value="true" />
   
   <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
   <property name="timeBetweenEvictionRunsMillis" value="60000" />
   <!-- 配置一个连接池中最小生存的时间,单位是毫秒 -->
   <property name="minEvictableIdleTimeMillis" value="25200000" />
   
   <!-- 打开removeAbandoned功能 -->
   <property name="removeAbandoned" value="true" />
   <!-- 1800秒,也就是30分钟 -->
   <property name="removeAbandonedTimeout" value="1800" />
   <!-- 关闭abanded连接时输出错误日志 -->
   <property name="logAbandoned" value="true" />
   <!-- 监控数据库 -->
   <property name="filters" value="mergeStat" />
</bean>
<!-- 创建MySQL对应的jdbc数据源 -->
<bean id="mysqlDataSource" parent="parentDataSource">
<property name="driverClassName" value="${mysqlDriver}"></property>
<property name="url" value="${mysqlUrl}"></property>
<property name="username" value="${mysqlUsername}"></property>
<property name="password" value="${mysqlPassword}"></property>
</bean>

<!--创建jdbc数据源 -->
<bean id="oracleDataSource" parent="parentDataSource">
<property name="driverClassName" value="${oracleDriver}" />
<property name="url" value="${oracleUrl}" />
<property name="username" value="${oracleUsername}" />
<property name="password" value="${oraclePassword}" />
</bean>

<!-- 配置druid监控spring jdbc -->
<bean id="druid-stat-interceptor"
        class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
    </bean>

<!-- 注意下面的com.ucap.tpl.mapper.base.impl.DataSources是自己定义的数据源-->
<bean id="dataSource" class="com.ucap.tpl.mapper.base.impl.DataSources">
<property name="dbType" value="${dbType}"></property>
<property name="targetDataSources">
<map key-type="java.lang.String">
<!-- 注意下面的key的值要和DataSourceInstances中定义的值相同-->
<entry value-ref="mysqlDataSource" key="MYSQL"></entry>
<entry value-ref="oracleDataSource" key="ORACLE"></entry>
</map>
</property>
<property name="defaultTargetDataSource" ref="oracleDataSource"></property>
</bean>

<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager"
   proxy-target-class="true"/>

<!-- 创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations">
<list>
   <!-- 配置Mapper文件 -->
   <value>classpath:sqlmaps/${dbType}/*.xml</value>
</list>
</property>
</bean>

<import resource="redis-context.xml"/>
</beans>

5、基于以上applicationContext.xml,我们知道,若想兼容不同的数据库、需要以下类:

注意:上图的sqlmaps下的目录名称和jdbc.properties中的数据库名称相同

其中:DataSourceInstances.java的代码如下:

package xxx.xxx.xxx.mapper.base.impl;

/**

* DataSourceInstances.java

* @attention 定义数据源,和applicationContext.xml中的DataSources的targetDataSources的key对应

* @author toto

* @date 2016-9-11

* @note begin modify by 涂作权 2016-9-11 原始创建

*/

public class DataSourceInstances {

public static final String MYSQL = "MYSQL";

public static final String ORACLE = "ORACLE";

}

DataSourceSwitch.java的代码如下:

package xxx.xxx.xxx.mapper.base.impl;

/**

* DataSourceSwitch.java 用于切换数据库类型

* @attention

* @author toto

* @date 2016-9-11

* @note begin modify by 涂作权 2016-9-11 原始创建

*/

@SuppressWarnings({"unchecked"})

public class DataSourceSwitch {

private static final ThreadLocal contextHolder = new ThreadLocal();

public static void setDataSourceType(String dataSourceType) {

contextHolder.set(dataSourceType);

}

public static String getDataSourceType() {

return (String)contextHolder.get();

}

public static void clearDataSourceType() {

contextHolder.remove();

}

}

DataSources.java的代码结构如下:

package xxx.xxx.xxx.mapper.base.impl;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**

* DataSources.java 类或者接口的简要说明

* @attention <p>配置于applicationContext中,线程局部变量ThreadLocal contextHolder保存当前需要的数据类型</p>

* <p>当DataSourceSwitch.setDataSourceType(DataSourceInstances.xxxx),保存当前需要的数据源类型的,</p>

* <p>DataSources会从当前线程中查找线程变量的数据类型,从而决定使用何种类型的数据员</p>

*

* @author toto

* @date 2016-9-11

* @note begin modify by 涂作权 2016-9-11 原始创建

*/

public class DataSources extends AbstractRoutingDataSource {

//private static final Logger logger = Logger.getLogger(DataSources.class);

public String dbType;

//@Override

protected Object determineCurrentLookupKey() {

if (dbType.equalsIgnoreCase(DataSourceInstances.MYSQL)) {

DataSourceSwitch.setDataSourceType(DataSourceInstances.MYSQL);

} else if(dbType.equalsIgnoreCase(DataSourceInstances.ORACLE)) {

DataSourceSwitch.setDataSourceType(DataSourceInstances.ORACLE);

} else {

DataSourceSwitch.setDataSourceType(DataSourceInstances.ORACLE);

}

return DataSourceSwitch.getDataSourceType();

}

public String getDbType() {

return dbType;

}

public void setDbType(String dbType) {

this.dbType = dbType;

}

}

6、其它常用工具:

公共的mapper类

package xxx.xxx.xxx.mapper.base.impl;

import java.io.Serializable;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.annotation.Resource;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.log4j.Logger;

import org.mybatis.spring.support.SqlSessionDaoSupport;

import org.springframework.cache.annotation.CacheEvict;

import org.springframework.cache.annotation.Cacheable;

import xxx.xxx.xxx.mapper.base.BaseMapper;

import com.ucap.utils.UUIDGenerator;

@SuppressWarnings("unchecked")

public class BaseMapperImpl<T, PK extends Serializable> extends

SqlSessionDaoSupport implements BaseMapper<T, PK> {

public static Logger logger = Logger.getLogger(BaseMapperImpl.class);

private Class<T> entityClass = null;

/**

* 创建默认构造方法,以取得真正的泛型类型

*/

public BaseMapperImpl() {

Class<?> c = getClass();

Type type = c.getGenericSuperclass();

if (type instanceof ParameterizedType) {

Type[] parameterizedType = ((ParameterizedType) type).getActualTypeArguments();

entityClass = (Class<T>) parameterizedType[0];

}

}

@Resource(name = "sqlSessionFactory")

public void setSuperSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {

super.setSqlSessionFactory(sqlSessionFactory);

}

// 保存实体对象

@CacheEvict(value = "ehcache", allEntries = true)

public T insert(T entity) {

try {

Field[] fileds = entity.getClass().getDeclaredFields();

for (Field field : fileds) {

if (field.getName().equals("id")) {

Method setIdMethod = entity.getClass().getDeclaredMethod(

"setId", String.class);

setIdMethod.invoke(entity, UUIDGenerator.generate());

}

}

} catch (Exception e) {

e.printStackTrace();

}

getSqlSession().insert(entity.getClass().getName() + "Mapper.insert",entity);

return entity;

}

// 更新

@CacheEvict(value = "ehcache", allEntries = true)

public void update(T entity) {

getSqlSession().update(entity.getClass().getName() + "Mapper.update",entity);

}

// 根据id删除某个对象

@CacheEvict(value = "ehcache", allEntries = true)

public void deleteById(PK id) {

getSqlSession().delete(entityClass.getName() + "Mapper.deleteById", id);

}

//根据id,逻辑上删除某个对象(更行状态值)

public void deleteByUpdateState(PK id) {

getSqlSession().delete(entityClass.getName() + "Mapper.deleteByUpdateState", id);

}

// 根据id加载某个对象

@Cacheable(value = "ehcache", key = "#id")

public T fetch(PK id) {

return (T)getSqlSession().selectOne(entityClass.getName() + "Mapper.fetch", id);

}

// 查找所有的对象

public List<T> findAll() {

return (List<T>)getSqlSession().selectList(entityClass.getName() + "Mapper.findAll", null);

}

//设置是否共享,如果SHARESTATE = 1 表示的是共享,SHARESTATE = 0:表示专享

public void updateShareState(T entity) {

getSqlSession().update(entityClass.getName() + "Mapper.updateShareState", entity);

}

/**

* 查询所有对象:分页查询

* @param paramMap

* @return 返回某1页的数据

* @attention 方法的使用注意事项  【必带参数:page】

* @author YangWeiQiang

* @date 2015-11-12

*/

public List<T> findAllByPage(Map paramMap) {

return (List<T>)getSqlSession().selectList(entityClass.getName() + "Mapper.queryListByPage", paramMap);

}

// 根据查询参数,当前页数,每页显示的数目得到分页列表

/*

@Cacheable(value = "ehcache", key = "'queryPage-'+#condition+'-'+#currentPage+'-'+#pageSize")

public Pager<T> queryPage(Map<String, Object> condition,

Integer currentPage, Integer pageSize) {

Pager<T> pager = new Pager<T>(pageSize, count(condition), currentPage);

try {

if (condition == null) {

condition = new HashMap<String, Object>();

}

condition.put("beginRow", (pager.getCurrentPage() - 1)

* pager.getPageSize());

condition.put("pageSize", pager.getPageSize());

List<T> dataList = this.getSqlSession().selectList(

entityClass.getName() + "Mapper.queryList", condition);

pager.setDataList(dataList);

return pager;

} catch (RuntimeException re) {

logger.error("findList " + entityClass.getName() + "failed :{}",

re);

re.printStackTrace();

}

return null;

}*/

/**

* 通过条件查询

*/

public int count(Map<String, Object> condition) {

int count = (Integer)getSqlSession().selectOne(entityClass.getName() + "Mapper.count", condition);

return count;

}

@Cacheable(value = "ehcache", key = "'queryList-'+#condition+'-orderBy-'+#orderBy+'-sortBy-'+#sortBy")

public List<T> queryList(Map<String, Object> condition, String orderBy,

String sortBy) {

if (condition == null) {

condition = new HashMap<String, Object>();

condition.put("orderBy", orderBy);

condition.put("sortBy", sortBy);

}

return (List<T>)getSqlSession().selectList(

entityClass.getName() + "Mapper.queryList", condition);

}

/**

* 通过条件查询一条

*/

@Cacheable(value = "ehcache", key = "'queryOne-'+#condition")

public T queryOne(Map<String, Object> condition) {

return (T)getSqlSession().selectOne(

entityClass.getName() + "Mapper.queryOne", condition);

}

/**

* 更新或保存

*/

@CacheEvict(value = "ehcache", allEntries = true)

public T updateOrSave(T t, PK id) {

if (null != fetch(id)) {

update(t);

} else {

return insert(t);

}

return t;

}

@Cacheable(value = "ehcache", key = "'findOne-'+#property+'-'+#value")

public T findOne(String property, Object value) {

Map<String, Object> condition = new HashMap<String, Object>();

condition.put(property, value);

return (T)getSqlSession().selectOne(

entityClass.getName() + "Mapper.findOne", condition);

}

@Cacheable(value = "ehcache", key = "'findList-'+#property+'-'+#value")

public List<T> findList(String property, Object value) {

Map<String, Object> condition = new HashMap<String, Object>();

condition.put(property, value);

return getSqlSession().selectList(

entityClass.getName() + "Mapper.findList", condition);

}

public Class<T> getEntityClass() {

return entityClass;

}

public Integer selectMaxId() {

return getSqlSession().selectOne(

entityClass.getName() + "Mapper.selectMaxId");

}

@CacheEvict(value = "ehcache", allEntries = true)

public void deleteByCondition(Map<String, Object> condition) {

getSqlSession().delete(

entityClass.getName() + "Mapper.deleteByCondition", condition);

}

@CacheEvict(value = "ehcache", allEntries = true)

public void deleteByProperty(String property, Object value) {

Map<String, Object> condition = new HashMap<String, Object>();

condition.put(property, value);

deleteByCondition(condition);

}

@CacheEvict(value = "ehcache", allEntries = true)

public void updateNull(T entity) {

getSqlSession().update(entityClass.getName() + "Mapper.updateNull",entity);

}

@Cacheable(value = "ehcache", key = "'selectOne-'+#mapperId+'-'+#obj")

public T selectOne(String mapperId, Object obj) {

return (T)getSqlSession().selectOne(

entityClass.getName() + "Mapper." + mapperId, obj);

}

@Cacheable(value = "ehcache", key = "'selectList-'+#mapperId+'-'+#obj")

public List<T> selectList(String mapperId, Object obj) {

return getSqlSession().selectList(

entityClass.getName() + "Mapper." + mapperId, obj);

}

@CacheEvict(value = "ehcache", allEntries = true)

public List<T> insertList(List<T> entities) {

return getSqlSession().selectList(

entityClass.getName() + "Mapper.insertList", entities);

}

/*

public DetailsPager<T> queryDetailsPage(Map<String, Object> condition, PK id) {

T currentObj = fetch(id);

if (currentObj != null) {

List<PK> ids = getSqlSession().selectList(

entityClass.getName() + "Mapper.findIds", condition);

int currentObjIndex = ids.indexOf(id);

DetailsPager<T> page = new DetailsPager<T>(currentObj);

if (currentObjIndex > 0)

page.setPreObj(fetch(ids.get(currentObjIndex - 1)));

if (currentObjIndex < ids.size() - 1)

page.setNextObj(fetch(ids.get(currentObjIndex + 1)));

return page;

}

return null;

}*/

public List<T> like(String property, Object value) {

Map<String, Object> condition = new HashMap<String, Object>();

condition.put(property, value);

return getSqlSession().selectList(

entityClass.getName() + "Mapper.like", condition);

}

}

在xxx-xxx-webapp中的单元测试写法:

package xxx.xxx.xxx;

import javax.annotation.Resource;

import org.apache.log4j.Logger;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import xxx.xxx.xxx.entity.Component;

import xxx.xxx.xxx.service.component.ComponentService;

/**

* ComponentTestCase.java 单元测试案例

* @attention

* @author toto

* @date 2016-8-24

* @note begin modify by 涂作权 2016-8-24 原始创建

*/

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {

"classpath:context-dispatcher.xml",

"classpath:applicationContext.xml"})

public class ComponentTestCase {

private static final Logger logger = Logger.getLogger(ComponentTestCase.class);

@Resource(name = "componentService")

private ComponentService componentService;

@Test

public void testHello() {

Component component = componentService.findComponent("98a77fe0a737400b80c354b216773119");

logger.info("-----------------------");

logger.info(component.getComponentName());

logger.info("-----------------------");

}

}

httpClient调用http请求。其中接口是一个action,直接返回的是json数据。

String url = ExtendedServerConfig.getInstance().getStringProperty("MANUSCRIPTS_APPENDIXS_URL");

String result = "";

HttpPost httpRequest = new HttpPost(url);

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("params", params));

httpRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));

HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);

//释放post请求

//httpRequest.abort();

if (httpResponse.getStatusLine().getStatusCode() == 200) {

HttpEntity httpEntity = httpResponse.getEntity();

result = EntityUtils.toString(httpEntity);

}

maven常用命令:

mvn -Pall eclipse:eclipse

mvn clean

mvn compile -Dmaven.test.skip=true
mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例相关推荐

  1. java web项目_[适合初中级Java程序员修炼手册从0搭建整个Web项目](二)

    前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206种一棵树最好的时间是十年前,其次是现在 six-finger-web 一个Web后端 ...

  2. Spring+SpringMVC+Mybatis实现增删改查--(五)SSM修改员工页面搭建

    Spring+SpringMVC+Mybatis实现增删改查--(五)SSM修改员工页面搭建 修改员工: 1.在index.jsp页面点击"编辑"弹出编辑对话框 2.去数据库查询部 ...

  3. 谷粒商城项目篇1_分布式基础篇_分布式基础概念、环境搭建、创建项目

    写在前面 为丰富项目经验,特此学习B站开源视频<全网最强电商教程<谷粒商城>对标阿里P6/P7,40-60万年薪>希望通过此学习能巩固所学,将技术栈串接起来. 此项目三个阶段 ...

  4. 【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程

    [Spring Boot]使用Spring Boot来搭建Java web项目以及开发过程 一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

  5. 腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】

    目录 1. 腾讯云购买学生轻量应用服务器 2. 为服务器用户设置密码允许远程登录 3. 本地下载Xshell和Xftp远程管理更方便 4. 域名认证和域名解析 5. 服务器安装JDK和Tomcat 6 ...

  6. Gin+Gorm+sessions 搭建 golang web项目

    Gin是用Go(Golang)编写的HTTP web框架.它具有类似Martini的API,但性能比Martini快40倍 Gorm,Golang 出色的ORM库 sessions,具有多后端支持的用 ...

  7. MyEclipse搭建java Web项目开发环境

    MyEclipse搭建java Web项目开发环境 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭 ...

  8. java web开发myeclipse_【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)...

    首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网 ...

  9. Spring Boot + JPA +MySQL 数据操作及示例环境搭建(自动建表)

    JPA 是Java官方提供的数据持久的统一API , 是一个接口标准,并没有具体实现. JPA的实现常见的有: Hibernate TopLink (Eclipse Link) Spring Boot ...

最新文章

  1. python跟java-还在纠结选Python还是Java?看完就有数了
  2. MVC与三层架构的区别
  3. SSL 的 java 实现
  4. Centos挂载硬盘
  5. linux查看nginx、apache、php、php-fpm、mysql及配置项所在目录
  6. Bishops Alliance—— 最大上升子序列
  7. Linux设备驱动模型2——总线式设备驱动组织方式
  8. input file获取文件路径_python 基础 — 整理文件
  9. python下载url链接_使用Python从url地址下载所有pdf文件
  10. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)
  11. 算法笔记_面试题_13.二叉树的最近公共祖先
  12. app前后台交互php_PHP分布式架构RPC介绍以及手写RPC框架
  13. 【SCI文献下载】手把手教你如何免费下载SCI文献
  14. Hibernate JPA 效率低下的原因
  15. 双三次插值算法(bicubic interpolation)与图形学和计算方法的关系
  16. Laravel文档梳理10、请求生命的周期
  17. 一天狂点3.7万个赞! 男子因“点赞过多”被大众点评网处罚 法庭上吵翻
  18. Excel:一个Excel自动计算公式,一个Excel手动计算?多进程
  19. cesium实用功能-选中gltf、glb拖动修改位置,bim没试
  20. js监听手机返回按键操作,禁用返回按键操作。

热门文章

  1. 前端基础之JavaScript_2
  2. django中的项目使用mysql中的配置新建用户授予权限
  3. 2.Hadoop的学习(Ubuntu的目录及权限)
  4. 组合数据类型{集合,序列【字符串,元组,列表】,字典}
  5. jdk1.8 源码分析导图
  6. VTK:ShareCamera分享相机用法实战
  7. boost::mpi模块实现测试mpi版本
  8. boost::hana::all用法的测试程序
  9. boost::exception的用法测试
  10. ITK:在图像上叠加标签图