SSM+Mysql+EasyUI增删改查demo

目录结构




表结构

[sql]  view plain  copy
  1. CREATE TABLE `user` (  
  2.   `id` int(10) NOT NULL auto_increment,  
  3.   `username` varchar(50) default NULL,  
  4.   `passwordvarchar(50) default NULL,  
  5.   `sex` varchar(10) default NULL,  
  6.   `age` int(10) default NULL,  
  7.   `birthday` varchar(50) default NULL,  
  8.   `city` int(10) default NULL,  
  9.   `salary` varchar(50) default NULL,  
  10.   `starttime` varchar(100) default NULL,  
  11.   `endtime` varchar(100) default NULL,  
  12.   `description` varchar(500) default NULL,  
  13.   PRIMARY KEY  (`id`)  
  14. ) ENGINE=InnoDB AUTO_INCREMENT=151 DEFAULT CHARSET=utf8;  

1.导入相关依赖

父工程的pom文件,用来集中管理版本

[html]  view plain  copy
  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/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>cn.zto.parent</groupId>  
  5.     <artifactId>zto-parent</artifactId>  
  6.     <version>0.0.1-SNAPSHOT</version>  
  7.     <packaging>pom</packaging>  
  8.   
  9.     <!-- 集中定义依赖版本号 -->  
  10.     <properties>  
  11.         <junit.version>4.12</junit.version>  
  12.         <spring.version>4.1.3.RELEASE</spring.version>  
  13.         <mybatis.version>3.2.8</mybatis.version>  
  14.         <mybatis.spring.version>1.2.2</mybatis.spring.version>  
  15.         <mybatis.paginator.version>1.2.15</mybatis.paginator.version>  
  16.         <mysql.version>5.1.32</mysql.version>  
  17.         <slf4j.version>1.6.4</slf4j.version>  
  18.         <jackson.version>2.4.2</jackson.version>  
  19.         <druid.version>1.0.9</druid.version>  
  20.         <httpclient.version>4.3.5</httpclient.version>  
  21.         <jstl.version>1.2</jstl.version>  
  22.         <servlet-api.version>2.5</servlet-api.version>  
  23.         <jsp-api.version>2.0</jsp-api.version>  
  24.         <joda-time.version>2.5</joda-time.version>  
  25.         <commons-lang3.version>3.3.2</commons-lang3.version>  
  26.         <commons-io.version>1.3.2</commons-io.version>  
  27.         <quartz.version>2.2.1</quartz.version>  
  28.     </properties>  
  29.   
  30.     <dependencyManagement>  
  31.         <dependencies>  
  32.             <!-- 单元测试 -->  
  33.             <dependency>  
  34.                 <groupId>junit</groupId>  
  35.                 <artifactId>junit</artifactId>  
  36.                 <version>${junit.version}</version>  
  37.                 <scope>test</scope>  
  38.             </dependency>  
  39.   
  40.             <!-- Spring -->  
  41.             <dependency>  
  42.                 <groupId>org.springframework</groupId>  
  43.                 <artifactId>spring-context</artifactId>  
  44.                 <version>${spring.version}</version>  
  45.             </dependency>  
  46.             <dependency>  
  47.                 <groupId>org.springframework</groupId>  
  48.                 <artifactId>spring-context-support</artifactId>  
  49.                 <version>${spring.version}</version>  
  50.             </dependency>  
  51.             <dependency>  
  52.                 <groupId>org.springframework</groupId>  
  53.                 <artifactId>spring-beans</artifactId>  
  54.                 <version>${spring.version}</version>  
  55.             </dependency>  
  56.             <dependency>  
  57.                 <groupId>org.springframework</groupId>  
  58.                 <artifactId>spring-webmvc</artifactId>  
  59.                 <version>${spring.version}</version>  
  60.             </dependency>  
  61.             <dependency>  
  62.                 <groupId>org.springframework</groupId>  
  63.                 <artifactId>spring-jdbc</artifactId>  
  64.                 <version>${spring.version}</version>  
  65.             </dependency>  
  66.             <dependency>  
  67.                 <groupId>org.springframework</groupId>  
  68.                 <artifactId>spring-aspects</artifactId>  
  69.                 <version>${spring.version}</version>  
  70.             </dependency>  
  71.             <dependency>  
  72.                 <groupId>org.springframework</groupId>  
  73.                 <artifactId>spring-tx</artifactId>  
  74.                 <version>4.0.6.RELEASE</version>  
  75.             </dependency>  
  76.   
  77.             <!-- Mybatis -->  
  78.             <dependency>  
  79.                 <groupId>org.mybatis</groupId>  
  80.                 <artifactId>mybatis</artifactId>  
  81.                 <version>${mybatis.version}</version>  
  82.             </dependency>  
  83.             <dependency>  
  84.                 <groupId>org.mybatis</groupId>  
  85.                 <artifactId>mybatis-spring</artifactId>  
  86.                 <version>${mybatis.spring.version}</version>  
  87.             </dependency>  
  88.   
  89.             <!-- MySql -->  
  90.             <dependency>  
  91.                 <groupId>mysql</groupId>  
  92.                 <artifactId>mysql-connector-java</artifactId>  
  93.                 <version>${mysql.version}</version>  
  94.             </dependency>  
  95.   
  96.             <dependency>  
  97.                 <groupId>org.slf4j</groupId>  
  98.                 <artifactId>slf4j-log4j12</artifactId>  
  99.                 <version>${slf4j.version}</version>  
  100.             </dependency>  
  101.   
  102.             <!-- Jackson Json处理工具包 -->  
  103.             <dependency>  
  104.                 <groupId>com.fasterxml.jackson.core</groupId>  
  105.                 <artifactId>jackson-databind</artifactId>  
  106.                 <version>${jackson.version}</version>  
  107.             </dependency>  
  108.   
  109.             <!-- 连接池 -->  
  110.             <dependency>  
  111.                 <groupId>com.jolbox</groupId>  
  112.                 <artifactId>bonecp-spring</artifactId>  
  113.                 <version>0.8.0.RELEASE</version>  
  114.             </dependency>  
  115.   
  116.             <!-- httpclient -->  
  117.             <dependency>  
  118.                 <groupId>org.apache.httpcomponents</groupId>  
  119.                 <artifactId>httpclient</artifactId>  
  120.                 <version>${httpclient.version}</version>  
  121.             </dependency>  
  122.   
  123.             <!-- JSP相关 -->  
  124.             <dependency>  
  125.                 <groupId>jstl</groupId>  
  126.                 <artifactId>jstl</artifactId>  
  127.                 <version>${jstl.version}</version>  
  128.             </dependency>  
  129.             <dependency>  
  130.                 <groupId>javax.servlet</groupId>  
  131.                 <artifactId>servlet-api</artifactId>  
  132.                 <version>${servlet-api.version}</version>  
  133.                 <scope>provided</scope>  
  134.             </dependency>  
  135.             <dependency>  
  136.                 <groupId>javax.servlet</groupId>  
  137.                 <artifactId>jsp-api</artifactId>  
  138.                 <version>${jsp-api.version}</version>  
  139.                 <scope>provided</scope>  
  140.             </dependency>  
  141.   
  142.             <!-- 时间操作组件 -->  
  143.             <dependency>  
  144.                 <groupId>joda-time</groupId>  
  145.                 <artifactId>joda-time</artifactId>  
  146.                 <version>${joda-time.version}</version>  
  147.             </dependency>  
  148.   
  149.             <!-- Apache工具组件 -->  
  150.             <dependency>  
  151.                 <groupId>org.apache.commons</groupId>  
  152.                 <artifactId>commons-lang3</artifactId>  
  153.                 <version>${commons-lang3.version}</version>  
  154.             </dependency>  
  155.             <dependency>  
  156.                 <groupId>org.apache.commons</groupId>  
  157.                 <artifactId>commons-io</artifactId>  
  158.                 <version>${commons-io.version}</version>  
  159.             </dependency>  
  160.               
  161.             <!-- 阿里云开放搜索opensearch -->  
  162.             <dependency>  
  163.               <groupId>com.aliyun.opensearch</groupId>  
  164.               <artifactId>aliyun-sdk-opensearch</artifactId>  
  165.               <version>2.1.3</version>  
  166.             </dependency>  
  167.               
  168.             <!-- 定时任务 -->  
  169.             <dependency>  
  170.                 <groupId>org.quartz-scheduler</groupId>  
  171.                 <artifactId>quartz</artifactId>  
  172.                 <version>${quartz.version}</version>  
  173.             </dependency>  
  174.         </dependencies>  
  175.           
  176.     </dependencyManagement>  
  177.       
  178.     <!--设置deploy地址 依赖包发布到私服,将开发的包上传到宿主仓库-->  
  179.     <distributionManagement>   
  180.     <!-- 上传到宿主仓库的releases -->  
  181.      <repository>   
  182.         <id>releases</id>   
  183.         <name>Internal Releases</name>   
  184.         <url>http://10.10.4.90:8081/nexus/content/repositories/releases/</url>   
  185.     </repository>   
  186.     <!-- 上传到宿主仓库的snapshots -->  
  187.     <snapshotRepository>   
  188.         <id>snapshots</id>   
  189.         <name>Internal Snapshots</name>   
  190.         <url>http://10.10.4.90:8081/nexus/content/repositories/snapshots/</url>   
  191.     </snapshotRepository>    
  192.   </distributionManagement>  
  193.   
  194.     <build>  
  195.         <finalName>${project.artifactId}</finalName>  
  196.         <plugins>  
  197.             <!-- 资源文件拷贝插件 -->  
  198.             <plugin>  
  199.                 <groupId>org.apache.maven.plugins</groupId>  
  200.                 <artifactId>maven-resources-plugin</artifactId>  
  201.                 <version>2.7</version>  
  202.                 <configuration>  
  203.                     <encoding>UTF-8</encoding>  
  204.                 </configuration>  
  205.             </plugin>  
  206.             <!-- java编译插件 -->  
  207.             <plugin>  
  208.                 <groupId>org.apache.maven.plugins</groupId>  
  209.                 <artifactId>maven-compiler-plugin</artifactId>  
  210.                 <version>3.2</version>  
  211.                 <configuration>  
  212.                     <source>1.7</source>  
  213.                     <target>1.7</target>  
  214.                     <encoding>UTF-8</encoding>  
  215.                 </configuration>  
  216.             </plugin>  
  217.         </plugins>  
  218.         <pluginManagement>  
  219.             <plugins>  
  220.                 <!-- 配置Tomcat插件 -->  
  221.                 <plugin>  
  222.                     <groupId>org.apache.tomcat.maven</groupId>  
  223.                     <artifactId>tomcat7-maven-plugin</artifactId>  
  224.                     <version>2.2</version>  
  225.                 </plugin>  
  226.             </plugins>  
  227.         </pluginManagement>  
  228.     </build>  
  229. </project>  

pom.xml

[html]  view plain  copy
  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/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.xyc.ssm</groupId>  
  5.     <artifactId>zto-ssm</artifactId>  
  6.     <parent>  
  7.         <groupId>cn.zto.parent</groupId>  
  8.         <artifactId>zto-parent</artifactId>  
  9.         <version>0.0.1-SNAPSHOT</version>  
  10.     </parent>  
  11.     <packaging>war</packaging>  
  12.   
  13.     <dependencies>  
  14.     <!--如果用命令生成的话 这个依赖是不需要的-->  
  15.         <dependency>  
  16.             <groupId>org.mybatis.generator</groupId>  
  17.             <artifactId>mybatis-generator-core</artifactId>  
  18.             <version>1.3.2</version>  
  19.         </dependency>  
  20.         <!-- 单元测试 -->  
  21.         <dependency>  
  22.             <groupId>junit</groupId>  
  23.             <artifactId>junit</artifactId>  
  24.             <scope>test</scope>  
  25.         </dependency>  
  26.         <dependency>  
  27.             <groupId>org.springframework</groupId>  
  28.             <artifactId>spring-webmvc</artifactId>  
  29.         </dependency>  
  30.         <dependency>  
  31.             <groupId>org.springframework</groupId>  
  32.             <artifactId>spring-jdbc</artifactId>  
  33.         </dependency>  
  34.         <dependency>  
  35.             <groupId>org.springframework</groupId>  
  36.             <artifactId>spring-aspects</artifactId>  
  37.         </dependency>  
  38.         <dependency>  
  39.             <groupId>org.springframework</groupId>  
  40.             <artifactId>spring-test</artifactId>  
  41.             <version>4.1.3.RELEASE</version>  
  42.         </dependency>  
  43.   
  44.         <!-- Mybatis -->  
  45.         <dependency>  
  46.             <groupId>org.mybatis</groupId>  
  47.             <artifactId>mybatis</artifactId>  
  48.         </dependency>  
  49.         <dependency>  
  50.             <groupId>org.mybatis</groupId>  
  51.             <artifactId>mybatis-spring</artifactId>  
  52.         </dependency>  
  53.         <!-- 分页助手 -->  
  54.         <dependency>  
  55.             <groupId>com.github.pagehelper</groupId>  
  56.             <artifactId>pagehelper</artifactId>  
  57.             <version>3.7.5</version>  
  58.         </dependency>  
  59.         <dependency>  
  60.             <groupId>com.github.jsqlparser</groupId>  
  61.             <artifactId>jsqlparser</artifactId>  
  62.             <version>0.9.1</version>  
  63.         </dependency>  
  64.         <!-- MySql -->  
  65.         <dependency>  
  66.             <groupId>mysql</groupId>  
  67.             <artifactId>mysql-connector-java</artifactId>  
  68.         </dependency>  
  69.   
  70.         <dependency>  
  71.             <groupId>org.slf4j</groupId>  
  72.             <artifactId>slf4j-log4j12</artifactId>  
  73.         </dependency>  
  74.   
  75.         <!-- Jackson Json处理工具包 -->  
  76.         <dependency>  
  77.             <groupId>com.fasterxml.jackson.core</groupId>  
  78.             <artifactId>jackson-databind</artifactId>  
  79.         </dependency>  
  80.         <!-- 连接池 -->  
  81.         <dependency>  
  82.             <groupId>com.jolbox</groupId>  
  83.             <artifactId>bonecp-spring</artifactId>  
  84.         </dependency>  
  85.         <!-- JSP相关 -->  
  86.         <dependency>  
  87.             <groupId>jstl</groupId>  
  88.             <artifactId>jstl</artifactId>  
  89.         </dependency>  
  90.         <dependency>  
  91.             <groupId>javax.servlet</groupId>  
  92.             <artifactId>servlet-api</artifactId>  
  93.             <scope>provided</scope>  
  94.         </dependency>  
  95.         <dependency>  
  96.             <groupId>javax.servlet</groupId>  
  97.             <artifactId>jsp-api</artifactId>  
  98.             <scope>provided</scope>  
  99.         </dependency>  
  100.         <!-- Apache工具组件 -->  
  101.         <dependency>  
  102.             <groupId>org.apache.commons</groupId>  
  103.             <artifactId>commons-lang3</artifactId>  
  104.         </dependency>  
  105.         <dependency>  
  106.             <groupId>org.apache.commons</groupId>  
  107.             <artifactId>commons-io</artifactId>  
  108.         </dependency>  
  109.     </dependencies>  
  110.   
  111.     <build>  
  112.         <plugins>  
  113.             <!-- 配置Tomcat插件 -->  
  114.             <plugin>  
  115.                 <groupId>org.apache.tomcat.maven</groupId>  
  116.                 <artifactId>tomcat7-maven-plugin</artifactId>  
  117.                 <configuration>  
  118.                     <port>80</port>  
  119.                     <path>/</path>  
  120.                 </configuration>  
  121.             </plugin>  
  122.             <plugin>  
  123.                 <groupId>org.mybatis.generator</groupId>  
  124.                 <artifactId>mybatis-generator-maven-plugin</artifactId>  
  125.                 <version>1.3.2</version>  
  126.                 <configuration>  
  127.                     <verbose>true</verbose>  
  128.                     <overwrite>true</overwrite>  
  129.                 </configuration>  
  130.             </plugin>  
  131.         </plugins>  
  132.     </build>  
  133. </project>  


2.搭建SSM环境

web.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     id="MyWebApp" version="2.5">  
  6.     <display-name>zto-ssm</display-name>  
  7.   
  8.     <context-param>  
  9.         <param-name>contextConfigLocation</param-name>  
  10.         <param-value>classpath:spring/applicationContext*.xml</param-value>  
  11.     </context-param>  
  12.     <!--Spring的ApplicationContext 载入 -->  
  13.     <listener>  
  14.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  15.     </listener>  
  16.   
  17.     <!-- 编码过滤器,以UTF8编码,解决post乱码问题 -->  
  18.     <filter>  
  19.         <filter-name>encodingFilter</filter-name>  
  20.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  21.         <init-param>  
  22.             <param-name>encoding</param-name>  
  23.             <param-value>UTF8</param-value>  
  24.         </init-param>  
  25.     </filter>  
  26.     <filter-mapping>  
  27.         <filter-name>encodingFilter</filter-name>  
  28.         <url-pattern>/*</url-pattern>  
  29.     </filter-mapping>  
  30.   
  31.     <servlet>  
  32.         <servlet-name>ssm</servlet-name>  
  33.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  34.         <!-- 自定义SpringMVC配置文件路径 -->  
  35.         <init-param>  
  36.             <param-name>contextConfigLocation</param-name>  
  37.             <param-value>classpath:spring/zto-ssm.xml</param-value>  
  38.         </init-param>  
  39.         <!-- 随容器自动启动完成初始化 -->  
  40.         <load-on-startup>1</load-on-startup>  
  41.     </servlet>  
  42.     <servlet-mapping>  
  43.         <servlet-name>ssm</servlet-name>  
  44.         <url-pattern>/</url-pattern>  
  45.     </servlet-mapping>  
  46.   
  47.     <welcome-file-list>  
  48.         <welcome-file>index.jsp</welcome-file>  
  49.     </welcome-file-list>  
  50.   
  51. </web-app>  
  52.       

jdbc.properties
[plain]  view plain  copy
  1. jdbc.driver=com.mysql.jdbc.Driver  
  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true  
  3. jdbc.username=root  
  4. jdbc.password=123456  

applicationContext.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd  
  8.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  
  9.   
  10.     <!-- 使用spring自带的占位符替换功能 -->  
  11.     <bean  
  12.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  13.         <!-- 允许JVM参数覆盖 -->  
  14.         <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />  
  15.         <!-- 忽略没有找到的资源文件 -->  
  16.         <property name="ignoreResourceNotFound" value="true" />  
  17.         <!-- 配置资源文件 -->  
  18.         <property name="locations">  
  19.             <list>  
  20.                 <value>classpath:jdbc.properties</value>  
  21.             </list>  
  22.         </property>  
  23.     </bean>  
  24.       
  25.     <context:component-scan base-package="cn.xyc" />  
  26.   
  27.     <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"  
  28.         destroy-method="close">  
  29.         <!-- 数据库驱动 -->  
  30.         <property name="driverClass" value="${jdbc.driver}" />  
  31.         <!-- 相应驱动的jdbcUrl -->  
  32.         <property name="jdbcUrl" value="${jdbc.url}" />  
  33.         <!-- 数据库的用户名 -->  
  34.         <property name="username" value="${jdbc.username}" />  
  35.         <!-- 数据库的密码 -->  
  36.         <property name="password" value="${jdbc.password}" />  
  37.         <!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->  
  38.         <property name="idleConnectionTestPeriod" value="60" />  
  39.         <!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->  
  40.         <property name="idleMaxAge" value="30" />  
  41.         <!-- 每个分区最大的连接数 -->  
  42.         <property name="maxConnectionsPerPartition" value="150" />  
  43.         <!-- 每个分区最小的连接数 -->  
  44.         <property name="minConnectionsPerPartition" value="5" />  
  45.     </bean>  
  46.   
  47. </beans>  

applicationContext-mybatis.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd  
  8.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  
  9.   
  10.     <!-- 定义Mybatis的SqlSessionFactory -->  
  11.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  12.         <!-- 定义数据源 -->  
  13.         <property name="dataSource" ref="dataSource" />  
  14.         <!-- 指定mybatis全局配置文件 -->  
  15.         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>  
  16.         <!-- 扫描mappers目录以及子目录下的所有xml文件 -->  
  17.         <property name="mapperLocations" value="classpath:mybatis/mappers/**/*.xml" />  
  18.         <!-- 别名扫描包 -->  
  19.         <property name="typeAliasesPackage" value="cn.xyc.ssm.pojo"/>  
  20.     </bean>  
  21.   
  22.     <!-- 定义Mapper接口扫描器 -->  
  23.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  24.          <property name="basePackage" value="cn.xyc.ssm.mapper" />  
  25.     </bean>  
  26.   
  27. </beans>  
applicationContext-transaction.xml
[html]  view plain  copy
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"  
  3.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  6.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  7.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
  8.     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">  
  9.       
  10.     <!-- 定义事务管理器 -->  
  11.     <bean id="transactionManager"  
  12.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  13.         <property name="dataSource" ref="dataSource" />  
  14.     </bean>  
  15.   
  16.     <!-- 定义事务策略 -->  
  17.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  18.         <tx:attributes>  
  19.             <!--所有以query开头的方法都是只读的 -->  
  20.             <tx:method name="query*" read-only="true" />  
  21.             <!--其他方法使用默认事务策略 -->  
  22.             <tx:method name="*" />  
  23.         </tx:attributes>  
  24.     </tx:advice>  
  25.   
  26.     <aop:config>  
  27.         <!--pointcut元素定义一个切入点,execution中的第一个星号 用以匹配方法的返回类型,  
  28.             这里星号表明匹配所有返回类型。 com.abc.dao.*.*(..)表明匹配cn.xyc.ssm.service包下的所有类的所有   
  29.             方法 -->  
  30.         <aop:pointcut id="myPointcut" expression="execution(* cn.xyc.ssm.service.*.*(..))" />  
  31.         <!--将定义好的事务处理策略应用到上述的切入点 -->  
  32.         <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />  
  33.     </aop:config>  
  34.       
  35. </beans>  

mybatis-config.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE configuration  
  3.   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  5. <configuration>  
  6.   
  7.     <settings>  
  8.         <!-- 开启驼峰自动映射 -->  
  9.         <setting name="mapUnderscoreToCamelCase" value="true" />  
  10.     </settings>  
  11.       
  12.       
  13.     <!-- 配置分页插件 -->  
  14.     <plugins>  
  15.         <plugin interceptor="com.github.pagehelper.PageHelper">  
  16.             <property name="dialect" value="mysql"/>  
  17.             <!-- 该参数默认为false -->  
  18.             <!-- 设置为true时,使用RowBounds分页会进行count查询 -->  
  19.             <property name="rowBoundsWithCount" value="true"/>  
  20.         </plugin>  
  21.     </plugins>  
  22.   
  23. </configuration>  

zto-ssm.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd  
  8.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  
  9.   
  10.     <!-- 注解驱动 -->  
  11.     <mvc:annotation-driven />  
  12.   
  13.     <!-- 定义Controller的扫描包 -->  
  14.     <context:component-scan base-package="cn.xyc.ssm.controller" />  
  15.   
  16.     <!-- 定义视图解析器 -->  
  17.     <bean  
  18.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  19.         <property name="prefix" value="/WEB-INF/views/" />  
  20.         <property name="suffix" value=".jsp" />  
  21.     </bean>  
  22.   
  23.     <!-- 处理静态资源被“/”所拦截的问题 -->  
  24.     <mvc:default-servlet-handler />  
  25.       
  26. </beans>  

ok,框架搭建完成,可以启动一下看看是否正常,当然配置文件中扫描的包必须创建好
因为上面配置了mapper扫描的xml,但是目前还没有xml,所有会报错。注释掉就不会报错了


2.mybatis逆向生成实体映射等.


init.properties
[plain]  view plain  copy
  1. #Mybatis Generator configuration  
  2. project = E:/eclipse/workspace/zto-ssm/src/main/java  
  3. #classPath=D:/maven/Reposeitory/com/oracle/ojdbc6/11.2.0.3.0/ojdbc6-11.2.0.3.0.jar  
  4. classPath = D:/repository/mysql/mysql-connector-java/5.1.32/mysql-connector-java-5.1.32.jar  
  5. jdbc_driver = com.mysql.jdbc.Driver  
  6. jdbc_url = jdbc:mysql://127.0.0.1:3306/mybatis  
  7. jdbc_user = root  
  8. jdbc_password = 123456  

GeneratorConfig.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >  
  3. <generatorConfiguration>  
  4.     <!-- 引入配置文件 -->  
  5.     <properties resource="init.properties"/>  
  6.       
  7.     <!-- 指定数据连接驱动jar地址 -->  
  8.     <classPathEntry location="${classPath}" />  
  9.       
  10.     <!-- 一个数据库一个context -->  
  11.     <context id="infoGuardian">  
  12.         <!-- 注释 -->  
  13.         <commentGenerator >  
  14.             <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->  
  15.         </commentGenerator>  
  16.           
  17.         <!-- jdbc连接 -->  
  18.         <jdbcConnection driverClass="${jdbc_driver}"  
  19.             connectionURL="${jdbc_url}" userId="${jdbc_user}"  
  20.             password="${jdbc_password}" />  
  21.           
  22.         <!-- 类型转换 -->  
  23.         <javaTypeResolver>  
  24.             <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
  25.             <property name="forceBigDecimals" value="false"/>  
  26.         </javaTypeResolver>  
  27.           
  28.         <!-- 生成实体类地址 -->    
  29.         <javaModelGenerator targetPackage="cn.xyc.ssm.pojo"  
  30.             targetProject="${project}" >  
  31.             <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->  
  32.             <property name="enableSubPackages" value="false"/>  
  33.             <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
  34.             <property name="trimStrings" value="true"/>  
  35.         </javaModelGenerator>  
  36.           
  37.         <!-- 生成mapxml文件 -->  
  38.         <sqlMapGenerator targetPackage="cn.xyc.ssm.mapper"  
  39.             targetProject="${project}" >  
  40.             <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->  
  41.             <property name="enableSubPackages" value="false" />  
  42.         </sqlMapGenerator>  
  43.           
  44.         <!-- 生成mapxml对应client,也就是接口dao -->      
  45.         <javaClientGenerator targetPackage="cn.xyc.ssm.mapper"  
  46.             targetProject="${project}" type="XMLMAPPER" >  
  47.             <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->  
  48.             <property name="enableSubPackages" value="false" />  
  49.         </javaClientGenerator>  
  50.           
  51.         <!-- 配置表信息 -->      
  52.         <table schema="" tableName="user"  
  53.             domainObjectName="User" enableCountByExample="true"  
  54.             enableDeleteByExample="true" enableSelectByExample="true"  
  55.             enableUpdateByExample="true" selectByExampleQueryId="true">  
  56.             <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample   
  57.                 是否生成 example类   -->  
  58.             <!-- 忽略列,不生成bean 字段   
  59.             <ignoreColumn column="CLASS" />-->  
  60.             <!-- 指定列的java数据类型   
  61.             <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->  
  62.         </table>  
  63.     </context>  
  64. </generatorConfiguration>  

pom文件中必须加上相关插件,上面已经有了.
运行maven命令: mybatis-generator:generate 会生成相关文件,将映射文件移动到mybatis/mappers下面

3.Junit测试SSM框架


先添加日志
log4j.properties
[plain]  view plain  copy
  1. log4j.rootLogger=DEBUG,A1  
  2. log4j.logger.org.mybatis = DEBUG  
  3. log4j.appender.A1=org.apache.log4j.ConsoleAppender  
  4. log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  5. log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n  

TestSSM.java
[java]  view plain  copy
  1. package cn.xyc.ssm;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.junit.Before;  
  6. import org.junit.Test;  
  7. import org.junit.runner.RunWith;  
  8. import org.springframework.beans.factory.annotation.Autowired;  
  9. import org.springframework.context.ApplicationContext;  
  10. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  11. import org.springframework.test.context.ContextConfiguration;  
  12. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
  13.   
  14. import cn.xyc.ssm.mapper.UserMapper;  
  15. import cn.xyc.ssm.pojo.User;  
  16.   
  17.   
  18. /** 
  19.  *  
  20.  * @ClassName:  TestMyBatis    
  21.  * @Description: 测试ssm框架 
  22.  * @author: xyc  
  23.  * @date:   2017年2月13日 下午7:53:09    
  24.  * 
  25.  */  
  26. @RunWith(SpringJUnit4ClassRunner.class)  
  27. @ContextConfiguration(locations = { "classpath:spring/*.xml" })  
  28. public class TestSSM {  
  29.       
  30.     @Autowired  
  31.     private UserMapper userMapper;  
  32.   
  33.     /**  
  34.      * @throws Exception  
  35.      */  
  36.     @Before  
  37.     public void setUp() throws Exception {  
  38.         // 初始化SPring容器  
  39.         //ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml",  
  40.         //        "applicationContext-mybatis.xml");  
  41.         // 从容器中获取SqlSessionFactory  
  42.         // SqlSessionFactory sqlSessionFactory =  
  43.         // applicationContext.getBean(SqlSessionFactory.class);  
  44.   
  45.         // SqlSession sqlSession = sqlSessionFactory.openSession(true);  
  46.         // this.userMapper = sqlSession.getMapper(UserMapper.class);  
  47.         //this.userMapper = applicationContext.getBean(UserMapper.class);  
  48.     }  
  49.       
  50.   
  51.     @Test  
  52.     public void test1() {  
  53.           
  54.         List<User> queryAll = userMapper.queryAll();  
  55.         for (User user : queryAll) {  
  56.             System.out.println(user);  
  57.         }  
  58.     }  
  59. }  

结果:


4.EasyUI

导入jquery-easyui-1.2.6类库就可以直接使用easyUI了
commons.js
[java]  view plain  copy
  1. // 自定义的校验器  
  2. $.extend($.fn.validatebox.defaults.rules, {  
  3.     midLength : {  
  4.         validator : function(value, param) {  
  5.             return value.length >= param[0] && value.length <= param[1];  
  6.         },  
  7.         message : ''  
  8.     },  
  9.     equalLength : {  
  10.         validator : function(value, param) {  
  11.             return value.length == param[0];  
  12.         },  
  13.         message : '密码必须为4个字符!'  
  14.     }  
  15. });  
  16.   
  17. $.extend($.fn.datagrid.defaults.editors, {  
  18.     datetimebox : {  
  19.         init : function(container, options) {  
  20.             var box = $('<input />').appendTo(container);  
  21.             box.datetimebox(options);  
  22.             return box;  
  23.         },  
  24.         getValue : function(target) {  
  25.             return $(target).datetimebox('getValue');  
  26.         },  
  27.         setValue : function(target, value) {  
  28.             $(target).datetimebox('setValue', value);  
  29.         },  
  30.         resize : function(target, width) {  
  31.             var box = $(target);  
  32.             box.datetimebox('resize', width);  
  33.         },  
  34.         destroy : function(target) {  
  35.             $(target).datetimebox('destroy');  
  36.         }  
  37.     }  
  38. });  

index.jsp
[html]  view plain  copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. <script type="text/javascript" src="/js/jquery-easyui-1.2.6/jquery-1.7.2.min.js"></script>  
  9. <link rel="stylesheet" type="text/css" href="/js/jquery-easyui-1.2.6/themes/default/easyui.css" />  
  10. <link rel="stylesheet" type="text/css" href="/js/jquery-easyui-1.2.6/themes/icon.css" />  
  11. <script type="text/javascript" src="/js/jquery-easyui-1.2.6/jquery.easyui.min.js"></script>  
  12. <script type="text/javascript" src="/js/jquery-easyui-1.2.6/locale/easyui-lang-zh_CN.js"></script>  
  13. <script type="text/javascript" src="/js/commons.js"></script>  
  14. <script type="text/javascript">  
  15.     $(function(){  
  16.           
  17.         //-----------------------------对于form表单的验证 ---------------------------------------------------------------------------  
  18.         $('#username').numberbox({  
  19.             min:0 , //允许的最小值  
  20.             max:150 , //允许的最大值  
  21.             required:true , //必填字段  定义是否字段应被输入  
  22.             missingMessage:'用户名必填!' ,   //当文本框是空时出现的提示文字  
  23.             precision:0    //显示在小数点后面的最大精度  
  24.         });  
  25.         //数值验证组件   
  26.         $('#age').numberbox({  
  27.             min:0 , //允许的最小值  
  28.             max:150 , //允许的最大值  
  29.             required:true , //必填字段  定义是否字段应被输入  
  30.             missingMessage:'年龄必填!' ,   //当文本框是空时出现的提示文字  
  31.             precision:0    //显示在小数点后面的最大精度  
  32.         });  
  33.           
  34.         //日期组件  
  35.         $('#birthday').datebox({  
  36.             required:true ,   //必填字段  定义是否字段应被输入  
  37.             missingMessage:'生日必填!' ,  //当文本框是空时出现的提示文字  
  38.             editable:false  //定义是否用户可以往文本域中直接输入文字  
  39.         });  
  40.           
  41.         $('#salary').numberbox({  
  42.             min:1000 ,   
  43.             max:20000 ,  
  44.             required:true ,   
  45.             missingMessage:'薪水必填!' ,  
  46.             precision:2  
  47.         });  
  48.           
  49.         //日期时间组件  
  50.         $('#startTime,#endTime').datetimebox({  
  51.             required:true ,   
  52.             missingMessage:'时间必填!' ,  
  53.             editable:false   //定义是否用户可以往文本域中直接输入文字  
  54.         });  
  55.           
  56.           
  57.         var flag ;      //undefined 判断新增和修改方法   
  58.           
  59.         ///---------------------datagrid部分----------------------------------------------------------------------------------  
  60.         $('#tt').datagrid({  
  61.             idField: 'id',    //只要创建数据表格 就必须要加 ifField  
  62.             url: 'user/queryUserByPage',  
  63.             title: '用户信息',  
  64.             //width: '1000',  
  65.             height:450 ,  
  66.             fitColumns: true,               //宽度自适应  
  67.             striped: true ,                 //隔行变色特性  
  68.             rownumbers:true,                //显示行号  
  69.             //singleSelect:true ,               //单选模式   
  70.             loadMsg: '数据正在加载,请耐心的等待...' ,  
  71.             frozenColumns:[[                //冻结列特性 ,不要与fitColumns 特性一起使用   
  72.                 {                           //如果需要多选,需要禁止单选模式   
  73.                     field:'ck' ,  
  74.                     width:50 ,  
  75.                     checkbox: true  
  76.                 }  
  77.             ]],  
  78.             columns:[[  
  79.                 {field:'id',title:'编号',width:120},  
  80.                 {  
  81.                     field:'username',  
  82.                     title:'用户名',  
  83.                     width:120,  
  84.                     align:'center' ,   //居中显示  
  85.                     styler:function(value , record){  
  86.                         if(value == 'admin'){  
  87.                             //return 'background:blue;';   //如果用户名为admin,变蓝色  
  88.                         }  
  89.                     }  
  90.                 },  
  91.                 {  
  92.                     field:'password',  
  93.                     title:'密码',  
  94.                     width:120,  
  95.                     hidden: true   //将密码隐藏  
  96.                 },  
  97.                 {  
  98.                     field:'sex',  
  99.                     title:'性别',  
  100.                     width:120,  
  101.                     formatter:function(value , record , index){  
  102.                         if(value == 1){  
  103.                             return '<span style=color:red; ></span>' ;  
  104.                         } else if( value == 2){  
  105.                             return '<span style=color:green; ></span>' ;   
  106.                         }  
  107.                         //console.info(value);  
  108.                         //console.info(record);  
  109.                         //console.info(index);   
  110.                     }  
  111.                 },  
  112.                 {field:'age',title:'年龄',width:120},  
  113.                 {field:'birthday',title:'生日',width:120},  
  114.                 {  
  115.                     field:'city',  
  116.                     title:'城市',  
  117.                     width:120,  
  118.                     formatter:function(value , record , index){  
  119.                         /*  
  120.                         if(value==1){  
  121.                             return '北京';  
  122.                         } else if(value == 2){  
  123.                             return '上海';  
  124.                         } else if(value == 3){  
  125.                             return '深圳';  
  126.                         } else if(value == 4){  
  127.                             return '长春';  
  128.                         }  
  129.                         */  
  130.                         var str = '';  
  131.                         $.ajax({  
  132.                             type:'post' ,   
  133.                             url : 'user/getCityName' ,  
  134.                             /* url : 'user/getCityName2' , */  
  135.                             cache:false ,  
  136.                             async: false ,      //同步请求  
  137.                             data:{id:value},  
  138.                             dataType:'json' ,  
  139.                             success:function(result){     
  140.                                 //str = result ;    //dataType:'text'   
  141.                                 str = result.name ; //dataType:'json'   
  142.                             }  
  143.                         });  
  144.                         return str ;  
  145.                     }  
  146.                       
  147.                 },  
  148.                 {field:'salary',title:'薪资',width:120},  
  149.                 {field:'starttime',title:'创建日期',width:120},  
  150.                 {field:'endtime',title:'结束日期',width:120},  
  151.                 {  
  152.                     field:'description',  
  153.                     title:'描述',  
  154.                     width:120,  
  155.                     formatter:function(value , record , index){  
  156.                         return '<span title='+value+'>'+value+'</span>';  
  157.                     }  
  158.                 },  
  159.             ]],  
  160.             pagination: true ,   //在底部显示分页栏  
  161.             pageSize: 10 ,       //每页显示多少个  
  162.             pageList:[5,10,15,20,50], //初始化页面尺寸的选择列表  
  163.             toolbar:[  
  164.                 {  
  165.                     iconCls:"icon-add",//按钮上的图标  
  166.                         text:"添加用户", //按钮的文字  
  167.                         handler:function(){  
  168.                             flag = 'add';   //改变flag的值  
  169.                             //$('#myform').find('input[name!=sex]').val("");  
  170.                             $('#myform').get(0).reset();  
  171.                             //$('#myform').form('clear');  
  172.                             $("#mydialog").dialog("open");  
  173.                         }  
  174.                 },  
  175.                 {  
  176.                     iconCls:"icon-edit",//按钮上的图标  
  177.                         text:"编辑用户",//按钮的文字  
  178.                         handler:function(){  
  179.                             flag = 'edit';   //改变flag的值  
  180.                             var arr =$('#tt').datagrid('getSelections');    //获取被选中的行,返回的是数组  
  181.                             if(arr.length != 1){  
  182.                                 $.messager.show({  
  183.                                     title:'提示信息!',  
  184.                                     msg:'只能选择一行记录进行修改!'  
  185.                                 });  
  186.                             } else {  
  187.                                 $('#mydialog').dialog({  
  188.                                     title:'修改用户'  
  189.                                 });  
  190.                                 $('#mydialog').dialog('open'); //打开窗口  
  191.                                 $('#myform').get(0).reset();   //清空表单数据   
  192.                                 $('#myform').form('load',{     //调用load方法把所选中的数据load到表单中,非常方便  
  193.                                     id:arr[0].id ,  
  194.                                     username:arr[0].username ,  
  195.                                     password:arr[0].password ,  
  196.                                     sex:arr[0].sex ,  
  197.                                     age:arr[0].age ,  
  198.                                     birthday:arr[0].birthday ,  
  199.                                     city:arr[0].city ,  
  200.                                     salary:arr[0].salary ,  
  201.                                     starttime:arr[0].starttime,  
  202.                                     endtime:arr[0].endtime ,  
  203.                                     description:arr[0].description  
  204.                                 });  
  205.                             }  
  206.                         }  
  207.                 },  
  208.                 {  
  209.                     iconCls:"icon-remove",//按钮上的图标  
  210.                         text:"删除用户",//按钮的文字  
  211.                         handler:function(){  
  212.                             //console.log('删除');   //在浏览器控制台打印日志  
  213.                             var arr =$('#tt').datagrid('getSelections');  
  214.                             if(arr.length <=0){  
  215.                                 $.messager.show({  
  216.                                     title:'提示信息!',  
  217.                                     msg:'至少选择一行记录进行删除!'  
  218.                                 });  
  219.                             } else {  
  220.                                   
  221.                                 $.messager.confirm('提示信息' , '确认删除?' , function(r){  
  222.                                         if(r){  
  223.                                                 var ids = '';  
  224.                                                 for(var i =0 ;i<arr.length;i++){  
  225.                                                     ids += arr[i].id + ',' ;  
  226.                                                 }  
  227.                                                 ids = ids.substring(0 , ids.length-1);  
  228.                                                 $.post('user/delete' , {ids:ids} , function(result){  
  229.                                                     //1 刷新数据表格   
  230.                                                     $('#tt').datagrid('reload');  
  231.                                                     //2 清空idField     
  232.                                                     $('#tt').datagrid('clearSelections');   //unselectAll取消选中当前页所有的行。   clearSelections清除所有的选择。  
  233.                                                     //3 给提示信息   
  234.                                                     $.messager.show({  
  235.                                                         title:result.status ,   
  236.                                                         msg:result.message  
  237.                                                     });  
  238.                                                 });  
  239.                                         } else {  
  240.                                             return ;  
  241.                                         }  
  242.                                 });  
  243.                             }  
  244.                         }  
  245.                 },  
  246.                 {  
  247.                     iconCls:"icon-search",//按钮上的图标  
  248.                         text:"查询用户",//按钮的文字  
  249.                         handler:function(){  
  250.                             //console.log('查询');   //在浏览器控制台打印日志  
  251.                             $('#lay').layout('expand' , 'north');  
  252.                         }  
  253.                 }  
  254.             ]  
  255.         });  
  256.           
  257.           
  258.           
  259.           
  260.         //-----------提交表单方法-------------------------------------------------------------------------------------------------------------  
  261.         $('#btn1').click(function(){  
  262.                 if($('#myform').form('validate')){  
  263.                     $.ajax({  
  264.                         type: 'post' ,  
  265.                         url: flag=='add'?'user/save':'user/update' ,  
  266.                         //url:'user/save',  
  267.                         cache:false ,  
  268.                         data:$('#myform').serialize() ,  
  269.                         dataType:'json' ,  
  270.                         success:function(result){  
  271.                             //1 关闭窗口  
  272.                             $('#mydialog').dialog('close');  
  273.                             //2刷新datagrid   
  274.                             $('#tt').datagrid('reload');  
  275.                             //3 提示信息  
  276.                             $.messager.show({  
  277.                                 title:result.status ,   
  278.                                 msg:result.message  
  279.                             });  
  280.                         } ,  
  281.                         error:function(result){  
  282.                             $.meesager.show({  
  283.                                 title:result.status ,   
  284.                                 msg:result.message  
  285.                             });  
  286.                         }  
  287.                     });  
  288.                 } else {  
  289.                     $.messager.show({  
  290.                         title:'提示信息!' ,  
  291.                         msg:'数据验证不通过,不能保存!'  
  292.                     });  
  293.                 }  
  294.         });  
  295.           
  296.         /**  
  297.          * 关闭窗口方法  
  298.          */  
  299.         $('#btn2').click(function(){  
  300.             $('#mydialog').dialog('close');  
  301.         });  
  302.           
  303.           
  304.         $('#searchbtn').click(function(){  
  305.             $('#tt').datagrid('load' ,serializeForm($('#mysearch')));  
  306.         });  
  307.           
  308.         //查询时清空按钮  
  309.         $('#clearbtn').click(function(){  
  310.             $('#mysearch').form('clear');  
  311.             $('#tt').datagrid('load' ,{});  //清空数据  
  312.         });  
  313.     });  
  314.       
  315.     //js方法:序列化表单              
  316.     function serializeForm(form){  
  317.         var obj = {};  
  318.         $.each(form.serializeArray(),function(index){  
  319.             if(obj[this['name']]){  
  320.                 obj[this['name']] = obj[this['name']] + ','+this['value'];  
  321.             } else {  
  322.                 obj[this['name']] =this['value'];  
  323.             }  
  324.         });  
  325.         return obj;  
  326.     }  
  327. </script>  
  328. </head>  
  329. <body>  
  330.   
  331.     <div id="lay" class="easyui-layout" fit=true style="width: 100%; height: 1000px">  
  332.         <!-- 用户搜索部分 -->  
  333.         <div region="north" title="用户查询" split="true" collapsed=true  style="height: 100px;">  
  334.             <div style="margin-left: 100px;margin-top: 20px;">  
  335.                 <form id="mysearch" method="post">  
  336.                         用户名:<input name="username" class="easyui-validatebox"  value="" />  
  337.                              
  338.                         开始时间:<input name="starttime"  class="easyui-datetimebox" editable="false" style="width:160px;"  value="" />     
  339.                         结束时间:<input name="endtime"  class="easyui-datetimebox" editable="false" style="width:160px;"  value="" />   
  340.                              
  341.                         <a id="searchbtn" class="easyui-linkbutton">查询</a> <a id="clearbtn" class="easyui-linkbutton">清空</a>  
  342.                 </form>  
  343.             </div>  
  344.         </div>  
  345.         <!-- 用户列表部分 -->  
  346.         <div region="center"  style="padding: 5px; background: #eee;">  
  347.             <table id="tt"></table>  
  348.         </div>  
  349.     </div>  
  350.       
  351.   
  352.       
  353.       
  354.     <!-- modal:模态窗口      draggable:窗口不可拖动    closed:默认关闭-->  
  355.     <div id="mydialog" title="新增用户" modal=true  draggable=false class="easyui-dialog" closed=true style="width:300px;">  
  356.         <form id="myform" action="" method="post">  
  357.                 <input type="hidden" name="id" value="" />  
  358.                 <table>  
  359.                     <tr>  
  360.                         <td>用户名:</td>  
  361.                         <td><input type="text" name="username" class="easyui-validatebox" required=true validType="midLength[2,5]" missingMessage="用户名必填!" invalidMessage="用户名必须在2到5个字符之间!"  value="" /></td>  
  362.                     </tr>  
  363.                     <tr>  
  364.                         <td>密码:</td>  
  365.                         <td><input type="password" name="password" class="easyui-validatebox" required=true validType="equalLength[4]" missingMessage="密码必填!" value="" /></td>  
  366.                     </tr>  
  367.                     <tr>  
  368.                         <td>性别:</td>  
  369.                         <td>  
  370.                             男<input type="radio" checked="checked" name="sex" value="1" />  
  371.                             女<input type="radio" name="sex" value="2" />  
  372.                         </td>  
  373.                     </tr>  
  374.                     <tr>  
  375.                         <td>年龄:</td>  
  376.                         <td><input id="age" type="text"  name="age" value="" /></td>  
  377.                     </tr>  
  378.                     <tr>  
  379.                         <td>出生日期:</td>  
  380.                         <td><input id="birthday" style="width:160px;"  type="text" name="birthday" value="" /></td>  
  381.                     </tr>  
  382.                     <tr>  
  383.                         <td>所属城市:</td>  
  384.                         <td>  
  385.                             <input name="city" class="easyui-combobox" url="user/getCity" valueField="id" textField="name"  value="" />  
  386.                         </td>  
  387.                     </tr>  
  388.                     <tr>  
  389.                         <td>薪水:</td>  
  390.                         <td><input id="salary" type="text" name="salary" value="" /></td>  
  391.                     </tr>  
  392.                     <tr>  
  393.                         <td>开始时间:</td>  
  394.                         <td><input id="startTime" style="width:160px;"  type="text" name="starttime"  value="" /></td>  
  395.                     </tr>  
  396.                     <tr>  
  397.                         <td>结束时间:</td>  
  398.                         <td><input id="endTime" style="width:160px;"   type="text" name="endtime"  value="" /></td>  
  399.                     </tr>     
  400.                     <tr>  
  401.                         <td>个人描述:</td>  
  402.                         <td><input type="text" name="description" class="easyui-validatebox" required=true validType="midLength[5,50]" missingMessage="个人描述必填!" invalidMessage="描述必须在5到50个字符之间!"  value="" /></td>  
  403.                     </tr>   
  404.                     <tr align="center">  
  405.                         <td colspan="2">  
  406.                             <a id="btn1" class="easyui-linkbutton">确定</a>  
  407.                             <a id="btn2" class="easyui-linkbutton">关闭</a>  
  408.                         </td>  
  409.                     </tr>                                                                                                                                                                                                                   
  410.                 </table>  
  411.             </form>             
  412.         </div>  
  413. </body>  
  414. </html>  



5.业务逻辑层代码

IndexController.java
[java]  view plain  copy
  1. package cn.xyc.ssm.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.PathVariable;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6.   
  7.   
  8. @Controller  
  9. public class IndexController {  
  10.   
  11.     /** 
  12.      *  
  13.      * @Title: toIndex    
  14.      * @Description: 通用页面跳转 
  15.      * @param: @param index 
  16.      * @param: @return       
  17.      * @return: String       
  18.      * @throws 
  19.      */  
  20.     @RequestMapping("/{index}")  
  21.     public String toIndex(@PathVariable("index")String index){  
  22.         return index;  
  23.     }  
  24. }  

UserController.java
[java]  view plain  copy
  1. package cn.xyc.ssm.controller;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.stereotype.Controller;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RequestMethod;  
  9. import org.springframework.web.bind.annotation.RequestParam;  
  10. import org.springframework.web.bind.annotation.ResponseBody;  
  11.   
  12. import cn.xyc.ssm.common.EasyUIResult;  
  13. import cn.xyc.ssm.common.ResponseEntity;  
  14. import cn.xyc.ssm.pojo.City;  
  15. import cn.xyc.ssm.pojo.User;  
  16. import cn.xyc.ssm.service.UserService;  
  17.   
  18.   
  19. @Controller  
  20. @RequestMapping("user")  
  21. public class UserController {  
  22.       
  23.     @Autowired  
  24.     private UserService userService;  
  25.       
  26.     @RequestMapping(value="queryUser",method=RequestMethod.POST)  
  27.     @ResponseBody  
  28.     public EasyUIResult queryUser(){  
  29.         EasyUIResult result = this.userService.queryUser();  
  30.         return result;  
  31.     }  
  32.   
  33.     @RequestMapping(value="queryUserByPage",method=RequestMethod.POST)  
  34.     @ResponseBody  
  35.     public EasyUIResult queryUserByPage(@RequestParam(value="page",defaultValue="1")Integer page,  
  36.             @RequestParam(value="rows",defaultValue="5")Integer rows,  
  37.             @RequestParam(value="username",defaultValue="")String username,  
  38.             @RequestParam(value="starttime",defaultValue="")String starttime,  
  39.             @RequestParam(value="endtime",defaultValue="")String endtime){  
  40.           
  41.         EasyUIResult result = this.userService.queryUserByPage(page,rows,username,starttime,endtime);  
  42.         return result;  
  43.     }  
  44.       
  45.     /** 
  46.      *  
  47.      * @Title: getCityName    
  48.      * @Description: 根据id名称获取城市名称 
  49.      * @param: @param id 
  50.      * @param: @return       
  51.      * @return: City       
  52.      * @throws 
  53.      */  
  54.     @RequestMapping(value="getCityName",method=RequestMethod.POST)  
  55.     @ResponseBody  
  56.     public City getCityName(@RequestParam(value="id")Integer id){  
  57.         City city = this.userService.getCityName(id);  
  58.         return city;  
  59.     }  
  60.       
  61.     //produces={"text/html;charset=UTF-8;","application/json;"  可以返回json或text,如果返回text不设置会出现乱码,如果返回json可以不设置.如上方法  
  62.     @RequestMapping(value="getCityName2",method=RequestMethod.POST,produces={"text/html;charset=UTF-8;","application/text;"})  
  63.     @ResponseBody  
  64.     public String getCityName2(@RequestParam(value="id")Integer id){  
  65.         /*City city = this.userService.getCityName(id);*/  
  66.         String cityName2 = this.userService.getCityName2(id);  
  67.         return cityName2;  
  68.     }  
  69.       
  70.     /** 
  71.      *  
  72.      * @Title: getCity    
  73.      * @Description: 获取所有城市  
  74.      * @param: @return       
  75.      * @return: List<City>       
  76.      * @throws 
  77.      */  
  78.     @RequestMapping(value="getCity",method=RequestMethod.POST)  
  79.     @ResponseBody  
  80.     public List<City> getCity(){  
  81.         List<City> clist = this.userService.getCity();  
  82.         return clist;  
  83.     }   
  84.       
  85.     /** 
  86.      *  
  87.      * @Title: save    
  88.      * @Description: 新增用户信息 
  89.      * @param: @param user 
  90.      * @param: @return       
  91.      * @return: ResponseEntity       
  92.      * @throws 
  93.      */  
  94.     @RequestMapping(value="save",method=RequestMethod.POST)  
  95.     @ResponseBody  
  96.     public ResponseEntity save(User user){  
  97.         Integer count = this.userService.saveUser(user);  
  98.         if(count == 1){  
  99.             return new ResponseEntity("ok""新增用户成功!");  
  100.         }  
  101.         return new ResponseEntity("ok""新增用户失败!");  
  102.     }  
  103.       
  104.       
  105.     /** 
  106.      *  
  107.      * @Title: save    
  108.      * @Description: 修改用户信息  
  109.      * @param: @param user 
  110.      * @param: @return       
  111.      * @return: ResponseEntity       
  112.      * @throws 
  113.      */  
  114.     @RequestMapping(value="update",method=RequestMethod.POST)  
  115.     @ResponseBody  
  116.     public ResponseEntity update(User user){  
  117.         Integer count = this.userService.updateUser(user);  
  118.         if(count == 1){  
  119.             return new ResponseEntity("ok""修改用户成功!");  
  120.         }  
  121.         return new ResponseEntity("ok""修改用户失败!");  
  122.     }  
  123.       
  124.       
  125.       
  126.     /** 
  127.      *  
  128.      * @Title: save    
  129.      * @Description: 修改用户信息  
  130.      * @param: @param user 
  131.      * @param: @return       
  132.      * @return: ResponseEntity       
  133.      * @throws 
  134.      */  
  135.     @RequestMapping(value="delete",method=RequestMethod.POST)  
  136.     @ResponseBody  
  137.     public ResponseEntity delete(@RequestParam("ids")List<Integer> ids){  
  138.         Integer count = this.userService.delete(ids);  
  139.         if(count > 0){  
  140.             return new ResponseEntity("ok""删除用户成功!");  
  141.         }  
  142.         return new ResponseEntity("ok""删除用户失败!");  
  143.     }  
  144. }  

EasyUIResult.java
[java]  view plain  copy
  1. package cn.xyc.ssm.common;  
  2.   
  3. import java.util.List;  
  4.   
  5. /** 
  6.  *  
  7.  * @ClassName:  EasyUIResult    
  8.  * @Description: 数据表格返回格式 
  9.  * @author: xyc  
  10.  * @date:   2017年2月15日 下午2:06:30    
  11.  * 
  12.  */  
  13. public class EasyUIResult {  
  14.   
  15.       
  16.     private Long total;  
  17.       
  18.     private List<?> rows;  
  19.       
  20.     public EasyUIResult() {}  
  21.   
  22.     public EasyUIResult(Long total, List<?> rows) {  
  23.         this.total = total;  
  24.         this.rows = rows;  
  25.     }  
  26.   
  27.     public Long getTotal() {  
  28.         return total;  
  29.     }  
  30.   
  31.     public void setTotal(Long total) {  
  32.         this.total = total;  
  33.     }  
  34.   
  35.     public List<?> getRows() {  
  36.         return rows;  
  37.     }  
  38.   
  39.     public void setRows(List<?> rows) {  
  40.         this.rows = rows;  
  41.     }  
  42.       
  43.       
  44. }  

ResponseEntity.java
[java]  view plain  copy
  1. package cn.xyc.ssm.common;  
  2.   
  3. public class ResponseEntity {  
  4.   
  5.       
  6.     private String status ;  
  7.       
  8.     private String message;  
  9.   
  10.     public String getStatus() {  
  11.         return status;  
  12.     }  
  13.   
  14.     public void setStatus(String status) {  
  15.         this.status = status;  
  16.     }  
  17.   
  18.     public String getMessage() {  
  19.         return message;  
  20.     }  
  21.   
  22.     public void setMessage(String message) {  
  23.         this.message = message;  
  24.     }  
  25.   
  26.     public ResponseEntity(String status, String message) {  
  27.         this.status = status;  
  28.         this.message = message;  
  29.     }  
  30.       
  31.       
  32. }  
City.java
[java]  view plain  copy
  1. package cn.xyc.ssm.pojo;  
  2.   
  3. public class City {  
  4.   
  5.       
  6.     private Integer id;  
  7.       
  8.     private String name;  
  9.   
  10.     public Integer getId() {  
  11.         return id;  
  12.     }  
  13.   
  14.     public void setId(Integer id) {  
  15.         this.id = id;  
  16.     }  
  17.   
  18.     public String getName() {  
  19.         return name;  
  20.     }  
  21.   
  22.     public void setName(String name) {  
  23.         this.name = name;  
  24.     }  
  25.   
  26.     public City(Integer id, String name) {  
  27.         super();  
  28.         this.id = id;  
  29.         this.name = name;  
  30.     }  
  31.       
  32.       
  33. }  

UserService.java
[java]  view plain  copy
  1. package cn.xyc.ssm.service;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import org.springframework.beans.factory.annotation.Autowired;  
  9. import org.springframework.stereotype.Service;  
  10.   
  11. import cn.xyc.ssm.common.EasyUIResult;  
  12. import cn.xyc.ssm.mapper.UserMapper;  
  13. import cn.xyc.ssm.pojo.City;  
  14. import cn.xyc.ssm.pojo.User;  
  15.   
  16. import com.github.pagehelper.PageHelper;  
  17. import com.github.pagehelper.PageInfo;  
  18.   
  19. @Service  
  20. public class UserService {  
  21.   
  22.     @Autowired  
  23.     private UserMapper userMapper;  
  24.       
  25.     /** 
  26.      *  
  27.      * @Title: queryUser    
  28.      * @Description: 查询所有用户 
  29.      * @param: @return       
  30.      * @return: List<User>       
  31.      * @throws 
  32.      */  
  33.     public EasyUIResult queryUser() {  
  34.         // TODO Auto-generated method stub  
  35.         //PageHelper.startPage(1, 5);  
  36.         List<User> ulist = this.userMapper.queryAll();  
  37.         PageInfo<User> pageInfo = new PageInfo<User>(ulist);  
  38.         return new EasyUIResult(pageInfo.getTotal(), ulist);  
  39.     }  
  40.       
  41.     /** 
  42.      * @param endtime  
  43.      * @param starttime  
  44.      * @param username  
  45.      * @param rows  
  46.      * @param page  
  47.      *  
  48.      * @Title: queryUser    
  49.      * @Description: 查询所有用户带分页 
  50.      * @param: @return       
  51.      * @return: EasyUIResult       
  52.      * @throws 
  53.      */  
  54.     public EasyUIResult queryUserByPage(Integer page, Integer rows, String username, String starttime, String endtime) {  
  55.         // TODO Auto-generated method stub  
  56.         PageHelper.startPage(page, rows);  
  57.         List<User> ulist = this.userMapper.queryUserByPage(username,starttime,endtime);  
  58.         PageInfo<User> pageInfo = new PageInfo<User>(ulist);  
  59.         return new EasyUIResult(pageInfo.getTotal(), ulist);  
  60.     }  
  61.       
  62.       
  63.     public City getCityName(Integer id){  
  64.         Map<Integer,City> map = new HashMap<Integer, City>();  
  65.         map.put(1new City(1,"北京"));  
  66.         map.put(2new City(2,"上海"));  
  67.         map.put(3new City(3,"天津"));  
  68.         map.put(4new City(4,"重庆"));  
  69.           
  70.         return map.get(id);  
  71.     }  
  72.       
  73.     public String getCityName2(Integer id){  
  74.         Map<Integer,String> map = new HashMap<Integer, String>();  
  75.         map.put(1"北京");  
  76.         map.put(2"上海");  
  77.         map.put(3"天津");  
  78.         map.put(4"重庆");  
  79.           
  80.         return map.get(id);  
  81.     }  
  82.   
  83.       
  84.     public List<City> getCity() {  
  85.         List<City> clist = new ArrayList<City>();  
  86.         clist.add(new City(1,"北京"));  
  87.         clist.add(new City(2,"上海"));  
  88.         clist.add(new City(3,"天津"));  
  89.         clist.add(new City(4,"重庆"));  
  90.         return clist;  
  91.     }  
  92.   
  93.     /** 
  94.      *  
  95.      * @Title: saveUser    
  96.      * @Description: 新增用户  
  97.      * @param: @param user 
  98.      * @param: @return       
  99.      * @return: Integer       
  100.      * @throws 
  101.      */  
  102.     public Integer saveUser(User user) {  
  103.         return this.userMapper.insert(user);  
  104.     }  
  105.   
  106.     /** 
  107.      *  
  108.      * @Title: updateUser    
  109.      * @Description: 修改用户信息 
  110.      * @param: @param user 
  111.      * @param: @return       
  112.      * @return: Integer       
  113.      * @throws 
  114.      */  
  115.     public Integer updateUser(User user) {  
  116.         // TODO Auto-generated method stub  
  117.         return this.userMapper.updateByPrimaryKey(user);  
  118.     }  
  119.   
  120.     /** 
  121.      *  
  122.      * @Title: delete    
  123.      * @Description: 删除用户 
  124.      * @param: @param ids       
  125.      * @return: void       
  126.      * @throws 
  127.      */  
  128.     public Integer delete(List<Integer> ids) {  
  129.         int count = 0;  
  130.         for (Integer id : ids) {  
  131.             count = this.userMapper.deleteByPrimaryKey(id);  
  132.             count += count;  
  133.         }  
  134.         return count;  
  135.     }  
  136.   
  137. }  
UserMapper.java接口中添加方法
[java]  view plain  copy
  1. public List<User> queryAll() ;  
  2.       
  3. List<User> queryUserByPage(@Param("username")String username,@Param("starttime") String starttime, @Param("endtime")String endtime) ;  

UserMapper.xml映射中添加
[html]  view plain  copy
  1. <select id="queryAll" resultType="User">  
  2.     select * from user  
  3.  </select>  
  4.    
  5.  <select id="queryUserByPage" resultType="User">  
  6.     select * from user   
  7.     <where>  
  8.      <if test="username !=null and username != ''">    
  9.         AND username LIKE '%${username}%'    
  10.     </if>   
  11.     <if test="starttime !=null and starttime != ''">    
  12.         AND starttime > #{starttime}   
  13.     </if>   
  14.     <if test="endtime !=null and endtime != ''">    
  15.         AND endtime < #{endtime}    
  16.     </if>   
  17.    </where>  
  18.  </select>  

其它的不变
ok搭建完成。

猜你喜欢

转载自blog.csdn.net/qq_38869854/article/details/79216002