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 项目下载
10 参考博客
http://blog.csdn.net/zhshulin/article/details/37956105#
- JavaWeb-ssm框架搭建
- JavaWeb学习笔记之SSM框架搭建配置文件
- javaweb学习(二)使用maven搭建SSM框架
- Javaweb简单博客系统-----(一)ssm框架搭建
- 使用maven搭建ssm框架的javaweb项目
- SSM框架的搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- SSM框架搭建
- 初学搭建SSM框架
- MyEclipse2014搭建SSM框架
- ssm框架搭建
- Maven搭建SSM框架
- SSM框架搭建
- SSM 框架 搭建
- NYOJ 59-小明组织活动的任务(置换)
- 模态框总结
- poj 1330 Nearest Common Ancestors(lca st)
- HDU 6097 Mindis(计算几何)
- 刷题——Stall Reservations POJ
- JavaWeb-ssm框架搭建
- js打开本地exe程序
- power designer远程连接oracle数据库并导出E-R图
- C语言中restrict的作用
- 《Drools7.0.0.Final规则引擎教程》番外实例篇——默认条件的陷阱
- javaSE和JavaEE的区别?
- DAY58JavaScript DOM大纲
- 以Postgre SQL冷备为主线实现Portal for ArcGIS 10.5至10.5.1的迁移
- 454. 4Sum II