spring+springMVC+mybatis框架


上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合。


虽然在之前activiti相关的学习中所用到的框架也是这个,但是当时重点在于实现activiti的功能,因此在环境搭建上也只是以能用为前提,与真实项目中所用的还是差了不少。


因此为了给接下来的项目做准备,今天便抽空练习了一下这个框架组合的搭建。虽然之前的框架都不是我来搭,接下来这个可能也不是让我搭,但记录下来说不定以后能用上,也或者对其他人有用。


那么进入正题:
一、 搭建目标:
实现标准的后台controller、service、dao三层结构;
使用mapper.xml配置文件实现dao层和数据库的交互;
数据库连接信息、基础配置文件存在config.properties文件中;
配置日志打印相关的信息;
配置数据库连接池;
使用注解;
配置json数据前后台交互;
使用junit测试;


二、环境基础:
eclipe4.4.1;
maven3.2.5;
spring4.0.3;
mysql5.6;
jdk1.7;
tomcat7;
Angularjs1.4.0;
注:为了确定后台环境是真的没有问题,自然也需要简单搭一下前台的环境,起码要能保证前后台交互没有问题。因此我前台也简单的弄了一下angularjs,实际上我们项目中前端环境已经不这么搭里 ,只是新的搭法我还不会。


三、项目整体结构如下:
1、 后端:



2、 前端:




四、maven导包及基础配置pom.xml代码:
  1. <project xmlns=http://maven.apache.org/POM/4.0.0 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance  
  2.   xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd>  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>frameTest</groupId>  
  5.   <artifactId>frameTest</artifactId>  
  6.   <packaging>war</packaging>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <name>frameTest Maven Webapp</name>  
  9.   <url>http://maven.apache.org</url>  
  10.     
  11.   <build>  
  12.         <plugins>  
  13.             <!– 以下配置可以保证每次强制更新时jre版本不会变化,那我的eclipse4.4.1,maven3.2.5为例,如果不设置这个,每次强制更新时jre就会变回1.5 –>  
  14.             <plugin>  
  15.                 <artifactId>maven-compiler-plugin</artifactId>  
  16.                 <version>2.3.2</version>  
  17.                 <configuration>  
  18.                     <source>1.7</source>  
  19.                     <target>1.7</target>  
  20.                     <encoding>UTF-8</encoding>  
  21.                     <compilerArguments>  
  22.                         <verbose />  
  23.                         <bootclasspath>{java.home}\lib\rt.jar</span><span class="tag">&lt;/</span><span class="tag-name">bootclasspath</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">compilerArguments</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">configuration</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">plugin</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">plugins</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;加上这个可以保证maven打包是把这些资源文件都打到war包中&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">resources</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">resource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">directory</span><span class="tag">&gt;</span><span>src/main/java</span><span class="tag">&lt;/</span><span class="tag-name">directory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">includes</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">include</span><span class="tag">&gt;</span><span>**/*.xml</span><span class="tag">&lt;/</span><span class="tag-name">include</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">includes</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">resource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">resource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">directory</span><span class="tag">&gt;</span><span>src/main/resources</span><span class="tag">&lt;/</span><span class="tag-name">directory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">includes</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">include</span><span class="tag">&gt;</span><span>**/*.*</span><span class="tag">&lt;/</span><span class="tag-name">include</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">includes</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">resource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">resources</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;maven打包后的项目名&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">finalName</span><span class="tag">&gt;</span><span>frameTest</span><span class="tag">&lt;/</span><span class="tag-name">finalName</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">build</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">properties</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">spring-version</span><span class="tag">&gt;</span><span>4.0.3.RELEASE</span><span class="tag">&lt;/</span><span class="tag-name">spring-version</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">properties</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;项目基础依赖包配置&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">dependencies</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;spring以及springMVC相关依赖&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>org.springframework</span><span class="tag">&lt;/</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>spring-test</span><span class="tag">&lt;/</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>{spring-version}</version>  
  24.         </dependency>  
  25.         <dependency>  
  26.             <groupId>org.springframework</groupId>  
  27.             <artifactId>spring-webmvc</artifactId>  
  28.             <version>{spring-version}</span><span class="tag">&lt;/</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>org.springframework</span><span class="tag">&lt;/</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>spring-core</span><span class="tag">&lt;/</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>{spring-version}</version>  
  29.         </dependency>  
  30.         <dependency>  
  31.             <groupId>org.springframework</groupId>  
  32.             <artifactId>spring-context</artifactId>  
  33.             <version>{spring-version}</span><span class="tag">&lt;/</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>org.springframework</span><span class="tag">&lt;/</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>spring-context-support</span><span class="tag">&lt;/</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>{spring-version}</version>  
  34.         </dependency>  
  35.         <dependency>  
  36.             <groupId>org.springframework</groupId>  
  37.             <artifactId>spring-beans</artifactId>  
  38.             <version>{spring-version}</span><span class="tag">&lt;/</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">dependency</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>org.springframework</span><span class="tag">&lt;/</span><span class="tag-name">groupId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>spring-orm</span><span class="tag">&lt;/</span><span class="tag-name">artifactId</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">version</span><span class="tag">&gt;</span><span>{spring-version}</version>  
  39.         </dependency>  
  40.         <dependency>  
  41.             <groupId>org.springframework.amqp</groupId>  
  42.             <artifactId>spring-amqp</artifactId>  
  43.             <version>1.2.0.RELEASE</version>  
  44.         </dependency>  
  45.         <dependency>  
  46.             <groupId>org.aspectj</groupId>  
  47.             <artifactId>aspectjweaver</artifactId>  
  48.             <version>1.7.1</version>  
  49.         </dependency>  
  50.   
  51.   
  52.         <!– mybatis框架相关依赖包 –>  
  53.         <dependency>  
  54.             <groupId>org.mybatis</groupId>  
  55.             <artifactId>mybatis</artifactId>  
  56.             <version>3.2.7</version>  
  57.         </dependency>  
  58.         <dependency>  
  59.             <groupId>org.mybatis</groupId>  
  60.             <artifactId>mybatis-spring</artifactId>  
  61.             <version>1.2.2</version>  
  62.         </dependency>  
  63.         <dependency>  
  64.             <groupId>com.alibaba</groupId>  
  65.             <artifactId>druid</artifactId>  
  66.             <version>1.0.2</version>  
  67.         </dependency>  
  68.   
  69.   
  70.         <!– mysql数据库–>  
  71.         <dependency>  
  72.             <groupId>mysql</groupId>  
  73.             <artifactId>mysql-connector-java</artifactId>  
  74.             <version>5.1.34</version>  
  75.         </dependency>  
  76.         <!– junit –>  
  77.         <dependency>  
  78.             <groupId>junit</groupId>  
  79.             <artifactId>junit</artifactId>  
  80.             <version>4.11</version>  
  81.             <scope>test</scope>  
  82.         </dependency>  
  83.       <!– json数据相关依赖 –>  
  84.         <dependency>  
  85.             <groupId>org.codehaus.jackson</groupId>  
  86.             <artifactId>jackson-mapper-asl</artifactId>  
  87.             <version>1.9.7</version>  
  88.         </dependency>  
  89.           
  90.         <dependency>  
  91.             <groupId>com.alibaba</groupId>  
  92.             <artifactId>fastjson</artifactId>  
  93.             <version>1.1.26</version>  
  94.         </dependency>  
  95.         <dependency>  
  96.             <groupId>org.codehaus.jackson</groupId>  
  97.             <artifactId>jackson-core-asl</artifactId>  
  98.             <version>1.9.7</version>  
  99.         </dependency>  
  100.           
  101.         <dependency>  
  102.             <groupId>javax.servlet</groupId>  
  103.             <artifactId>servlet-api</artifactId>  
  104.             <version>3.0-alpha-1</version>  
  105.             <scope>provided</scope>  
  106.         </dependency>  
  107.         <dependency>  
  108.             <groupId>org.apache.geronimo.specs</groupId>  
  109.             <artifactId>geronimo-servlet_3.0_spec</artifactId>  
  110.             <version>1.0</version>  
  111.             <scope>test</scope>  
  112.         </dependency>  
  113.           
  114.         <dependency>  
  115.             <groupId>cglib</groupId>  
  116.             <artifactId>cglib</artifactId>  
  117.             <version>2.2</version>  
  118.         </dependency>  
  119.         <!– 日志相关依赖 –>  
  120.         <dependency>  
  121.             <groupId>ch.qos.logback</groupId>  
  122.             <artifactId>logback-classic</artifactId>  
  123.             <version>1.0.9</version>  
  124.         </dependency>  
  125.           
  126.         <dependency>  
  127.             <groupId>commons-io</groupId>  
  128.             <artifactId>commons-io</artifactId>  
  129.             <version>2.4</version>  
  130.         </dependency>  
  131.           
  132.         <dependency>  
  133.             <groupId>com.github.snakerflow</groupId>  
  134.             <artifactId>snaker-core</artifactId>  
  135.             <version>2.5.1</version>  
  136.         </dependency>  
  137.   
  138.   
  139.         <dependency>  
  140.             <groupId>org.apache.commons</groupId>  
  141.             <artifactId>commons-lang3</artifactId>  
  142.             <version>3.3.1</version>  
  143.         </dependency>  
  144.       
  145.     </dependencies>  
  146. </project>  
<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>frameTest</groupId>
<artifactId>frameTest</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>frameTest Maven Webapp</name>
<url>http://maven.apache.org</url&gt;

<build>
<plugins>
<!-- 以下配置可以保证每次强制更新时jre版本不会变化,那我的eclipse4.4.1,maven3.2.5为例,如果不设置这个,每次强制更新时jre就会变回1.5 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose />
<bootclasspath>${java.home}\lib\rt.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
<!-- 加上这个可以保证maven打包是把这些资源文件都打到war包中 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>*/.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*/.*</include>
</includes>
</resource>
</resources>
<!-- maven打包后的项目名 -->
<finalName>frameTest</finalName>
</build>
<properties>
<spring-version>4.0.3.RELEASE</spring-version>
</properties>
<!-- 项目基础依赖包配置 -->
<dependencies>
<!-- spring以及springMVC相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</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-core</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-beans</artifactId>
<version>${spring-version}</version>
</dependency>

    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework&lt;/groupId&gt;
        &lt;artifactId&gt;spring-orm&lt;/artifactId&gt;
        &lt;version&gt;${spring-version}&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework.amqp&lt;/groupId&gt;
        &lt;artifactId&gt;spring-amqp&lt;/artifactId&gt;
        &lt;version&gt;1.2.0.RELEASE&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.aspectj&lt;/groupId&gt;
        &lt;artifactId&gt;aspectjweaver&lt;/artifactId&gt;
        &lt;version&gt;1.7.1&lt;/version&gt;
    &lt;/dependency&gt;


    &lt;!-- mybatis框架相关依赖包 --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.mybatis&lt;/groupId&gt;
        &lt;artifactId&gt;mybatis&lt;/artifactId&gt;
        &lt;version&gt;3.2.7&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.mybatis&lt;/groupId&gt;
        &lt;artifactId&gt;mybatis-spring&lt;/artifactId&gt;
        &lt;version&gt;1.2.2&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
        &lt;artifactId&gt;druid&lt;/artifactId&gt;
        &lt;version&gt;1.0.2&lt;/version&gt;
    &lt;/dependency&gt;


    &lt;!-- mysql数据库--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;mysql&lt;/groupId&gt;
        &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
        &lt;version&gt;5.1.34&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;!-- junit --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;junit&lt;/groupId&gt;
        &lt;artifactId&gt;junit&lt;/artifactId&gt;
        &lt;version&gt;4.11&lt;/version&gt;
        &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;
  &lt;!-- json数据相关依赖 --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt;
        &lt;artifactId&gt;jackson-mapper-asl&lt;/artifactId&gt;
        &lt;version&gt;1.9.7&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
        &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
        &lt;artifactId&gt;fastjson&lt;/artifactId&gt;
        &lt;version&gt;1.1.26&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt;
        &lt;artifactId&gt;jackson-core-asl&lt;/artifactId&gt;
        &lt;version&gt;1.9.7&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
        &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
        &lt;artifactId&gt;servlet-api&lt;/artifactId&gt;
        &lt;version&gt;3.0-alpha-1&lt;/version&gt;
        &lt;scope&gt;provided&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.apache.geronimo.specs&lt;/groupId&gt;
        &lt;artifactId&gt;geronimo-servlet_3.0_spec&lt;/artifactId&gt;
        &lt;version&gt;1.0&lt;/version&gt;
        &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
        &lt;groupId&gt;cglib&lt;/groupId&gt;
        &lt;artifactId&gt;cglib&lt;/artifactId&gt;
        &lt;version&gt;2.2&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;!-- 日志相关依赖 --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;ch.qos.logback&lt;/groupId&gt;
        &lt;artifactId&gt;logback-classic&lt;/artifactId&gt;
        &lt;version&gt;1.0.9&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
        &lt;groupId&gt;commons-io&lt;/groupId&gt;
        &lt;artifactId&gt;commons-io&lt;/artifactId&gt;
        &lt;version&gt;2.4&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
        &lt;groupId&gt;com.github.snakerflow&lt;/groupId&gt;
        &lt;artifactId&gt;snaker-core&lt;/artifactId&gt;
        &lt;version&gt;2.5.1&lt;/version&gt;
    &lt;/dependency&gt;


    &lt;dependency&gt;
        &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
        &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt;
        &lt;version&gt;3.3.1&lt;/version&gt;
    &lt;/dependency&gt;

&lt;/dependencies&gt;

</project>



五、web项目基础配置文件web.xml:
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <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 xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd id=“WebApp_ID” version=“3.0”>  
  3.   <display-name>appversion</display-name>  
  4.   <context-param>  
  5.     <param-name>contextConfigLocation</param-name>  
  6.     <param-value>classpath:spring.xml</param-value>  
  7.   </context-param>  
  8.     
  9.   <filter>  
  10.     <description>字符集过滤器</description>  
  11.     <filter-name>encodingFilter</filter-name>  
  12.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  13.     <init-param>  
  14.       <description>字符集编码</description>  
  15.       <param-name>encoding</param-name>  
  16.       <param-value>UTF-8</param-value>  
  17.     </init-param>  
  18.   </filter>  
  19.   <filter-mapping>  
  20.     <filter-name>encodingFilter</filter-name>  
  21.     <url-pattern>/*</url-pattern>  
  22.   </filter-mapping>  
  23.   <listener>  
  24.     <description>spring监听器</description>  
  25.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  26.   </listener>  
  27.   <listener>  
  28.     <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  29.   </listener>  
  30.   <servlet>  
  31.     <servlet-name>dispatcher</servlet-name>  
  32.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  33.     <init-param>  
  34.       <param-name>contextConfigLocation</param-name>  
  35.       <param-value>classpath:spring-mvc.xml</param-value>  
  36.     </init-param>  
  37.     <load-on-startup>1</load-on-startup>  
  38.   </servlet>  
  39.   <servlet-mapping>  
  40.     <servlet-name>dispatcher</servlet-name>  
  41.     <url-pattern>/</url-pattern>  
  42.   </servlet-mapping>  
  43.   <session-config>  
  44.     <session-timeout>15</session-timeout>  
  45.   </session-config>  
  46. </web-app>  
<?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” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” id=”WebApp_ID” version=”3.0”>
<display-name>appversion</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>

<filter>
<description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<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>
<listener>
<description>spring监听器</description>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<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:spring-mvc.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>
<session-config>
<session-timeout>15</session-timeout>
</session-config>
</web-app>



六、spring基础篇日志文件spring.xml:
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <beans xmlns:task=http://www.springframework.org/schema/task  
  3.     xmlns=http://www.springframework.org/schema/beans xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance  
  4.     xmlns:context=http://www.springframework.org/schema/context xmlns:tx=http://www.springframework.org/schema/tx  
  5.     xsi:schemaLocation=”http://www.springframework.org/schema/beans  
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd &nbsp;
  7. http://www.springframework.org/schema/context &nbsp;
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd &nbsp;
  9. http://www.springframework.org/schema/task &nbsp;
  10. http://www.springframework.org/schema/task/spring-task-3.1.xsd &nbsp;
  11. http://www.springframework.org/schema/tx &nbsp;
  12. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd>  
  13.   
  14.   
  15.     <!– 引入属性文件 –>  
  16.     <context:property-placeholder location=“classpath:config.properties” />  
  17.       
  18.     <!–spring mybatis 数据库连接配置 –>  
  19.     <import resource=“spring-MybatisConfig.xml” />  
  20.   
  21.   
  22.     <!– 自动扫描(自动注入) –>  
  23.     <context:component-scan base-package=“merService.merServiceImp” />  
  24.   
  25.   
  26.     <!– 采用注释的方式配置bean –>  
  27.     <context:annotation-config />  
  28.     <!– 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 –>  
  29.     <bean class=“org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor” />  
  30.       
  31.     <!– 开启事务注解驱动 –>  
  32.     <tx:annotation-driven />  
  33.       
  34. </beans>  
  35.   
  36.   
  37. 七、mybatis基础配置文件spring-MybatisConfig.xml:  
  38. <?xml version=“1.0” encoding=“UTF-8”?>  
  39. <beans xmlns=http://www.springframework.org/schema/beans  
  40.     xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance   
  41.     xsi:schemaLocation=”  
  42.   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd>  
  43.   
  44.   
  45.     <!– 配置druid数据库连接池–>  
  46.     <bean id=“dataSource” class=“com.alibaba.druid.pool.DruidDataSource” init-method=“init” destroy-method=“close”>  
  47.         <property name=“url” value={jdbc.url}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"username"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{jdbc.username}” />    
  48.         <property name=“password” value={jdbc.password}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxActive"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{druid.maxPoolSize}” />     
  49.         <property name=“initialSize” value={druid.initialPoolSize}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxWait"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{druid.maxWait}” />    
  50.         <property name=“minIdle” value={druid.minPoolSize}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"timeBetweenEvictionRunsMillis"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{druid.timeBetweenEvictionRunsMillis}” />    
  51.         <property name=“minEvictableIdleTimeMillis” value={druid.minEvictableIdleTimeMillis}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"validationQuery"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{druid.validationQuery}” />    
  52.         <property name=“testWhileIdle” value={druid.testWhileIdle}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"testOnBorrow"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{druid.testOnBorrow}” />    
  53.         <property name=“testOnReturn” value={druid.testOnReturn}"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"poolPreparedStatements"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"{druid.poolPreparedStatements}” />    
  54.         <!– <property name=”maxPoolPreparedStatementPerConnectionSize” value=”${druid.maxPoolPreparedStatementPerConnectionSize}” /> –>    
  55.     </bean>  
  56.        
  57.     <!– 配置mybitasSqlSessionFactoryBean –>  
  58.     <bean id=“sqlSessionFactory” class=“org.mybatis.spring.SqlSessionFactoryBean”>  
  59.         <property name=“dataSource” ref=“dataSource” />  
  60.         <property name=“configLocation” value=“classpath:MybatisConf.xml”></property>  
  61.         <property name=“mapperLocations”  
  62.             value=“classpath*:merDao/mapper/*Mapper.xml”></property>  
  63.     </bean>  
  64.       
  65.     <!– 配置SqlSessionTemplate –>  
  66.     <bean id=“sqlSessionTemplate” class=“org.mybatis.spring.SqlSessionTemplate” scope=“prototype”>  
  67.         <constructor-arg name=“sqlSessionFactory” ref=“sqlSessionFactory” />  
  68.     </bean>  
  69.       
  70.         <!– 自动扫描,注入×Mapper实现类 –>  
  71.     <bean class=“org.mybatis.spring.mapper.MapperScannerConfigurer”>  
  72.         <property name=“basePackage” value=“merDao” />  
  73.     </bean>  
  74. </beans>  
<?xml version=”1.0” encoding=”UTF-8”?> 
<beans xmlns:task=”http://www.springframework.org/schema/task”
xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:context=”http://www.springframework.org/schema/context” xmlns:tx=”http://www.springframework.org/schema/tx”
xsi:schemaLocation=”http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd“>
&lt;!-- 引入属性文件 --&gt;
&lt;context:property-placeholder location="classpath:config.properties" /&gt;

&lt;!--spring mybatis 数据库连接配置 --&gt;
&lt;import resource="spring-MybatisConfig.xml" /&gt;


&lt;!-- 自动扫描(自动注入) --&gt;
&lt;context:component-scan base-package="merService.merServiceImp" /&gt;


&lt;!-- 采用注释的方式配置bean --&gt;
&lt;context:annotation-config /&gt;
&lt;!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 --&gt;
&lt;bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /&gt;

&lt;!-- 开启事务注解驱动 --&gt;
&lt;tx:annotation-driven /&gt;

</beans>

七、mybatis基础配置文件spring-MybatisConfig.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”
xsi:schemaLocation=”
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd“>

&lt;!-- 配置druid数据库连接池--&gt;
&lt;bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"&gt;
    &lt;property name="url" value="${jdbc.url}" /&gt;  
    &lt;property name="username" value="${jdbc.username}" /&gt;  
    &lt;property name="password" value="${jdbc.password}" /&gt;  
    &lt;property name="maxActive" value="${druid.maxPoolSize}" /&gt;   
    &lt;property name="initialSize" value="${druid.initialPoolSize}" /&gt;  
    &lt;property name="maxWait" value="${druid.maxWait}" /&gt;  
    &lt;property name="minIdle" value="${druid.minPoolSize}" /&gt;  
    &lt;property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" /&gt;  
    &lt;property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" /&gt;  
    &lt;property name="validationQuery" value="${druid.validationQuery}" /&gt;  
    &lt;property name="testWhileIdle" value="${druid.testWhileIdle}" /&gt;  
    &lt;property name="testOnBorrow" value="${druid.testOnBorrow}" /&gt;  
    &lt;property name="testOnReturn" value="${druid.testOnReturn}" /&gt;  
    &lt;property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" /&gt;  
    &lt;!-- &lt;property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" /&gt; --&gt;  
&lt;/bean&gt;

&lt;!-- 配置mybitasSqlSessionFactoryBean --&gt;
&lt;bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&gt;
    &lt;property name="dataSource" ref="dataSource" /&gt;
    &lt;property name="configLocation" value="classpath:MybatisConf.xml"&gt;&lt;/property&gt;
    &lt;property name="mapperLocations"
        value="classpath*:merDao/mapper/*Mapper.xml"&gt;&lt;/property&gt;
&lt;/bean&gt;

&lt;!-- 配置SqlSessionTemplate --&gt;
&lt;bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype"&gt;
    &lt;constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /&gt;
&lt;/bean&gt;

    &lt;!-- 自动扫描,注入×Mapper实现类 --&gt;
&lt;bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&gt;
    &lt;property name="basePackage" value="merDao" /&gt;
&lt;/bean&gt;

</beans>



七、mybatis基础配置文件MybatisConf.xml:
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <!DOCTYPE configuration PUBLIC ”-//mybatis.org//DTD Config 3.0//EN” ”http://mybatis.org/dtd/mybatis-3-config.dtd>  
  3. <configuration>  
  4.     <settings>  
  5.         <!– 这个配置使全局的映射器启用或禁用缓存 –>  
  6.         <setting name=“cacheEnabled” value=“true” />  
  7.         <!– 允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如 Derby) –>  
  8.         <setting name=“useGeneratedKeys” value=“true” />  
  9.         <!– 配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新  –>  
  10.         <setting name=“defaultExecutorType” value=“REUSE” />  
  11.         <!– 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 –>  
  12.         <setting name=“lazyLoadingEnabled” value=“true”/>  
  13.         <!– 设置超时时间,它决定驱动等待一个数据库响应的时间。  –>  
  14.         <setting name=“defaultStatementTimeout” value=“55000”/>   
  15.          <setting name=“logPrefix” value=“dao.”/>    
  16.     </settings>  
  17.       
  18.     <!– 别名配置,查找该包内的所有bean,bean实例名为类名 –>  
  19.     <typeAliases>  
  20.         <package name=“merModel”/>  
  21.     </typeAliases>  
  22.       
  23. </configuration>  
<?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=”cacheEnabled” value=”true” />
<!– 允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如 Derby) –>
<setting name=”useGeneratedKeys” value=”true” />
<!– 配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新 –>
<setting name=”defaultExecutorType” value=”REUSE” />
<!– 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 –>
<setting name=”lazyLoadingEnabled” value=”true”/>
<!– 设置超时时间,它决定驱动等待一个数据库响应的时间。 –>
<setting name=”defaultStatementTimeout” value=”55000”/>
<setting name=”logPrefix” value=”dao.”/>
</settings>
&lt;!-- 别名配置,查找该包内的所有bean,bean实例名为类名 --&gt;
&lt;typeAliases&gt;
    &lt;package name="merModel"/&gt;
&lt;/typeAliases&gt;

</configuration>



八、springMVC基础配置文件spring-mvc.xml:
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <beans xmlns=http://www.springframework.org/schema/beans xmlns:mvc=http://www.springframework.org/schema/mvc 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 xsi:schemaLocation=”http://www.springframework.org/schema/beans   
  3. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  &nbsp;
  4. http://www.springframework.org/schema/context  &nbsp;
  5. http://www.springframework.org/schema/context/spring-context-4.0.xsd  &nbsp;
  6. http://www.springframework.org/schema/mvc  &nbsp;
  7. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd>  
  8.       
  9.     <context:component-scan base-package=“merController” />     
  10.     <mvc:default-servlet-handler />  
  11.     <mvc:annotation-driven />  
  12.       
  13.     <!– 避免IE执行AJAX时,返回JSON出现下载文件 –>  
  14.     <bean id=“mappingJacksonHttpMessageConverter” class=“org.springframework.http.converter.json.MappingJacksonHttpMessageConverter”>  
  15.         <property name=“supportedMediaTypes”>  
  16.             <list>  
  17.                 <value>text/html;charset=UTF-8</value>  
  18.             </list>  
  19.         </property>  
  20.     </bean>  
  21. <bean id = “stringHttpMessageConverter”   
  22. class = “org.springframework.http.converter.StringHttpMessageConverter”/>  
  23.     <!– 启动Spring MVC的注解功能,完成请求和注解POJO的映射 –>  
  24.     <bean class=“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter”>  
  25.         <property name=“messageConverters”>  
  26.             <list>  
  27.                 <ref bean=“mappingJacksonHttpMessageConverter” /><!– json转换器 –>  
  28.                 <ref bean=“stringHttpMessageConverter”/>  
  29.             </list>  
  30.         </property>  
  31.     </bean>  
  32.       
  33. </beans>  
<?xml version=”1.0” encoding=”UTF-8”?> 
<beans xmlns=”http://www.springframework.org/schema/beans” xmlns:mvc=”http://www.springframework.org/schema/mvc” 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” xsi:schemaLocation=”http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd“>
&lt;context:component-scan base-package="merController" /&gt;   
&lt;mvc:default-servlet-handler /&gt;
&lt;mvc:annotation-driven /&gt;

&lt;!-- 避免IE执行AJAX时,返回JSON出现下载文件 --&gt;
&lt;bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"&gt;
    &lt;property name="supportedMediaTypes"&gt;
        &lt;list&gt;
            &lt;value&gt;text/html;charset=UTF-8&lt;/value&gt;
        &lt;/list&gt;
    &lt;/property&gt;
&lt;/bean&gt;

<bean id = “stringHttpMessageConverter”
class = “org.springframework.http.converter.StringHttpMessageConverter”/>
<!– 启动Spring MVC的注解功能,完成请求和注解POJO的映射 –>
<bean class=”org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter”>
<property name=”messageConverters”>
<list>
<ref bean=”mappingJacksonHttpMessageConverter” /><!– json转换器 –>
<ref bean=”stringHttpMessageConverter”/>
</list>
</property>
</bean>

</beans>



九、日志打印相关配置logback.xml:
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <configuration scan=“true” scanPeriod=“30 seconds”>  
  3.     <!–定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径–>    
  4.     <property name=“LOG_HOME” value=“logs” />    
  5.     <!– appender –>  
  6.     <appender name=“STDOUT” class=“ch.qos.logback.core.ConsoleAppender”>  
  7.         <layout class=“ch.qos.logback.classic.PatternLayout”>  
  8.             <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n</pattern>  
  9.         </layout>  
  10.     </appender>  
  11.       
  12.     <!– 按照每天生成日志文件 –>     
  13.     <appender name=“FILE”  class=“ch.qos.logback.core.rolling.RollingFileAppender”>     
  14. <!–         <File>processcontrol.log</File> –>  
  15.         <rollingPolicy class=“ch.qos.logback.core.rolling.TimeBasedRollingPolicy”>  
  16.             <!–日志文件输出的文件名 –>  
  17.             <FileNamePattern>${LOG_HOME}//merchant.%d{yyyy-MM-dd}.log</FileNamePattern>  
  18.             <!–日志文件保留天数 –>  
  19.             <MaxHistory>30</MaxHistory>  
  20.         </rollingPolicy>  
  21.           
  22.         <layout class=“ch.qos.logback.classic.PatternLayout”>  
  23.             <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern>  
  24.         </layout>  
  25.     </appender>   
  26.       
  27.     <!– log 通过 LoggerFactory.getLogger(name)取得 –>  
  28.     <logger name=“myLog” additivity=“true” level=“info”>  
  29.         <appender-ref ref=“stdout” />  
  30.     </logger>  
  31.      <!– update:liaoshijun 2015-04-24 –>  
  32.      <logger name=“frameTest” level=“INFO”/>  
  33.       <logger name=“org.apache.ibatis” level=“INFO”/>  
  34.       <logger name=“org.apache.mybatis” level=“INFO”/>  
  35.       <logger name=“com.ibatis” level=“DEBUG” />    
  36. <logger name=“com.ibatis.common.jdbc.SimpleDataSource” level=“DEBUG” />    
  37. <logger name=“com.ibatis.common.jdbc.ScriptRunner” level=“DEBUG” />    
  38. <logger name=“dao” level=“DEBUG”>    
  39.     <!–daoFILE为实际定义的appender–>    
  40.     <appender-ref ref=“daoFILE” />    
  41. </logger>   
  42.     <!– root 默认日志配置 –>  
  43.     <root level=“info”>  
  44.         <appender-ref ref=“STDOUT” />  
  45.         <appender-ref ref=“FILE” />  
  46.     </root>  
  47. </configuration>  
<?xml version=”1.0” encoding=”UTF-8”?> 
<configuration scan=”true” scanPeriod=”30 seconds”>
<!–定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径–>
<property name=”LOG_HOME” value=”logs” />
<!– appender –>
<appender name=”STDOUT” class=”ch.qos.logback.core.ConsoleAppender”>
<layout class=”ch.qos.logback.classic.PatternLayout”>
<pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n</pattern>
</layout>
</appender>
&lt;!-- 按照每天生成日志文件 --&gt;   
&lt;appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender"&gt;   

<!– <File>processcontrol.log</File> –>
<rollingPolicy class=”ch.qos.logback.core.rolling.TimeBasedRollingPolicy”>
<!–日志文件输出的文件名 –>
<FileNamePattern>${LOG_HOME}//merchant.%d{yyyy-MM-dd}.log</FileNamePattern>
<!–日志文件保留天数 –>
<MaxHistory>30</MaxHistory>
</rollingPolicy>

    &lt;layout class="ch.qos.logback.classic.PatternLayout"&gt;
        &lt;Pattern&gt;%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n&lt;/Pattern&gt;
    &lt;/layout&gt;
&lt;/appender&gt; 

&lt;!-- log 通过 LoggerFactory.getLogger(name)取得 --&gt;
&lt;logger name="myLog" additivity="true" level="info"&gt;
    &lt;appender-ref ref="stdout" /&gt;
&lt;/logger&gt;
 &lt;!-- update:liaoshijun 2015-04-24 --&gt;
 &lt;logger name="frameTest" level="INFO"/&gt;
  &lt;logger name="org.apache.ibatis" level="INFO"/&gt;
  &lt;logger name="org.apache.mybatis" level="INFO"/&gt;
  &lt;logger name="com.ibatis" level="DEBUG" /&gt;  

<logger name=”com.ibatis.common.jdbc.SimpleDataSource” level=”DEBUG” />
<logger name=”com.ibatis.common.jdbc.ScriptRunner” level=”DEBUG” />
<logger name=”dao” level=”DEBUG”>
<!–daoFILE为实际定义的appender–>
<appender-ref ref=”daoFILE” />
</logger>
<!– root 默认日志配置 –>
<root level=”info”>
<appender-ref ref=”STDOUT” />
<appender-ref ref=”FILE” />
</root>
</configuration>



十、属性文件config.properties:
  1. #mysql  
  2. jdbc.driverClassName=com.mysql.jdbc.Driver  
  3. jdbc.url=jdbc:mysql://127.0.0.1:3306/merchant?useUnicode=true&characterEncoding=utf-8  
  4. jdbc.username=root  
  5. jdbc.password=123456  
  6.   
  7.   
  8. #c3p0  
  9. c3p0.minPoolSize=5  
  10. c3p0.initialPoolSize=10  
  11. c3p0.maxIdleTime=60  
  12. c3p0.acquireIncrement=5  
  13. c3p0.idleConnectionTestPeriod=60  
  14. c3p0.acquireRetryAttempts=30  
  15. c3p0.acquireRetryDelay=1000  
  16. c3p0.numHelperThreads=3  
  17. c3p0.breakAfterAcquireFailure=true  
  18. c3p0.testConnectionOnCheckout=false  
  19. c3p0.maxStatements=0  
  20. c3p0.maxStatementsPerConnection=0  
  21.   
  22.   
  23. #druid 阿里巴巴提供的JDBC连接池、监控组件  
  24. druid.minPoolSize=5  
  25. druid.maxPoolSize=30  
  26. druid.initialPoolSize=10  
  27. druid.maxIdleTime=60  
  28. druid.acquireIncrement=5  
  29. druid.idleConnectionTestPeriod=60  
  30. druid.acquireRetryAttempts=30  
  31. druid.acquireRetryDelay=1000  
  32. druid.numHelperThreads=3  
  33. druid.breakAfterAcquireFailure=true  
  34. druid.testConnectionOnCheckout=false  
  35. druid.maxStatements=0  
  36. druid.maxStatementsPerConnection=0  
  37. druid.maxWait=60000  
  38. druid.timeBetweenEvictionRunsMillis=3000  
  39. druid.minEvictableIdleTimeMillis=300000  
  40. druid.maxPoolPreparedStatementPerConnectionSize=20  
  41. druid.validationQuery=SELECT ‘x’  
  42. druid.testWhileIdle=true  
  43. druid.testOnBorrow=false  
  44. druid.testOnReturn=false  
  45. druid.poolPreparedStatements=false  
#mysql 
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/merchant?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

c3p0

c3p0.minPoolSize=5
c3p0.initialPoolSize=10
c3p0.maxIdleTime=60
c3p0.acquireIncrement=5
c3p0.idleConnectionTestPeriod=60
c3p0.acquireRetryAttempts=30
c3p0.acquireRetryDelay=1000
c3p0.numHelperThreads=3
c3p0.breakAfterAcquireFailure=true
c3p0.testConnectionOnCheckout=false
c3p0.maxStatements=0
c3p0.maxStatementsPerConnection=0

druid 阿里巴巴提供的JDBC连接池、监控组件

druid.minPoolSize=5
druid.maxPoolSize=30
druid.initialPoolSize=10
druid.maxIdleTime=60
druid.acquireIncrement=5
druid.idleConnectionTestPeriod=60
druid.acquireRetryAttempts=30
druid.acquireRetryDelay=1000
druid.numHelperThreads=3
druid.breakAfterAcquireFailure=true
druid.testConnectionOnCheckout=false
druid.maxStatements=0
druid.maxStatementsPerConnection=0
druid.maxWait=60000
druid.timeBetweenEvictionRunsMillis=3000
druid.minEvictableIdleTimeMillis=300000
druid.maxPoolPreparedStatementPerConnectionSize=20
druid.validationQuery=SELECT 'x'
druid.testWhileIdle=true
druid.testOnBorrow=false
druid.testOnReturn=false
druid.poolPreparedStatements=false

十一、为了验证这些配置是否可行,我写了一个简单的增加用户信息的操作,代码分别如下:


后台实体类userModel:

  1. package merModel;  
  2. import java.io.Serializable;  
  3. public class UserModel implements Serializable {  
  4.     private static final long serialVersionUID = -3291196087479862240L;  
  5.   
  6.     private int id;  
  7.     / 
  8.       用户账号 
  9.      /  
  10.     private String account;  
  11.   
  12.     / 
  13.       用户姓名 
  14.      /  
  15.     private String userName;  
  16.   
  17.     / 
  18.       用户密码 
  19.      /  
  20.     private String password;  
  21.   
  22.     / 
  23.       手机 
  24.      /  
  25.     private String mobile;  
  26.   
  27.     /* 
  28.       邮箱 
  29.      */  
  30.     private String email;  
  31.   
  32.     public String getAccount() {  
  33.         return account;  
  34.     }  
  35.   
  36.     public void setAccount(String account) {  
  37.         this.account = account;  
  38.     }  
  39.   
  40.     public String getUserName() {  
  41.         return userName;  
  42.     }  
  43.   
  44.     public void setUserName(String userName) {  
  45.         this.userName = userName;  
  46.     }  
  47.   
  48.     public String getPassword() {  
  49.         return password;  
  50.     }  
  51.   
  52.     public void setPassword(String password) {  
  53.         this.password = password;  
  54.     }  
  55.   
  56.     public String getMobile() {  
  57.         return mobile;  
  58.     }  
  59.   
  60.     public void setMobile(String mobile) {  
  61.         this.mobile = mobile;  
  62.     }  
  63.   
  64.     public String getEmail() {  
  65.         return email;  
  66.     }  
  67.   
  68.     public void setEmail(String email) {  
  69.         this.email = email;  
  70.     }  
  71.   
  72.     public static long getSerialversionuid() {  
  73.         return serialVersionUID;  
  74.     }  
  75.   
  76.     public int getId() {  
  77.         return id;  
  78.     }  
  79.   
  80.     public void setId(int id) {  
  81.         this.id = id;  
  82.     }  
  83.   
  84.     @Override  
  85.     public String toString() {  
  86.         return “UserModel [id=” + id + “, account=” + account + “, userName=”  
  87.                 + userName + ”, password=” + password + “, modile=” + mobile  
  88.                 + ”, email=” + email + “]”;  
  89.     }  
  90.   
  91. }  
package merModel; 
import java.io.Serializable;
public class UserModel implements Serializable {
private static final long serialVersionUID = -3291196087479862240L;

private int id;
/**
 * 用户账号
 */
private String account;

/**
 * 用户姓名
 */
private String userName;

/**
 * 用户密码
 */
private String password;

/**
 * 手机
 */
private String mobile;

/**
 * 邮箱
 */
private String email;

public String getAccount() {
    return account;
}

public void setAccount(String account) {
    this.account = account;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getMobile() {
    return mobile;
}

public void setMobile(String mobile) {
    this.mobile = mobile;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public static long getSerialversionuid() {
    return serialVersionUID;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

@Override
public String toString() {
    return "UserModel [id=" + id + ", account=" + account + ", userName="
            + userName + ", password=" + password + ", modile=" + mobile
            + ", email=" + email + "]";
}

}


对应的前台UserCommand类:

  1. package merCommand;  
  2. public class UserCommand {  
  3.     private int id;  
  4.     / 
  5.       用户账号 
  6.      /  
  7.     private String account;  
  8.   
  9.   
  10.     / 
  11.       用户姓名 
  12.      /  
  13.     private String userName;  
  14.   
  15.   
  16.     / 
  17.       用户密码 
  18.      /  
  19.     private String password;  
  20.   
  21.   
  22.     / 
  23.       手机 
  24.      /  
  25.     private String mobile;  
  26.   
  27.   
  28.     /* 
  29.       邮箱 
  30.      */  
  31.     private String email;  
  32.   
  33.   
  34.     public String getAccount() {  
  35.         return account;  
  36.     }  
  37.   
  38.   
  39.     public void setAccount(String account) {  
  40.         this.account = account;  
  41.     }  
  42.   
  43.   
  44.     public String getUserName() {  
  45.         return userName;  
  46.     }  
  47.   
  48.   
  49.     public void setUserName(String userName) {  
  50.         this.userName = userName;  
  51.     }  
  52.   
  53.   
  54.     public String getPassword() {  
  55.         return password;  
  56.     }  
  57.   
  58.   
  59.     public void setPassword(String password) {  
  60.         this.password = password;  
  61.     }  
  62.   
  63.   
  64.     public String getMobile() {  
  65.         return mobile;  
  66.     }  
  67.   
  68.   
  69.     public void setMobile(String mobile) {  
  70.         this.mobile = mobile;  
  71.     }  
  72.   
  73.   
  74.     public String getEmail() {  
  75.         return email;  
  76.     }  
  77.   
  78.   
  79.     public void setEmail(String email) {  
  80.         this.email = email;  
  81.     }  
  82.   
  83.   
  84.     public int getId() {  
  85.         return id;  
  86.     }  
  87.   
  88.   
  89.     public void setId(int id) {  
  90.         this.id = id;  
  91.     }  
  92.   
  93.   
  94.     @Override  
  95.     public String toString() {  
  96.         return “UserCommand [id=” + id + “, account=” + account + “, userName=”  
  97.                 + userName + ”, password=” + password + “, modile=” + mobile  
  98.                 + ”, email=” + email + “]”;  
  99.     }  
  100.   
  101.   
  102. }  
package merCommand; 
public class UserCommand {
private int id;
/**
* 用户账号
*/
private String account;

/**
 * 用户姓名
 */
private String userName;


/**
 * 用户密码
 */
private String password;


/**
 * 手机
 */
private String mobile;


/**
 * 邮箱
 */
private String email;


public String getAccount() {
    return account;
}


public void setAccount(String account) {
    this.account = account;
}


public String getUserName() {
    return userName;
}


public void setUserName(String userName) {
    this.userName = userName;
}


public String getPassword() {
    return password;
}


public void setPassword(String password) {
    this.password = password;
}


public String getMobile() {
    return mobile;
}


public void setMobile(String mobile) {
    this.mobile = mobile;
}


public String getEmail() {
    return email;
}


public void setEmail(String email) {
    this.email = email;
}


public int getId() {
    return id;
}


public void setId(int id) {
    this.id = id;
}


@Override
public String toString() {
    return "UserCommand [id=" + id + ", account=" + account + ", userName="
            + userName + ", password=" + password + ", modile=" + mobile
            + ", email=" + email + "]";
}

}

Dao接口UserDao:

  1. package merDao;  
  2. import merModel.UserModel;  
  3. public interface UserDao {  
  4.     public void save(UserModel usermodel);  
  5. }  
package merDao; 
import merModel.UserModel;
public interface UserDao {
public void save(UserModel usermodel);
}


Dao实现userDaoMapper.xml:
  1. <?xml version=“1.0” encoding=“utf-8” ?>  
  2. <!DOCTYPE mapper PUBLIC ”-//mybatis.org//DTD Mapper 3.0//EN” ”http://mybatis.org/dtd/mybatis-3-mapper.dtd>  
  3. <mapper namespace=“merDao.UserDao”>  
  4.     <!– 数据库映射配置 –>  
  5.     <resultMap type=“UserModel” id=“userResult”>  
  6.         <id property=“id” column=“id” />  
  7.         <result property=“account” column=“account” />  
  8.         <result property=“userName” column=“userName” />  
  9.         <result property=“password” column=“password” />  
  10.         <result property=“mobile” column=“mobile” />  
  11.         <result property=“email” column=“email” />      
  12.     </resultMap>  
  13.   
  14.   
  15.     <sql id=“userColumns”>id,account,userName,password,mobile,email  
  16.     </sql>  
  17.       
  18.     <!– 添加用户 –>  
  19.     <insert id=“save” parameterType=“UserModel”>  
  20.         insert into user(<include refid=“userColumns” />)  
  21.     values(#{id},#{account},#{userName},#{password},#{mobile},#{email})  
  22.     </insert>  
  23.       
  24.      查询用户–>  
  25.     <select id=“findAll”  resultMap=“userResult”>  
  26.         SELECT u.* FROM user u   
  27.     </select>  
  28.        
  29. </mapper>  
<?xml version=”1.0” encoding=”utf-8” ?> 
<!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN” “http://mybatis.org/dtd/mybatis-3-mapper.dtd“>
<mapper namespace=”merDao.UserDao”>
<!– 数据库映射配置 –>
<resultMap type=”UserModel” id=”userResult”>
<id property=”id” column=”id” />
<result property=”account” column=”account” />
<result property=”userName” column=”userName” />
<result property=”password” column=”password” />
<result property=”mobile” column=”mobile” />
<result property=”email” column=”email” />
</resultMap>

&lt;sql id="userColumns"&gt;id,account,userName,password,mobile,email
&lt;/sql&gt;

&lt;!-- 添加用户 --&gt;
&lt;insert id="save" parameterType="UserModel"&gt;
    insert into user(&lt;include refid="userColumns" /&gt;)
values(#{id},#{account},#{userName},#{password},#{mobile},#{email})
&lt;/insert&gt;

 查询用户--&gt;
&lt;select id="findAll"  resultMap="userResult"&gt;
    SELECT u.* FROM user u 
&lt;/select&gt;

</mapper>

UserService接口:

  1. package merService;  
  2. import merModel.UserModel;  
  3. public interface UserService {  
  4.     public void add(UserModel usermodel);  
  5. }  
package merService; 
import merModel.UserModel;
public interface UserService {
public void add(UserModel usermodel);
}


userService实现:
  1. package merService.merServiceImp;  
  2. import javax.annotation.Resource;  
  3. import merDao.UserDao;  
  4. import merModel.UserModel;  
  5. import merService.UserService;  
  6. import org.slf4j.Logger;  
  7. import org.slf4j.LoggerFactory;  
  8. import org.springframework.stereotype.Service;  
  9.   
  10. @Service(“UserService”)  
  11. public class UserServiceImp implements UserService {  
  12.     privatefinal Logger logger = LoggerFactory.getLogger(UserServiceImp.class);  
  13.   
  14.     private UserDao userDao;  
  15.   
  16.     @Resource(name = “userDao”)  
  17.     public void setUserDao(UserDao userDao) {  
  18.         this.userDao = userDao;  
  19.     }  
  20.   
  21.     @Override  
  22.     public void add(UserModel usermodel) {  
  23.         userDao.save(usermodel);  
  24.     }  
  25. }  
package merService.merServiceImp; 
import javax.annotation.Resource;
import merDao.UserDao;
import merModel.UserModel;
import merService.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service(“UserService”)
public class UserServiceImp implements UserService {
privatefinal Logger logger = LoggerFactory.getLogger(UserServiceImp.class);

private UserDao userDao;

@Resource(name = "userDao")
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}

@Override
public void add(UserModel usermodel) {
    userDao.save(usermodel);
}

}

Controller前后台交互:

  1. package merController;  
  2. import merCommand.UserCommand;  
  3. import merModel.UserModel;  
  4. import merService.UserService;  
  5.   
  6.   
  7. import org.springframework.beans.BeanUtils;  
  8. import org.springframework.beans.factory.annotation.Autowired;  
  9. import org.springframework.web.bind.annotation.RequestBody;  
  10. import org.springframework.web.bind.annotation.RequestMapping;  
  11. import org.springframework.web.bind.annotation.RequestMethod;  
  12. import org.springframework.web.bind.annotation.RestController;  
  13.   
  14.   
  15. @RestController  
  16. public class UserController {  
  17.     @Autowired  
  18.     private UserService userService;  
  19.   
  20.   
  21.     /* 
  22.       新增用户 
  23.        
  24.       @author:tuzongxun 
  25.       @Title: addUser 
  26.       @param @param userCommand 
  27.       @return void 
  28.       @date Apr 14, 2016 11:28:47 AM 
  29.       @throws 
  30.      /  
  31.     @RequestMapping(value = “addUser”, method = RequestMethod.POST)  
  32.     public void addUser(@RequestBody UserCommand userCommand) {  
  33.         UserModel userModel = new UserModel();  
  34.         BeanUtils.copyProperties(userCommand, userModel);  
  35.         userService.add(userModel);  
  36.     }  
  37. }  
package merController; 
import merCommand.UserCommand;
import merModel.UserModel;
import merService.UserService;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
@Autowired
private UserService userService;

/**
 * 新增用户
 * 
 * @author:tuzongxun
 * @Title: addUser
 * @param @param userCommand
 * @return void
 * @date Apr 14, 2016 11:28:47 AM
 * @throws
 */
@RequestMapping(value = "addUser", method = RequestMethod.POST)
public void addUser(@RequestBody UserCommand userCommand) {
    UserModel userModel = new UserModel();
    BeanUtils.copyProperties(userCommand, userModel);
    userService.add(userModel);
}

}
前台index.html文件:

  1. <!doctype html>  
  2. <html ng-app=“merchantApp”>  
  3. <head>  
  4. <meta charset=“utf-8”>  
  5. <title>交易业务商户服务平台</title>  
  6. <meta name=“description” content=“”>  
  7. <meta name=“viewport” content=“width=device-width”>  
  8. <link rel=“stylesheet” href=“./css/addUser.css”>  
  9. <script src=“./angular-1.4.0-rc.2/angular.js”></script>  
  10. <script src=‘./angular-1.4.0-rc.2/angular-ui-router.js’></script>  
  11. <script src=‘./js/app.js’></script>  
  12. <script src=‘./js/addUserCtr.js’></script>  
  13. </head>  
  14. <body>  
  15.     <div id=“headBack”>  
  16.         <img id=“rdiv” src=“./images/555.jpg” style=“width:25%;height:98%;”/>  
  17.         <ul id=“navUl”>  
  18.              <li ><a href=“#”>首页</a></li>  
  19.              <li >|</li>  
  20.              <li ><a href=“script:;”>申告管理</a></li>  
  21.              <li >|</li>  
  22.              <li ><a href=“#login”>自助服务</a></li>  
  23.              <li >|</li>  
  24.              <li ><a href=“#regist”>意见管理</a></li>  
  25.              <li >|</li>  
  26.              <li ><a href=“#regist”>知识库</a></li>  
  27.         </ul>  
  28.         <div id=“headDiv”>  
  29.               
  30.         </div>  
  31.     </div>  
  32.       
  33.     <div ui-view=“view” style=“height: 100%;”></div>  
  34. </body>  
  35. </html>  
<!doctype html> 
<html ng-app=”merchantApp”>
<head>
<meta charset=”utf-8”>
<title>交易业务商户服务平台</title>
<meta name=”description” content=”“>
<meta name=”viewport” content=”width=device-width”>
<link rel=”stylesheet” href=”./css/addUser.css”>
<script src=”./angular-1.4.0-rc.2/angular.js”></script>
<script src=’./angular-1.4.0-rc.2/angular-ui-router.js’></script>
<script src=’./js/app.js’></script>
<script src=’./js/addUserCtr.js’></script>
</head>
<body>
<div id=”headBack”>
<img id=”rdiv” src=”./images/555.jpg” style=”width:25%;height:98%;”/>
<ul id=”navUl”>
<li ><a href=”#”>首页</a></li>
<li >|</li>
<li ><a href=”script:;”>申告管理</a></li>
<li >|</li>
<li ><a href=”#login”>自助服务</a></li>
<li >|</li>
<li ><a href=”#regist”>意见管理</a></li>
<li >|</li>
<li ><a href=”#regist”>知识库</a></li>
</ul>
<div id=”headDiv”>

    &lt;/div&gt;
&lt;/div&gt;

&lt;div ui-view="view" style="height: 100%;"&gt;&lt;/div&gt;

</body>
</html>


前台app.js文件代码:

[javascript] view plain copy
print ? 在CODE上查看代码片 派生到我的代码片
  1. var app=angular.module(‘merchantApp’,[‘ui.router’]);    
  2. app.config(function( stateProvider, urlRouterProvider){    
  3.     urlRouterProvider.otherwise(<span class="string">'/addUser'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;stateProvider    
  4.     .state(’addUser’, {    
  5.     url: ”/addUser”,    
  6.     views: {    
  7.        ’view’: {    
  8.         templateUrl: ’views/addUser.html’,    
  9.         controller: ’addUserCtr’    
  10.        }    
  11.     }    
  12.    });    
  13. });    
var app=angular.module('merchantApp',['ui.router']); 
app.config(function($stateProvider,$urlRouterProvider){
$urlRouterProvider.otherwise('/addUser');
$stateProvider
.state('addUser', {
url: "/addUser",
views: {
'view': {
templateUrl: 'views/addUser.html',
controller: 'addUserCtr'
}
}
});
});


增加用户信息的界面addUser.html:
  1. <center>  
  2. <div id=“addUser”>  
  3.    用户名:<input type=“text” ng-model=“user.account”></input></br></br>  
  4.    姓     名:<input type=“text” ng-model=“user.userName”></input></br></br>  
  5.    密     码:<input type=“password” ng-model=“user.password”></input></br></br>  
  6.    手     机:<input type=“text” ng-model=“user.mobile”></input></br></br>  
  7.    邮     箱:<input type=“text” ng-model=“user.email”></input></br></br>  
  8.    <input class=“button1” type=“button” ng-click=“addUser(user);” value=“注   册”></input>    
  9.    <input class=“button1” type=“button” ng-click=“toLogin();” value=“返  回”>  
  10. </div>  
  11. </center>  
<center> 
<div id="addUser">
用户名:<input type="text" ng-model="user.account"></input></br></br>
姓 名:<input type="text" ng-model="user.userName"></input></br></br>
密 码:<input type="password" ng-model="user.password"></input></br></br>
手 机:<input type="text" ng-model="user.mobile"></input></br></br>
邮 箱:<input type="text" ng-model="user.email"></input></br></br>
<input class="button1" type="button" ng-click="addUser(user);" value="注 册"></input>  
<input class="button1" type="button" ng-click="toLogin();" value="返 回">
</div>
</center>


增加用户信息的angularjs控制层:
[javascript] view plain copy
print ? 在CODE上查看代码片 派生到我的代码片
  1. angular.module(‘merchantApp’)    
  2. .controller(’addUserCtr’, [ scope</span><span>,</span><spanclass="string"> http’function( scope, http){    
  3.     scope.addUser=<span class="keyword">function</span><span>(user){&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//向后台提交数据</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>http.post(”./addUser”,user,{headers:‘Content-Type:application/json’}).success(function(){   
  4.         
  5.       });  
  6.     }     
  7. }])    
angular.module(‘merchantApp’) 
.controller(‘addUserCtr’, [‘$scope','$http’, function($scope,$http){
$scope.addUser=function(user){
//向后台提交数据
$http.post(“./addUser”,user,{headers:’Content-Type:application/json’}).success(function(){

  });
}   

}])

相关的css:

  1. body{  
  2.     margin:0;  
  3. }  
  4.   
  5. .button1{  
  6.     font-size:28px;  
  7. }  
  8. #addUser input{  
  9.     font-size:24px;  
  10. }  
  11. #addUser{  
  12.     border:2px solid;  
  13.     border-radius:0.5em;  
  14.     width:35%;  
  15.     height:330px;  
  16.     float:left;  
  17.     margin-left:400px;  
  18.     margin-top:100px;  
  19.     padding:30px;  
  20.     background-image:url(“../images/111.jpg”);  
  21.     background-size:cover;  
  22.     font-size:26px;  
  23. }  
  24. #addUser img{  
  25.     width:100%;  
  26.     height:100%;  
  27. }  
  28. #headBack{  
  29.     width:100%;  
  30.     height:80px;  
  31.     background-color:#E0EEF0;  
  32.     position:relative;  
  33. }  
  34. #headDiv{  
  35.     width:75%;  
  36.     height:5px;  
  37.     background:#CBE1E4;  
  38.     float:right;  
  39.     position:absolute;  
  40.     right:0;  
  41.     bottom:0;  
  42. }  
  43.   
  44. #navUl{  
  45.     /position:relative;/  
  46.     position:absolute;  
  47.     float:right;  
  48.     top:0;  
  49.     right:0;  
  50.     margin:0;  
  51.     box-sizing:border-box;  
  52.     /background-color:red;/  
  53.     width:75%;  
  54.     height:75px;  
  55. }  
  56.   
  57. #navUl li{    
  58.     list-style-typenone;   
  59.     /position:absolute;/  
  60.     font-size:36px;  
  61.     displayinline;    
  62.     /*top:20;/  
  63.     margin-top:20px;  
  64.     left:0;  
  65.     height:auto;  
  66.     text-color:#2F2E2E;  
  67.     /background-color:#EAE3EA;/  
  68.     text-align:center;  
  69.      /*padding:5px; 
  70.    margin-top:3px;/  
  71. }  
  72.   
  73. a:link{  
  74.     text-decoration:none;  
  75.     color:black;  
  76. }  
  77.   
  78. a:visited{  
  79.     color:blue;  
  80. }  
  81.   
  82. a:hover{  
  83.     color:red;  
  84. }  
  85.   
  86. a:active{  
  87.     color:orange;  
  88. }  
body{ 
margin:0;
}

.button1{
font-size:28px;
}

addUser input{

font-size:24px;

}

addUser{

border:2px solid;
border-radius:0.5em;
width:35%;
height:330px;
float:left;
margin-left:400px;
margin-top:100px;
padding:30px;
background-image:url("../images/111.jpg");
background-size:cover;
font-size:26px;

}

addUser img{

width:100%;
height:100%;

}

headBack{

width:100%;
height:80px;
background-color:#E0EEF0;
position:relative;

}

headDiv{

width:75%;
height:5px;
background:#CBE1E4;
float:right;
position:absolute;
right:0;
bottom:0;

}

/*position:relative;*/
position:absolute;
float:right;
top:0;
right:0;
margin:0;
box-sizing:border-box;
/*background-color:red;*/
width:75%;
height:75px;

}

list-style-type: none; 
/*position:absolute;*/
font-size:36px;
display: inline;  
/**top:20;*/
margin-top:20px;
left:0;
height:auto;
text-color:#2F2E2E;
/*background-color:#EAE3EA;*/
text-align:center;
 /**padding:5px;

margin-top:3px;*/
}

a:link{
text-decoration:none;
color:black;
}

a:visited{
color:blue;
}

a:hover{
color:red;
}

a:active{
color:orange;
}


浏览器访问界面如下:



点击注册以后,数据库信息如下:



至此,基础搭建成功。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值