JavaWeb-ssm框架搭建

来源:互联网 发布:鬼魂探测器软件 编辑:程序博客网 时间:2024/05/16 17:08

1 环境

 搭建框架 SpringMVC+Spring+Mybatis ,Maven环境、 需要MySQL 数据库支持,使用的编程工具Eclipse 

搭建完毕后的项目架构如下:


2 新建Maven项目

2.1 新建Maven项目


 

2.2 选择web项目




点击【finish】


3 新建的项目架构



新建完毕,项目报错,并且缺少目录。修改如下:

3.1 显示所有的目录

目录结构为:

src/main/resources

src/main/java

src/test/resources

src/test/java

 

【右键项目】-->【Build Path】-->【ConfigureBuild Path】




会看见所有的目录,没有看见的目录拉其滚动条就可看见




 然后点击【Apply】--> 【OK】即可。

如果没有出现,则重复以上步骤,然后将目录收缩,再进行【Apply】。



最后项目结构如下:


以上结构还需要添加一些东西,选中【项目右键】-->  【Build Path】--> 【new Source Folder】--> 【输入文件夹名称】--> 【Finish】.

这里新建src/test/resources 



目录如下:



3.2 修改项目的编辑版本

默认项目的编译级别是1.5 ,有一些JDK的新特性可能会报错,所以需要更换项目的编译级别。修改如下:

【右键项目】-->【Properties】


选择【Java Compiler】


去掉选择,更换编译版本


选择【Project Facets】然后修改Java版本,因为安装的是JDK1.8 所以选择1.8




然后点击【Apply】-->【OK】


3.3 加入依赖

结果工程还是报错,因为缺少类javax.servlet.http.HttpServlet,此类在javax包中。

在pom.xml中加入以下依赖:



<!-- JSP相关 -->          <dependency>              <groupId>jstl</groupId>              <artifactId>jstl</artifactId>              <version>1.2</version>          </dependency>          <dependency>              <groupId>javax.servlet</groupId>              <artifactId>servlet-api</artifactId>              <version>2.5</version>              <scope>provided</scope>          </dependency>                  <dependency>              <groupId>javax.servlet</groupId>              <artifactId>jsp-api</artifactId>              <version>2.0</version>              <scope>provided</scope>          </dependency>    


查看项目:


3.4 设置部署程序集(Web Deployment Assembly)

右键项目,选择[properties] -->[Deployment Assembly] 如下图:


此处列表是部署项目时,文件发布的路径。删除红色区域内条目;此处删除test的两项,是因为test是测试使用,并不需要部署。




3.5 创建数据库以及表


创建表的脚本:

DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` INT(11) NOT NULL AUTO_INCREMENT,  `user_name` VARCHAR(40) NOT NULL,  `password` VARCHAR(255) NOT NULL,  `age` INT(4) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;/*Data for the table `user` */INSERT  INTO `user`(`id`,`user_name`,`password`,`age`) VALUES (1,'测试','sfasgfaf',24);


4 Spring与MyBatis的整合

4.1 基本配置

4.1.1 添加依赖(pom.xml)

<properties>          <!-- spring版本号 -->          <spring.version>4.0.2.RELEASE</spring.version>          <!-- mybatis版本号 -->          <mybatis.version>3.2.6</mybatis.version>          <!-- log4j日志文件管理包版本 -->          <slf4j.version>1.7.7</slf4j.version>          <log4j.version>1.2.17</log4j.version>      </properties>      <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>  <!-- spring核心包 -->          <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-core</artifactId>              <version>${spring.version}</version>          </dependency>            <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-web</artifactId>              <version>${spring.version}</version>          </dependency>          <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-oxm</artifactId>              <version>${spring.version}</version>          </dependency>          <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-tx</artifactId>              <version>${spring.version}</version>          </dependency>            <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-jdbc</artifactId>              <version>${spring.version}</version>          </dependency>            <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-webmvc</artifactId>              <version>${spring.version}</version>          </dependency>          <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-aop</artifactId>              <version>${spring.version}</version>          </dependency>            <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-context-support</artifactId>              <version>${spring.version}</version>          </dependency>            <dependency>              <groupId>org.springframework</groupId>              <artifactId>spring-test</artifactId>              <version>${spring.version}</version>          </dependency>          <!-- mybatis核心包 -->          <dependency>              <groupId>org.mybatis</groupId>              <artifactId>mybatis</artifactId>              <version>${mybatis.version}</version>          </dependency>          <!-- mybatis/spring包 -->          <dependency>              <groupId>org.mybatis</groupId>              <artifactId>mybatis-spring</artifactId>              <version>1.2.2</version>          </dependency>          <!-- 导入java ee jar 包 -->          <dependency>              <groupId>javax</groupId>              <artifactId>javaee-api</artifactId>              <version>7.0</version>             <scope>provided</scope>        </dependency>          <!-- 导入Mysql数据库链接jar包 -->          <dependency>              <groupId>mysql</groupId>              <artifactId>mysql-connector-java</artifactId>              <version>5.1.30</version>          </dependency>          <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->          <dependency>              <groupId>commons-dbcp</groupId>              <artifactId>commons-dbcp</artifactId>              <version>1.2.2</version>          </dependency>          <!-- JSTL标签类 -->          <dependency>              <groupId>jstl</groupId>              <artifactId>jstl</artifactId>              <version>1.2</version>          </dependency>          <!-- 日志文件管理包 -->          <!-- log start -->          <dependency>              <groupId>log4j</groupId>              <artifactId>log4j</artifactId>              <version>${log4j.version}</version>          </dependency>                              <!-- 格式化对象,方便输出日志 -->          <dependency>              <groupId>com.alibaba</groupId>              <artifactId>fastjson</artifactId>              <version>1.1.41</version>          </dependency>              <dependency>              <groupId>org.slf4j</groupId>              <artifactId>slf4j-api</artifactId>              <version>${slf4j.version}</version>          </dependency>            <dependency>              <groupId>org.slf4j</groupId>              <artifactId>slf4j-log4j12</artifactId>              <version>${slf4j.version}</version>          </dependency>          <!-- log end -->          <!-- 映入JSON -->          <dependency>              <groupId>org.codehaus.jackson</groupId>              <artifactId>jackson-mapper-asl</artifactId>              <version>1.9.13</version>          </dependency>          <!-- 上传组件包 -->          <dependency>              <groupId>commons-fileupload</groupId>              <artifactId>commons-fileupload</artifactId>              <version>1.3.1</version>          </dependency>          <dependency>              <groupId>commons-io</groupId>              <artifactId>commons-io</artifactId>              <version>2.4</version>          </dependency>          <dependency>              <groupId>commons-codec</groupId>              <artifactId>commons-codec</artifactId>              <version>1.9</version>          </dependency>  </dependencies><build><plugins><!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><port>8080</port><path>/</path>                     <server>tomcat7</server></configuration></plugin></plugins><finalName>student</finalName></build>


4.1.2 JDBC属性文件

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/db_testusername=rootpassword=123456#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570initialSize=0#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570maxActive=20#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2maxIdle=20#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2minIdle=1#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4maxWait=60000

4.1.3 spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans                          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd                          http://www.springframework.org/schema/context                          http://www.springframework.org/schema/context/spring-context-3.1.xsd                          http://www.springframework.org/schema/mvc                          http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描 --><context:component-scan base-package="cn.ssm" /><!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${initialSize}"></property><!-- 连接池最大数量 --><property name="maxActive" value="${maxActive}"></property><!-- 连接池最大空闲 --><property name="maxIdle" value="${maxIdle}"></property><!-- 连接池最小空闲 --><property name="minIdle" value="${minIdle}"></property><!-- 获取连接最大等待时间 --><property name="maxWait" value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:cn/ssm/student/mapper/*.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.ssm.student.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean></beans>


4.1.4 Log4j的配置

#\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522Blog4j.rootLogger=INFO,Console,File#\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.out#\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0Flog4j.appender.Console.layout = org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=[%c] - %m%n#\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6log4j.appender.File = org.apache.log4j.RollingFileAppender#\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55log4j.appender.File.File = logs/ssm.log#\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0Flog4j.appender.File.MaxFileSize = 10MB# \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7log4j.appender.File.Threshold = ALLlog4j.appender.File.layout = org.apache.log4j.PatternLayoutlog4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n


4.2 反向生成代码

项目架构:


4.3 新增service接口以及实现类

package cn.ssm.student.service;import cn.ssm.student.entity.User;public interface UserService {public User getById(int userId);}
package cn.ssm.student.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import cn.ssm.student.entity.User;import cn.ssm.student.mapper.UserMapper;import cn.ssm.student.service.UserService;@Servicepublic class UserServiceImpl implements UserService{@Autowiredprivate UserMapper userMapper;@Transactional(readOnly=true)public User getById(int userId) {return userMapper.selectByPrimaryKey(userId);}}

项目架构:

4.4 测试

测试代码:

package cn.ssm.student.service;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import cn.ssm.student.entity.User;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })public class UserServiceTest {protected static Logger logger = Logger.getLogger(UserServiceTest.class);@Autowiredprivate UserService userService;@Testpublic void testGetById() {User user = userService.getById(1);System.out.println(user);}}

5 整合SpringMVC

5.1 spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans                          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd                          http://www.springframework.org/schema/context                          http://www.springframework.org/schema/context/spring-context-3.1.xsd                          http://www.springframework.org/schema/mvc                          http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">                        <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --><context:component-scan base-package="cn.ssm.student.controller" /><!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /><!-- JSON转换器 --></list></property></bean><!-- 定义跳转的文件的前后缀 ,视图模式配置--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --><property name="prefix" value="/" /><property name="suffix" value=".jsp" /></bean><!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --><bean id="multipartResolver"          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">          <!-- 默认编码 -->        <property name="defaultEncoding" value="utf-8" />          <!-- 文件大小最大值 -->        <property name="maxUploadSize" value="10485760000" />          <!-- 内存中的最大值 -->        <property name="maxInMemorySize" value="40960" />      </bean> </beans>


5.2 web.xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><!-- Spring和mybatis的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mybatis.xml</param-value></context-param><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防止Spring内存溢出监听器 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><!-- Spring MVC servlet --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

6 项目运行

内置tomcat运行,启动时为:tomcat7:run 因为在pom.xml中配置了tomcat插件的名字。

启动项目:


启动成功:


6.1 问题

页面的el表达式原样输出

原因是因为maven生成的web.xml版本太低了,2.5之前web.xml文件中的头定义中,el表达式默认是忽略不解析的,故需要显示声明解析el表达式

方案1,在jsp文件头上添加如下:

<%@ pageisELIgnored="false" %>(测试通过)

但总不可能每个页面都加上这个,页面多了就显得重复多余了,下面的是统一解决的办法!

方案二:

改变xml的版本

<?xml version="1.0" encoding="UTF-8"?>  <web-app version="2.5"       xmlns="http://java.sun.com/xml/ns/javaee"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name>Archetype Created Web Application</display-name><!-- Spring和mybatis的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mybatis.xml</param-value></context-param><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防止Spring内存溢出监听器 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><!-- Spring MVC servlet --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list></web-app>

方案3 ,在web.xml文件中如下定义:

<jsp-config>    <jsp-property-group>        <url-pattern>*.jsp</url-pattern>       <el-ignored>false</el-ignored>       <scripting-invalid>true</scripting-invalid>    </jsp-property-group></jsp-config>


7 用户管理

7.1 增加用户

页面预览


添加界面效果如图:


输入内容,并提交


7.1.1 后台代码

Controller层:// 添加@RequestMapping("/add")public String add(User user) {userService.add(user);// 重定向到查询所有用户return "redirect:getAll.do";}// 查询所有的用户@RequestMapping("/getAll")public String getAll(Model model) {List<User> list = userService.getAll();model.addAttribute("userList", list);return "show";}
Service层:@Transactionalpublic void add(User user) {userMapper.insert(user);}

7.1.2 页面代码

add.jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"  %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="student/add.do" method="post">姓名:<input name="userName" />年龄:<input name="age" />密码:<input name="password"/> <input type="submit"/></form></body></html>

查看所有页面代码(show.jsp):

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><head><title>测试</title></head><body><c:forEach var="user" items="${userList}">    ${user.id}  ${user.userName}   <a href="delete.do?id=${user.id }">删除</a>  <a href="proupdate.do?id=${user.id }">更新</a>  <br/>  </c:forEach>    <a href="/add.jsp">新增</a></body></html>



7.2 查找用户

在浏览器中输入地址:http://localhost:8080/student/getById.do?id=2


7.2.1 后台代码

Controller层:// 查询某一个用户@RequestMapping("/getById")public String getById(Integer id, Model model) {User user = userService.getById(id);model.addAttribute("user", user);        // 转发到showUser.jsp页面return "showUser";}
Service层@Transactional(readOnly = true)public User getById(int userId) {return userMapper.selectByPrimaryKey(userId);}





7.2.2 页面代码

showUser.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"  %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <head><title>查询单个用户</title>  </head>    <body>    ${user.id}  ${user.userName}  </body></html>

7.3 修改用户

查询所有用户,地址:http://localhost:8080/student/getAll.do


点击王武后面的【更新】


进入更新页面,修改其名字,然后【提交】:


结果:


7.3.1 后台代码

Controller层:@RequestMapping("/update")public String update(User user){userService.updateById(user);        // 更新成功,重定向查询所有return "redirect:getAll.do";}//更新之前@RequestMapping("/proupdate")public String proUpdate(Integer id,Model model){User user = userService.getById(id);model.addAttribute("user",user);return "update";}
Service层:@Transactional(readOnly = true)public User getById(int userId) {return userMapper.selectByPrimaryKey(userId);}@Transactionalpublic void updateById(User user) {userMapper.updateByPrimaryKey(user);}





7.3.2 页面代码

update.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="update.do" method="post"><input type="hidden" name="id" value="${user.id }"/>姓名:<input name="userName" value="${user.userName }" />年龄:<input name="age" value="${user.age }"/>密码:<input name="password" value="${user.password }"/> <input type="submit"/></form></body></html>

7.4 删除用户


点击【删除】


7.4.1 后台代码

Controller层:// 删除某一个用户@RequestMapping("/delete")public String delete(Integer id,Model model) {userService.deleteById(id);// 重定向到查询所有的用户return "redirect:getAll.do";}

Service层:@Transactionalpublic void deleteById(int userId) {userMapper.deleteByPrimaryKey(userId);}

8 使用MyBatis Generator自动创建代码

8.1 所需jar包


8.2 所需配置文件


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="testTables" targetRuntime="MyBatis3"><commentGenerator><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><!--数据库连接的信息:驱动类、连接地址、用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/test" userId="root"password="123456"></jdbcConnection><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetProject:生成PO类的位置 --><javaModelGenerator targetPackage="cn.ssm.student.entity"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator>        <!-- targetProject:mapper映射文件生成的位置 --><sqlMapGenerator targetPackage="cn.ssm.student.mapper" targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- targetPackage:mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="cn.ssm.student.mapper" targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></javaClientGenerator><!-- 指定数据库表 --><table tableName="user"></table></context></generatorConfiguration>


8.3 测试程序

import org.mybatis.generator.ant.GeneratorAntTask;public class Start {   private static final String CONFIG_FILE_PATH="config/generatorConfig.xml";    public static void main(String[] args) {     try {               GeneratorAntTask task = new GeneratorAntTask();               task.setConfigfile(CONFIG_FILE_PATH);                 task.setOverwrite(true);             task.execute();           } catch (Exception e) {               e.printStackTrace();           }      }}


生成结果:


9 项目下载

 http://download.csdn.net/download/anoiadream/9933505

10 参考博客

http://blog.csdn.net/zhshulin/article/details/37956105#