Spring介绍:

spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而, Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从 Spring 中受益。 简单来说, Spring 是一个轻量级的控制反转(IoC )和面向切面( AOP )的容器框架。

SpringMVC介绍

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

MyBatis介绍

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

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

1.项目整体结构

2.添加相关jar 包

3.项目整体结构出来了

4.创建model【User】

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

5.创建DAO接口【在mybatis中 mapper就相当于dao】

  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】

  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文件】

  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">
  4. <!--
  5. namespace:必须与对应的接口全类名一致  UserMapper.java
  6. id :必须与对应接口的某个对应的方法名一致即必须要和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必须与对应的接口全类名一致。 
2、id必须与对应接口的某个对应的方法名一致即必须要和UserMapper.java接口中的方法同名。 

---------------------------------------------------

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

对于Mybatis和Spring的整合是这篇博文的重点,需要配置的内容在下面有详细的解释。

  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">
  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. 2. 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. 4. 事务管理 : 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>

8.mybatis配置文件【mybatis-config.xml】放在src目录下

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<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

  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根目录下

  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">
  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处理,3.04新增功能,需要重新设置spring-mvc-3.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的字符串加上前缀和后缀,变成一个 可用的url地址 -->
  27. <property name="prefix" value="/WEB-INF/jsp/" />
  28. <property name="suffix" value=".jsp" />
  29. </bean>
  30. </beans>

11.配置web.xml

  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">
  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看情况二选一 -->
  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】
    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】

    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. @Service
    10. @Transactional
    11. // 此处不再进行创建SqlSession和提交事务,都已交由spring去管理了。
    12. public class UserServiceImpl implements UserService {
    13. @Resource
    14. private UserMapper mapper;
    15. /**
    16. * 根据  id  删除 数据
    17. */
    18. public boolean delete(int id) {
    19. return mapper.delete(id);
    20. }
    21. /**
    22. * 查询User的全部数据
    23. */
    24. public List<User> findAll() {
    25. List<User> findAllList = mapper.findAll();
    26. return findAllList;
    27. }
    28. /**
    29. * 根据 id 查询 对应数据
    30. */
    31. public User findById(int id) {
    32. User user = mapper.findById(id);
    33. return user;
    34. }
    35. /**
    36. * 新增数据
    37. */
    38. public void save(User user) {
    39. mapper.save(user);
    40. }
    41. /**
    42. * 根据 id 修改对应数据
    43. */
    44. public boolean update(User user) {
    45. return mapper.update(user);
    46. }
    47. }

    13.建立Controller【UserController.java】

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

    至此 大部分架构以及代码已经搭建完成

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

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

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

    addUser.jsp内容

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

    allUser.jsp

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

    editUser.jsp

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

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

    让你们看下界面运行,地址:http://localhost:8088/SpringMVC_Spring_mybatis/

    首页:

    点击编辑进去:

    点击添加进去:

    由于我在网络问题  图片暂时没有上传上去。【现在我吧图片都正上去了,希望多多支持】
    对应的数据库 表
    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');

Maven+SSM框架实现简单的增删改查的更多相关文章

  1. IDEA+Maven 整合SSM框架实现简单的增删改查(新手入门,傻瓜操作)

    原博客地址:https://blog.csdn.net/khxu666/article/details/79851070 选用SSM框架的原因在目前的企业级Java应用中,Spring框架是必须的.S ...

  2. maven+ssm+oracle实现简单的增删改查

    首先看一下项目结构 第一步先导入jar包 pom.xml <properties> <spring.version>4.3.18.RELEASE</spring.vers ...

  3. SSM框架之MyBatis框架实现简单的增删改查

    MyBatis框架介绍 MyBatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系是一种半自动化的ORM实现,其封装性要低于Hibernate,性能优越,并且小巧,简单易学,应用也 ...

  4. idea使用maven搭建ssm框架实现登陆商品增删改查

    创建项目->maven->webapp->输入坐标->完成. pom.xml <project xmlns="http://maven.apache.org/P ...

  5. ABP实践(4)-abp前端vue框架之简单商品增删改查(帮助刚入门的新手快速了解怎么才能加入自己的功能并运行起来)

    提示:如有不明白的地方请先查看前3篇ABP实践系列的文章 1,下载及启动abp项目前后端分离(netcore+vue) 2,修改abp数据库为mysql 3,商品系列api接口(本文主要依赖在这个商品 ...

  6. SpringMVC之简单的增删改查示例(SSM整合)

    本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...

  7. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  8. springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能

    转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包     数据库表 数据库表就不用教大家了,一张表,很简 ...

  9. 用CI框架向数据库中实现简单的增删改查

    以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html Code ...

随机推荐

  1. Atitit 电子商务订单号码算法(java c# php js 微信

    Atitit 电子商务订单号码算法(java c# php js  微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前 ...

  2. java 线程的终止与线程中断

    关于线程终止: 1.一般来讲线程在执行完毕后就会进入死亡状态,那该线程自然就终止了. 2.一些服务端的程序,可能在业务上需要,常驻系统.它本身是一个无穷的循环,用于提供服务.那对于这种线程我们该如何结 ...

  3. 学习Data Science/Deep Learning的一些材料

    原文发布于我的微信公众号: GeekArtT. 从CFA到如今的Data Science/Deep Learning的学习已经有一年的时间了.期间经历了自我的兴趣.擅长事务的探索和试验,有放弃了的项目 ...

  4. 美团(iPad)顶部界面的简单实现, 及开发时常见bug

    项目功能介绍:1.支持横竖屏旋转,界面正常显示2.通过点击界面顶部"美团",可展示出左右双tableView分别显示服务类列表和子类列表3.通过点击界面顶部"广州&quo ...

  5. Netgen mesh library : nglib

    Netgen mesh library : nglib eryar@163.com 摘要Abstract:本文主是对Netgen的库nglib的用法进行介绍.主要参考资料是Netgen用户指南.最后给 ...

  6. [转载]AxureRP常用快捷键

    习惯用Axure快捷键会让你做原型的时候更得心应手.Axure中文网总结了常用的一些快捷键分享给大家 . Axure RP Pro 6.5快捷键大全,如有疏漏,欢迎补充.   基本快捷键:   打开: ...

  7. 学习使用 CSS3 制作网站面包屑导航效果

    作为最重要的导航展示形式之一,面包屑导航能够让用户更清楚的知道他们所在页面的层次结构,让他们可以方便的导航到上一层页面.在本教程中,您将学习如何使用 CSS3 技术创建自己的面包屑导航效果. 效果演示 ...

  8. Js位置与大小(1)——正确理解和运用与尺寸大小相关的DOM属性

    在web开发中,不可避免遇到要计算元素大小以及位置的问题,解决这类问题的方法是利用DOM提供的一些API结合兼容性处理来,所有内容大概分3篇左右的文章的来说明.本文作为第一篇,介绍DOM提供的与尺寸大 ...

  9. ES6模块的import和export用法总结

    ES6之前以前出现了js模块加载的方案,最主要的是CommonJS和AMD规范.commonjs前者主要应用于服务器,实现同步加载,如nodejs.AMD规范应用于浏览器,如requirejs,为异步 ...

  10. js隐藏或显示某区域

    隐藏: document.getElementById(“keleyi”).style.display = “none”; 显示: document.getElementById(“keleyi”). ...