支付轻易Web项目,SSM框架落成轻松的增加和删除改查

Spring介绍:

spring 使用基本的 JavaBean 来形成从前只大概由 EJB 落成的专门的学业。但是, Spring的用途不仅限于服务器端的花费。从简单性、可测试性和松耦合的角度来说,任何Java 应用都能够从 Spring 中收益。 简单的话, Spring 是二个轻量级的调控反转(IoC )和面向切面( AOP )的器皿框架。

SpringMVC+Spring4+Mybatis叁集成,开荒简单Web项目,springmvcspring四

中央盘算干活

1、安装JDK1.陆之上版本,安装与安插

2、下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis/

3、下载mybatis-spring-1.2.1版:https://repo1.maven.org/maven2/org/mybatis/mybatis-spring/

4、Spring-4.0.0的版本

5、tomacat6.x以上版本就能够

自然,那一个jar还不够,还索要MySQL数据库与驱动,log四j的jar等等。上面我们伊始前几天的远足:

 

率先步:成立数量库表

 

在Navicat下试行如下sql命令创立数据库mybatis和表t_user

 

[sql] view plain copy    print?图片 1图片 2

  1. CREATE DATABASE IF NOT EXISTS mybatis;  

[sql] view plain copy    print?图片 3图片 4

  1. USE mybatis;  

[sql] view plain copy    print?图片 5图片 6

  1. create table t_user  
  2. (  
  3.     user_id int(11) NOT NULL AUTO_INCREMENT,  
  4.     user_name varchar(20) not null,  
  5.     user_age varchar(20) not null,  
  6.     PRIMARY KEY (user_id)  
  7. )ENGINE=InnoDB DEFAULT CHARSET=utf8;  

作者们先看一下档期的顺序的总体目录,再持续下边包车型客车内容
图片 7

第二步:添加jar包

 

图片 8

 

     
 对于上边代码的内容,大家就不再壹1贴出来,只是把最注重的剧情贴出来,我们能够下载源码。

 

第三步:创建model

创造贰个model包并在其下创立1个User.Java文件。

 

[java] view plain copy    print?图片 9图片 10

  1. package com.tgb.model;  
  2.   
  3. /** 
  4.  * 用户 
  5.  * @author liang 
  6.  * 
  7.  */  
  8. public class User {  
  9.   
  10.     private int id;  
  11.     private String age;  
  12.     private String userName;  
  13.     public User(){  
  14.         super();  
  15.     }  
  16.     public int getId() {  
  17.         return id;  
  18.     }  
  19.     public void setId(int id) {  
  20.         this.id = id;  
  21.     }  
  22.     public String getAge() {  
  23.         return age;  
  24.     }  
  25.     public void setAge(String age) {  
  26.         this.age = age;  
  27.     }  
  28.     public String getUserName() {  
  29.         return userName;  
  30.     }  
  31.     public void setUserName(String userName) {  
  32.         this.userName = userName;  
  33.     }  
  34.     public User(int id, String age, String userName) {  
  35.         super();  
  36.         this.id = id;  
  37.         this.age = age;  
  38.         this.userName = userName;  
  39.     }  
  40. }  

第四步:创建DAO接口

 

开创八个包mapper,并在其下创建一个UserMapper.java文件作为DAO接口。

 

[java] view plain copy    print?图片 11图片 12

  1. package com.tgb.mapper;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.tgb.model.User;  
  6.   
  7. public interface UserMapper {  
  8.   
  9.     void save(User user);  
  10.     boolean update(User user);  
  11.     boolean delete(int id);  
  12.     User findById(int id);  
  13.     List<User> findAll();  
  14. }  

第五步:实现DAO接口

 

在dao包下创制2个UserMapper.xml文件作为上一步成立的DAO接口的落实。 

 

[html] view plain copy    print?图片 13图片 14

  1. <?xml version=”1.0″ encoding=”UTF-8″?>  
  2. <!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”   
  3. http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;  
  4. <!–   
  5.     namespace:必须与相应的接口全类名同样  
  6.     id:必须与相接待口的某部对应的点子名同样  
  7.       
  8.  –>  
  9. <mapper namespace=”com.tgb.mapper.UserMapper”>  
  10.       
  11.     <insert id=”save” parameterType=”User”>  
  12.         insert into t_user(user_name,user_age) values(#{userName},#{age})  
  13.     </insert>  
  14.       
  15.     <update id=”update” parameterType=”User”>  
  16.         update t_user set user_name=#{userName},user_age=#{age} where user_id=#{id}  
  17.     </update>  
  18.       
  19.     <delete id=”delete” parameterType=”int”>  
  20.         delete from t_user where user_id=#{id}  
  21.     </delete>  
  22.       
  23.      <!– mybsits_config中配置的alias类外号,也可径直配备resultType为类路劲 –>    
  24.     <select id=”findById” parameterType=”int” resultType=”User”>  
  25.         select user_id id,user_name userName,user_age age from t_user where user_id=#{id}  
  26.     </select>  
  27.       
  28.     <select id=”findAll” resultType=”User”>  
  29.         select user_id id,user_name userName,user_age age from t_user  
  30.     </select>  
  31.       
  32. </mapper>  

那里对那个xml文件作几点说明: 
一、namespace必须与相应的接口全类名同样。 
2、id必须与相迎接口的有些对应的秘技名一致即需求求和UserMapper.java接口中的方法同名。 

 

 

第六步:Mybatis和Spring的整合

 

     
对于Mybatis和Spring的结合是那篇博文的要害,要求配备的剧情在下边有详尽的表明。

 

[html] view plain copy    print?图片 15图片 16

  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” xmlns:tx=”http://www.springframework.org/schema/tx”  
  5.     xsi:schemaLocation=”  
  6.         http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  8.         http://www.springframework.org/schema/context  
  9.         http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  10.         http://www.springframework.org/schema/tx  
  11.         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"&gt;  
  12.   
  13.     <!– 1. 数据源 : DriverManagerDataSource –>  
  14.     <bean id=”dataSource”  
  15.         class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>  
  16.         <property name=”driverClassName” value=”com.mysql.jdbc.Driver” />  
  17.         <property name=”url” value=”jdbc:mysql://localhost:3306/mybatis” />  
  18.         <property name=”username” value=”root” />  
  19.         <property name=”password” value=”123456″ />  
  20.     </bean>  
  21.   
  22.     <!–  
  23.         2. mybatis的SqlSession的厂子: SqlSessionFactoryBean dataSource:引用数据源  
  24.   
  25.         MyBatis定义数据源,同意加载配置  
  26.     –>  
  27.     <bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean”>  
  28.         <property name=”dataSource” ref=”dataSource”></property>  
  29.         <property name=”configLocation” value=”classpath:config/mybatis-config.xml” />   
  30.     </bean>  
  31.   
  32.     <!–  
  33.         三. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory  
  34.   
  35.         basePackage:内定sql映射文件/接口所在的包(自动扫描)  
  36.     –>  
  37.     <bean class=”org.mybatis.spring.mapper.MapperScannerConfigurer”>  
  38.         <property name=”basePackage” value=”com.tgb.mapper”></property>  
  39.         <property name=”sqlSessionFactory” ref=”sqlSessionFactory”></property>  
  40.     </bean>  
  41.   
  42.     <!– 
  43.         4. 作业管理 : DataSourceTransactionManager dataSource:引用上面定义的多寡源 
  44.     –>  
  45.     <bean id=”txManager”  
  46.         class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>  
  47.         <property name=”dataSource” ref=”dataSource”></property>  
  48.     </bean>  
  49.   
  50.     <!– 5. 应用注明式事务  
  51.          transaction-manager:引用上边定义的事务管理器  
  52.      –>  
  53.     <tx:annotation-driven transaction-manager=”txManager” />  
  54.   
  55. </beans>  

第9步:mybatis的配置文件

 

 

[html] view plain copy    print?图片 17图片 18

  1. <?xml version=”1.0″ encoding=”UTF-8″?>  
  2. <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN”   
  3. http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;  
  4. <configuration>  
  5.   
  6.     <!– 实体类,简称 -设置别名 –>  
  7.     <typeAliases>  
  8.         <typeAlias alias=”User” type=”com.tgb.model.User” />  
  9.     </typeAliases>  
  10.     <!– 实体接口映射财富 –>  
  11.     <!– 
  12.         表明:假若xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也得以省略,因为org.mybatis.spring.mapper.MapperFactoryBean暗中认可会去寻找与xxMapper.java同样目录和称号的xxMapper.xml 
  13.     –>  
  14.     <mappers>  
  15.         <mapper resource=”com/tgb/mapper/userMapper.xml” />  
  16.     </mappers>  
  17.   
  18. </configuration>    

 

 

 

 

 

源码来源:http://minglisoft.cn/technology

情侣须求请加QQ:204284玖二37

http://www.bkjia.com/Javabc/1208611.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1208611.htmlTechArticleSpringMVC+Spring4+Mybatis3集成,开发简单Web项目,springmvcspring4
基本准备专门的工作 壹、安装JDK1.⑥之上版本,安装与安顿2、下载mybatis-3.2.0版:https://r…

SpringMVC介绍

Spring MVC 属于 SpringFrameWork 的延续产品,已经融入在Spring Web Flow 里面。 Spring MVC  分离了 控制器 、模型 对象 、分派器以及管理程序对象的角色,那种分离让它们更便于开始展览定制。

MyBatis介绍

  MyBatis  本是 apache 的二个开源项目 iBatis , 2010 年那一个体系由apache software foundation  迁移到了 google code ,并且改名称为 MyBatis  。MyBatis 是3个基于 Java 的 持久层 框架。 iBATIS 提供的 持久层 框架包括SQL Maps 和 Data Access Objects ( DAO ) MyBatis  化解了差不离全数的 JDBC 代码和参数的手工业安全装以及结果集的搜索。 MyBatis  使用简便的  XML 或申明用于配置和原始映射,将接口和  Java  的 POJOs ( Plain Old Java Objects ,普通的  Java 对象)映射成数据库中的记录。

第一不是maven架构重组的  SSM 框架

 

创建数据库、表db_zsl   t_user  
user_t【最上面有sql语句】

壹.品类全部布局

图片 19

二.增添相关jar 包

图片 20

三.品种全体结构出来了

4.创建model【User】

 

[java] view
plain
 copy

 图片 21图片 22

  1. package com.lyt.model;  
  2.   
  3. /**  
  4.  * 用户  
  5.  * @author 
  6.  *  
  7.  */    
  8. public class User {    
  9.     
  10.     private int id;    
  11.     private String userName;   
  12.     private String age;    
  13.       
  14.     @Override  
  15.     public String toString() {  
  16.         return “User [id=” + id + “, age=” + age + “, userName=” + userName  
  17.                 + “]”;  
  18.     }  
  19.     public User(){    
  20.         super();    
  21.     }    
  22.     public int getId() {    
  23.         return id;    
  24.     }    
  25.     public void setId(int id) {    
  26.         this.id = id;    
  27.     }    
  28.     public String getAge() {    
  29.         return age;    
  30.     }    
  31.     public void setAge(String age) {    
  32.         this.age = age;    
  33.     }    
  34.     public String getUserName() {    
  35.         return userName;    
  36.     }    
  37.     public void setUserName(String userName) {    
  38.         this.userName = userName;    
  39.     }    
  40.     public User(int id, String age, String userName) {    
  41.         super();    
  42.         this.id = id;    
  43.         this.age = age;    
  44.         this.userName = userName;    
  45.     }    
  46. }    

五.开立DAO接口【在mybatis中 mapper就一定于dao】

 

 

[java] view
plain
 copy

 图片 23图片 24

  1. package com.lyt.mapper;  
  2. import java.util.List;  
  3. import com.lyt.model.User;  
  4. /** 
  5.  * 做为 DAO的接口 
  6.  * @author 
  7.  */  
  8. public interface UserMapper {    
  9. void save(User user);    
  10. boolean update(User user);    
  11. boolean delete(int id);    
  12.     User findById(int id);    
  13.     List<User> findAll();    
  14. }    

5.创办DAO接口【在mybatis中 mapper就约等于dao】

 

[java] view
plain
 copy

 图片 25图片 26

  1. package com.lyt.mapper;  
  2. import java.util.List;  
  3. import com.lyt.model.User;  
  4. /** 
  5.  * 做为 DAO的接口 
  6.  * @author */  
  7. public interface UserMapper {    
  8. void save(User user);    
  9. boolean update(User user);    
  10. boolean delete(int id);    
  11.     User findById(int id);    
  12.     List<User> findAll();    
  13. }    

6.实现dao接口【mybatis中就是UserMapper.xml文件】

[python] view
plain
 copy

 图片 27图片 28

  1. <?xml version=”1.0″ encoding=”UTF-8″?>  
  2. <!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”     
  3. http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;    
  4. <!–     
  5. namespace:必须与相应的接口全类名同样  UserMapper.java  
  6.     id :必须与相应接口的某部对应的点子名1致即必要求和UserMapper.java接口中的方法同名。  
  7.  –>    
  8.  <mapper namespace=”com.lyt.mapper.UserMapper”>  
  9.     <insert id=”save” parameterType=”User”>  
  10.         insert into t_user(user_name,user_age) values(#{userName},#{age})  
  11.     </insert>  
  12.     <update id=”update” parameterType=”User”>    
  13.         update t_user set user_name=#{userName},user_age=#{age} where user_id=#{id}    
  14.     </update>   
  15.     <delete id=”delete” parameterType=”int”>    
  16.         delete from t_user where user_id=#{id}    
  17.     </delete>    
  18.      <!– mybsits_config中配备的alias类外号,也可直接配备resultType为类路线 –>      
  19.     <select id=”findById” parameterType=”int” resultType=”User”>    
  20.         select user_id id,user_name userName,user_age age from t_user where user_id=#{id}    
  21.     </select>    
  22.     <select id=”findAll” resultType=”User”>    
  23.         select user_id id,user_name userName,user_age age from t_user    
  24.     </select>   
  25.  </mapper>  

那边对这么些xml文件作几点表达: 
1、namespace必须与相应的接口全类名同样。 

二、id必须与相招待口的某部对应的章程名1致即必须要和UserMapper.java接口中的方法同名。 

柒.mybatis与Spring整合【spring-common.xml】放在src的根目录下

 对于Mybatis和Spring的咬合是那篇博文的要紧,需求配置的内容在底下有详尽的分解。

[python] view
plain
 copy

 图片 29图片 30

  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” xmlns:tx=”http://www.springframework.org/schema/tx”  
  5.     xsi:schemaLocation=”  
  6.         http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  8.         http://www.springframework.org/schema/context  
  9.         http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  10.         http://www.springframework.org/schema/tx  
  11.         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"&gt;  
  12. <!– Mybatis和Spring的整合 –>  
  13.     <!– 1. 数据源 : DriverManagerDataSource –>  
  14.     <bean id=”dataSource”  
  15. class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>  
  16.         <property name=”driverClassName” value=”com.mysql.jdbc.Driver” />  
  17.         <property name=”url” value=”jdbc:mysql://localhost:3306/db_zsl” />  
  18.         <property name=”username” value=”root” />  
  19.         <property name=”password” value=”root” />  
  20.     </bean>  
  21.     <!–  
  22. 二. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源  
  23.         MyBatis定义数据源,同意加载配置  
  24.     –>  
  25.     <bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean”>  
  26.         <property name=”dataSource” ref=”dataSource”></property>  
  27.         <property name=”configLocation” value=”classpath:mybatis-config.xml” />   
  28.     </bean>  
  29.     <!–  
  30. 3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory  
  31.         basePackage:钦命sql映射文件/接口所在的包(自动扫描)  
  32.     –>  
  33.     <bean class=”org.mybatis.spring.mapper.MapperScannerConfigurer”>  
  34.         <property name=”basePackage” value=”com.lyt.mapper”></property>  
  35.         <property name=”sqlSessionFactory” ref=”sqlSessionFactory”></property>  
  36.     </bean>  
  37.     <!–  
  38. 肆. 专门的职业处理 : DataSourceTransactionManager dataSource:引用上面定义的数据源  
  39.     –>  
  40.     <bean id=”txManager”  
  41. class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>  
  42.         <property name=”dataSource” ref=”dataSource”></property>  
  43.     </bean>  
  44.     <!– 5. 行使申明式事务  
  45.          transaction-manager:引用上边定义的事务管理器  
  46.      –>  
  47.     <tx:annotation-driven transaction-manager=”txManager” />  
  48. </beans>  

八.mybatis安顿文件【mybatis-config.xml】放在src目录下

[python] view
plain
 copy

 图片 31图片 32

<?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"&gt;
 

<configuration>  

<!– 实体类,简称 -设置小名 –>  

<typeAliases>  

<typeAlias alias=”User” type=”com.lyt.model.User” />  

 </typeAliases>  

<!– 实体接口映射财富 –>  

  <!–  

 表明:如若xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也足以差不多,因为org.mybatis.spring.mapper.MapperFactoryBean暗中认可会去寻觅与xxMapper.java一样目录和称号的xxMapper.xml  

 –>  

<mappers>  

 <mapper resource=”com/lyt/mapper/userMapper.xml” />  

</mappers>  

</configuration>   

1、配置log4j.properties

[python] view
plain
 copy

 图片 33图片 34

  1. ### set log levels ###   
  2. log4j.rootLogger = info , Console , D  
  3. #Console  
  4. log4j.appender.Console=org.apache.log4j.ConsoleAppender  
  5. log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
  6. log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] – %m%n  
  7. log4j.logger.java.sql.ResultSet=INFO  
  8. log4j.logger.org.apache=INFO  
  9. log4j.logger.java.sql.Connection=INFO  
  10. log4j.logger.java.sql.Statement=INFO  
  11. log4j.logger.java.sql.PreparedStatement=INFO  
  12. #output2file  
  13. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender   
  14. log4j.appender.D.File = D\:/logs/log.log   
  15. log4j.appender.D.Append = true   
  16. log4j.appender.D.Threshold = INFO \#\# \u00E8\u00BE\u0093\u00E5\u0087\u00BAinfo\u00E7\u00BA\u00A7\u00E5\u0088\u00AB\u00E4\u00BB\u00A5\u00E4\u00B8\u008A\u00E7\u009A\u0084\u00E6\u0097\u00A5\u00E5\u00BF\u0097   
  17. log4j.appender.D.layout = org.apache.log4j.PatternLayout   
  18. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] – [ %p ] %m%n   

10.整合Springmvc

配备【spring-mvc.xml】放在src根目录下

[python] view
plain
 copy

 图片 35图片 36

  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:context=”http://www.springframework.org/schema/context”  
  4.     xmlns:mvc=”http://www.springframework.org/schema/mvc”  
  5.     xsi:schemaLocation=”http://www.springframework.org/schema/beans   
  6.     http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.     http://www.springframework.org/schema/context  
  8.     http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  9.     http://www.springframework.org/schema/mvc  
  10.     http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"&gt;  
  11.     <!– 申明扫描包 –>  
  12.     <context:component-scan base-package=”com.lyt.controller” />  
  13.     <context:component-scan base-package=”com.lyt.service” />  
  14.     <!– 开启注解 –>  
  15.     <mvc:annotation-driven />  
  16.     <!–  
  17.         配置静态能源,直接照射到相应的文本夹,不被DispatcherServlet管理,三.0四新扩展效益,须求重新初始化spring-mvc-三.0.xsd  
  18.     –>  
  19.     <mvc:resources mapping=”/img/**” location=”/img/” />  
  20.     <mvc:resources mapping=”/js/**” location=”/js/” />  
  21.     <mvc:resources mapping=”/css/**” location=”/css/” />  
  22.     <mvc:resources mapping=”/html/**” location=”/html/” />  
  23.     <!– 定义跳转的文本的上下缀 ,视图情势配置–>  
  24.     <bean id=”viewResolver”  
  25. class=”org.springframework.web.servlet.view.InternalResourceViewResolver”>  
  26.         <!– 那里的安顿小编的知道是全自动给末端action的点子return的字符串加上前缀和后缀,产生2个 可用的url地址 –>  
  27.         <property name=”prefix” value=”/WEB-INF/jsp/” />  
  28.         <property name=”suffix” value=”.jsp” />  
  29.     </bean>  
  30. </beans>  

11.配置web.xml

[python] view
plain
 copy

 图片 37图片 38

  1. <?xml version=”1.0″ encoding=”UTF-8″?>  
  2. <web-app version=”2.5″ xmlns=”http://java.sun.com/xml/ns/javaee”  
  3.     xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”  
  4.     xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app\_2\_5.xsd"&gt;  
  6.     <!– 加载Spring容器配置 –>  
  7.     <listener>  
  8.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  9.     </listener>  
  10.     <!– 设置Spring容器加载全体的配备文件的路子 –>  
  11.     <context-param>  
  12.         <param-name>contextConfigLocation</param-name>  
  13.         <!– <param-value>classpath:config/spring-*.xml</param-value> –>  
  14.         <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>  
  15.     </context-param>  
  16.     <!– 配置SpringMVC核心调控器 –>  
  17.     <servlet>  
  18.         <servlet-name>springMVC</servlet-name>  
  19.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  20.         <!– 配置初阶配置化文件,前边contextConfigLocation看意况二选1 –>    
  21.         <init-param>  
  22.             <param-name>contextConfigLocation</param-name>  
  23.             <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>  
  24.         </init-param>  
  25.         <!– 运转加载一遍 –>    
  26.         <load-on-startup>1</load-on-startup>  
  27.     </servlet>  
  28.     <!–为DispatcherServlet建立映射 –>  
  29.     <servlet-mapping>  
  30.         <servlet-name>springMVC</servlet-name>  
  31.         <!– 此处能够能够安顿成*.do,对应struts的后缀习于旧贯 –>  
  32.         <url-pattern>/</url-pattern>  
  33.     </servlet-mapping>  
  34.     <!– 幸免Spring内部存款和储蓄器溢出监听器 –>  
  35.     <listener>  
  36.         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  37.     </listener>  
  38.     <!– 解决工程编码过滤器 –>  
  39.     <filter>  
  40.         <filter-name>encodingFilter</filter-name>  
  41.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  42.         <init-param>  
  43.             <param-name>encoding</param-name>  
  44.             <param-value>UTF-8</param-value>  
  45.         </init-param>  
  46.         <init-param>  
  47.             <param-name>forceEncoding</param-name>  
  48.             <param-value>true</param-value>  
  49.         </init-param>  
  50.     </filter>  
  51.     <filter-mapping>  
  52.         <filter-name>encodingFilter</filter-name>  
  53.         <url-pattern>/*</url-pattern>  
  54.     </filter-mapping>  
  55.     <welcome-file-list>  
  56.         <welcome-file>index.jsp</welcome-file>  
  57.     </welcome-file-list>  
  58. </web-app>  
  59. 12.建立service以及service实现【UserService.java】

    [python] view
    plain
     copy

     图片 39图片 40

    1. package com.lyt.service;  
    2. import java.util.List;  
    3. import com.lyt.model.User;  
    4. public interface UserService {  
    5.     void save(User user);  
    6.     boolean update(User user);  
    7.     boolean delete(int id);  
    8.     User findById(int id);  
    9.     List<User> findAll();  
    10. }  
【UserServiceImpl.java】

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  package com.lyt.service.impl;  
2.  import java.util.List;  
3.  import javax.annotation.Resource;  
4.  import org.springframework.stereotype.Service;  
5.  import org.springframework.transaction.annotation.Transactional;  
6.  import com.lyt.mapper.UserMapper;  
7.  import com.lyt.model.User;  
8.  import com.lyt.service.UserService;  
9.   
10. @Service  
11. @Transactional  
12. // 此处不再进行创建SqlSession和提交事务,都已交由spring去管理了。  
13. public class UserServiceImpl implements UserService {  
14.  
15.     @Resource  
16.     private UserMapper mapper;  
17.     /\*\*  
18.      \* 根据  id  删除 数据  
19.      \*/  
20.     public boolean delete(int id) {  
21. return mapper.delete(id);  
22.     }  
23.     /\*\*  
24.      \* 查询User的全部数据  
25.      \*/  
26.     public List&lt;User&gt; findAll() {  
27.         List&lt;User&gt; findAllList = mapper.findAll();  
28. return findAllList;  
29.     }  
30.     /\*\*  
31.      \* 根据 id 查询 对应数据  
32.      \*/  
33.     public User findById(int id) {  
34.         User user = mapper.findById(id);  
35. return user;  
36.     }  
37.     /\*\*  
38.      \* 新增数据  
39.      \*/  
40.     public void save(User user) {  
41.         mapper.save(user);  
42.     }  
43.     /\*\*  
44.      \* 根据 id 修改对应数据  
45.      \*/  
46.     public boolean update(User user) {  
47. return mapper.update(user);  
48.     }  
49. }  

13.建立Controller【UserController.java】

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  &lt;span style="font-size:14px;"&gt;package com.lyt.controller;  
2.  import java.io.IOException;  
3.  import java.io.PrintWriter;  
4.  import java.util.List;  
5.  import javax.servlet.http.HttpServletRequest;  
6.  import javax.servlet.http.HttpServletResponse;  
7.  import org.springframework.beans.factory.annotation.Autowired;  
8.  import org.springframework.stereotype.Controller;  
9.  import org.springframework.ui.Model;  
10. import org.springframework.web.bind.annotation.RequestMapping;  
11. import com.lyt.model.User;  
12. import com.lyt.service.UserService;  
13.  
14. @Controller  
15. @RequestMapping("/user")  
16. public class UserController {  
17.     @Autowired  
18.     private UserService userService;  
19.     /\*\*  
20.      \* 获取所有用户列表  
21.      \* @param request  
22.      \* @return  
23.      \*/  
24.     @RequestMapping("/getAllUser")  
25.     public String getAllUser(HttpServletRequest request,Model model){  
26.         List&lt;User&gt; user = userService.findAll();  
27.         model.addAttribute("userList", user);  
28.         request.setAttribute("userList", user);  
29. return "/allUser";  
30.     }  
31.     /\*\*  
32.      \* 跳转到添加用户界面  
33.      \* @param request  
34.      \* @return  
35.      \*/  
36.     @RequestMapping("/toAddUser")  
37.     public String toAddUser(){  
38. return "/addUser";  
39.     }  
40.     /\*\*  
41.      \* 添加用户并重定向  
42.      \* @param user  
43.      \* @param request  
44.      \* @return  
45.      \*/  
46.     @RequestMapping("/addUser")  
47.     public String addUser(User user,Model model){  
48.         userService.save(user);  
49. return "redirect:/user/getAllUser";  
50.     }  
51.     /\*\*  
52.      \*编辑用户  
53.      \* @param user  
54.      \* @param request  
55.      \* @return  
56.      \*/  
57.     @RequestMapping("/updateUser")  
58.     public String updateUser(User user,HttpServletRequest request,Model model){  
59. if(userService.update(user)){  
60.             user = userService.findById(user.getId());  
61.             request.setAttribute("user", user);  
62.             model.addAttribute("user", user);  
63. return "redirect:/user/getAllUser";  
64.         }else{  
65. return "/error";  
66.         }  
67.     }  
68.     /\*\*  
69.      \* 根据id查询单个用户  
70.      \* @param id  
71.      \* @param request  
72.      \* @return  
73.      \*/  
74.     @RequestMapping("/getUser")  
75.     public String getUser(int id,HttpServletRequest request,Model model){  
76.         request.setAttribute("user", userService.findById(id));  
77.         model.addAttribute("user", userService.findById(id));  
78. return "/editUser";  
79.     }  
80.     /\*\*  
81.      \* 删除用户  
82.      \* @param id  
83.      \* @param request  
84.      \* @param response  
85.      \*/  
86.     @RequestMapping("/delUser")  
87.     public void delUser(int id,HttpServletRequest request,HttpServletResponse response){  
88.         String result = "{\\"result\\":\\"error\\"}";  
89. if(userService.delete(id)){  
90.             result = "{\\"result\\":\\"success\\"}";  
91.         }  
92.         response.setContentType("application/json");  
93. try {  
94.             PrintWriter out = response.getWriter();  
95.             out.write(result);  
96.         } catch (IOException e) {  
97.             e.printStackTrace();  
98.         }  
99.     }  
100. }  
101. &lt;/span&gt;  




至此
大部分[架构](http://lib.csdn.net/base/architecture)以及代码已经搭建完成

我们来做前台页面--修改index.jsp

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  &lt;%@ page language="java" import="java.util.\*" pageEncoding="utf-8"%&gt;  
2.  &lt;%  
3.      String path = request.getContextPath();  
4.      String basePath = request.getScheme() + "://"  
5.              + request.getServerName() + ":" + request.getServerPort()  
6.              + path + "/";  
7.  %&gt;  
8.  &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;  
9.  &lt;html&gt;  
10. &lt;head&gt;  
11. &lt;base href="&lt;%=basePath%&gt;"&gt;  
12. &lt;title&gt;首页&lt;/title&gt;  
13. &lt;/head&gt;  
14. &lt;body&gt;  
15.     &lt;h5&gt;  
16.         &lt;a href="&lt;%=basePath%&gt;user/getAllUser"&gt;进入用户管理页&lt;/a&gt;  
17.     &lt;/h5&gt;  
18. &lt;/body&gt;  
19. &lt;/html&gt;  


在 WEB-INF
下新建jsp文件夹【里面新建以下文件】【addUser.jsp】【allUser.jsp】【editUser.jsp】

addUser.jsp内容

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  &lt;%@ page language="java" import="java.util.\*" pageEncoding="UTF-8"%&gt;  
2.  &lt;%  
3.  String path = request.getContextPath();  
4.  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
5.  %&gt;  
6.  &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;    
7.  &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;  
8.  &lt;html&gt;  
9.    &lt;head&gt;  
10.     &lt;base href="&lt;%=basePath%&gt;"&gt;  
11.     &lt;title&gt;添加用户&lt;/title&gt;  
12.     &lt;script type="text/javascript"&gt;  
13.     function addUser(){  
14.         var form = document.forms\[0\];  
15.         form.action = "&lt;%=basePath%&gt;user/addUser";  
16.         form.method="post";  
17.         form.submit();  
18.     }  
19. &lt;/script&gt;  
20.   &lt;/head&gt;  
21.   &lt;body&gt;  
22.     &lt;h1&gt;&lt;%=path%&gt;添加用户&lt;%=basePath%&gt;&lt;/h1&gt;  
23.     &lt;form action="" name="userForm"&gt;  
24.         姓名:&lt;input type="text" name="userName"&gt;  
25.         年龄:&lt;input type="text" name="age"&gt;  
26.         &lt;input type="button" value="添加" onclick="addUser()"&gt;  
27.     &lt;/form&gt;  
28.   &lt;/body&gt;  
29. &lt;/html&gt;  


allUser.jsp

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  &lt;%@ page language="java" import="java.util.\*" pageEncoding="UTF-8"%&gt;  
2.  &lt;%  
3.  String path = request.getContextPath();  
4.  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
5.  %&gt;  
6.  &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;    
7.  &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;  
8.  &lt;html&gt;  
9.    &lt;head&gt;  
10.     &lt;base href="&lt;%=basePath%&gt;"&gt;  
11.     &lt;script type="text/javascript" src="js/jquery-1.7.1.js"&gt;&lt;/script&gt;  
12.     &lt;title&gt;用户列表&lt;/title&gt;  
13.     &lt;script type="text/javascript"&gt;  
14.     function del(id){  
15.         $.get("&lt;%=basePath%&gt;user/delUser?id=" + id,function(data){  
16. if("success" == data.result){  
17.                 alert("删除成功");  
18.                 window.location.reload();  
19.             }else{  
20.                 alert("删除失败");  
21.             }  
22.         });  
23.     }  
24. &lt;/script&gt;  
25.   &lt;/head&gt;  
26.   &lt;body&gt;  
27.     &lt;h6&gt;&lt;a href="&lt;%=basePath%&gt;user/toAddUser"&gt;添加用户&lt;/a&gt;&lt;/h6&gt;  
28.     &lt;table border="1"&gt;  
29.         &lt;tbody&gt;  
30.             &lt;tr&gt;  
31.                 &lt;th&gt;姓名&lt;/th&gt;  
32.                 &lt;th&gt;年龄&lt;/th&gt;  
33.                 &lt;th&gt;操作&lt;/th&gt;  
34.             &lt;/tr&gt;  
35.             &lt;c:if test="${!empty userList }"&gt;  
36.                 &lt;c:forEach items="${userList}" var="user"&gt;  
37.                     &lt;tr&gt;  
38.                         &lt;td&gt;${user.userName }&lt;/td&gt;  
39.                         &lt;td&gt;${user.age }&lt;/td&gt;  
40.                         &lt;td&gt;  
41.                             &lt;a href="&lt;%=basePath%&gt;user/getUser?id=${user.id}"&gt;编辑&lt;/a&gt;  
42.                             &lt;a href="javascript:del('${user.id }')"&gt;删除&lt;/a&gt;  
43.                         &lt;/td&gt;  
44.                     &lt;/tr&gt;               
45.                 &lt;/c:forEach&gt;  
46.             &lt;/c:if&gt;  
47.         &lt;/tbody&gt;  
48.     &lt;/table&gt;  
49.   &lt;/body&gt;  
50. &lt;/html&gt;  


editUser.jsp

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  &lt;%@ page language="java" import="java.util.\*" pageEncoding="UTF-8"%&gt;  
2.  &lt;%  
3.  String path = request.getContextPath();  
4.  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
5.  %&gt;  
6.  &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;    
7.  &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;  
8.  &lt;html&gt;  
9.    &lt;head&gt;  
10.     &lt;base href="&lt;%=basePath%&gt;"&gt;  
11.     &lt;title&gt;编辑用户&lt;/title&gt;  
12.     &lt;script type="text/javascript"&gt;  
13.     function updateUser(){  
14.         var form = document.forms\[0\];  
15.         form.action = "&lt;%=basePath%&gt;user/updateUser";  
16.         form.method="post";  
17.         form.submit();  
18.     }  
19. &lt;/script&gt;  
20.   &lt;/head&gt;  
21.   &lt;body&gt;  
22.     &lt;h1&gt;添加用户&lt;/h1&gt;  
23.     &lt;form action="" name="userForm"&gt;  
24.         &lt;input type="hidden" name="id" value="${user.id }"/&gt;  
25.         姓名:&lt;input type="text" name="userName" value="${user.userName }"/&gt;  
26.         年龄:&lt;input type="text" name="age" value="${user.age }"/&gt;  
27.         &lt;input type="button" value="编辑" onclick="updateUser()"/&gt;  
28.     &lt;/form&gt;  
29.   &lt;/body&gt;  
30. &lt;/html&gt;  


到此 简单的整合SSM 【基本的操作内容已经完成】

让你们看下界面运行,地址:http://localhost:8088/SpringMVC\_Spring\_mybatis/

首页:

![](http://img.blog.csdn.net/20160518230222730?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)

点击编辑进去:

![](http://img.blog.csdn.net/20160518230242574?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)

点击添加进去:

![](http://img.blog.csdn.net/20160518230302290?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)

由于我在网络问题
 图片暂时没有上传上去。【现在我吧图片都正上去了,希望多多支持】

对应的数据库 表

**\[python\]** [view
plain](http://blog.csdn.net/liyintaoliuyun/article/details/51426479) [copy](http://blog.csdn.net/liyintaoliuyun/article/details/51426479)

 [![](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/1685450)[![](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/1685450/fork)

1.  /\*  
2.  Navicat MySQL Data Transfer  
3.  Source Server         : localhost  
4.  Source Server Version : 50515  
5.  Source Host           : localhost:3306  
6.  Source Database       : db\_zsl  
7.  Target Server Type    : MYSQL  
8.  Target Server Version : 50515  
9.  File Encoding         : 65001  
10. Date: 2016-05-16 16:10:51  
11. \*/  
12. SET FOREIGN\_KEY\_CHECKS=0;  
13. -- ----------------------------  
14. -- Table structure for \`t\_user\`  
15. -- ----------------------------  
16. DROP TABLE IF EXISTS \`t\_user\`;  
17. CREATE TABLE \`t\_user\` (  
18.   \`user\_id\` int(11) NOT NULL AUTO\_INCREMENT,  
19.   \`user\_name\` varchar(20) NOT NULL,  
20.   \`user\_age\` varchar(20) NOT NULL,  
21.   PRIMARY KEY (\`user\_id\`)  
22. ) ENGINE=InnoDB AUTO\_INCREMENT=10 DEFAULT CHARSET=utf8;  
23. -- ----------------------------  
24. -- Records of t\_user  
25. -- ----------------------------  
26. INSERT INTO \`t\_user\` VALUES ('2', '朱佳鹏', '25');  
27. INSERT INTO \`t\_user\` VALUES ('3', '傻狍子', '150');  
28. INSERT INTO \`t\_user\` VALUES ('4', 'jiuqiyuliang', '23');  
29. INSERT INTO \`t\_user\` VALUES ('5', 'jiuqiyuliang', '23');  
30. INSERT INTO \`t\_user\` VALUES ('6', 'jiuqiyuliang', '23');  
31. INSERT INTO \`t\_user\` VALUES ('7', 'jiuqiyuliang', '23');  
32. INSERT INTO \`t\_user\` VALUES ('9', 'liyintao123', '23123');  
33. -- ----------------------------  
34. -- Table structure for \`user\_t\`  
35. -- ----------------------------  
36. DROP TABLE IF EXISTS \`user\_t\`;  
37. CREATE TABLE \`user\_t\` (  
38.   \`id\` int(11) NOT NULL AUTO\_INCREMENT,  
39.   \`user\_name\` varchar(40) NOT NULL,  
40.   \`password\` varchar(255) NOT NULL,  
41.   \`age\` int(4) NOT NULL,  
42.   PRIMARY KEY (\`id\`)  
43. ) ENGINE=InnoDB AUTO\_INCREMENT=2 DEFAULT CHARSET=utf8;  
44. -- ----------------------------  
45. -- Records of user\_t  
46. -- ----------------------------  
47. INSERT INTO \`user\_t\` VALUES ('1', '测试', 'sfasgfaf', '24');