虽然已经在做关于SpringMVC的项目。但是还没有写一些比较系统的博客。今天就先来说一说最简单的增删改查吧。这个例子是基于SpringMVC+Spring+Mybatis实现的。
环境配置
主要是几项配置:springmvc的配置,spring的配置,MyBatis的配置,jdbc的配置,和web.xml配置
springmvc.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<? 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:mvc = "http://www.springframework.org/schema/mvc" xmlns:context = "http://www.springframework.org/schema/context" xmlns:aop = "http://www.springframework.org/schema/aop" xmlns:tx = "http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 文件扫描 --> < context:component-scan base-package = "com.zhao" ></ context:component-scan > <!-- annotation-driven:默认创建了多个对象:RequestMappingHandlerMapping,RequestMappingHandlerAdapter 也就提供对json格式支持 --> < mvc:annotation-driven /> <!-- 视图解析器 --> < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name = "prefix" value = "/WEB-INF/jsp/" /> < property name = "suffix" value = ".jsp" /> </ bean > </ beans > |
beans.xml(Spring的配置)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
<? 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:mvc = "http://www.springframework.org/schema/mvc" xmlns:context = "http://www.springframework.org/schema/context" xmlns:aop = "http://www.springframework.org/schema/aop" xmlns:tx = "http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> < context:component-scan base-package = "com.zhao" ></ context:component-scan > <!-- 第一步:配置数据源 --> < context:property-placeholder location = "classpath:jdbc.properties" /> < bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" > < property name = "jdbcUrl" value = "${jdbc.url}" ></ property > < property name = "driverClass" value = "${jdbc.driver}" ></ property > < property name = "user" value = "${jdbc.username}" ></ property > < property name = "password" value = "${jdbc.password}" ></ property > </ bean > <!-- 第二步:创建sqlSessionFactory。生产sqlSession --> < bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" > < property name = "dataSource" ref = "dataSource" ></ property > < property name = "configLocation" value = "classpath:sqlMapConfig.xml" ></ property > </ bean > <!-- 配置mybatis接口代理开发 * 接口类名和映射文件必须同名 * 接口类和映射文件必须在同一个目录 下 * 映射文件namespace名字必须是接口的全类路径名 * 接口的方法名必须和映射Statement的id一致 --> < bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" > < property name = "basePackage" value = "com.zhao.mapper" ></ property > < property name = "sqlSessionFactoryBeanName" value = "sqlSessionFactory" ></ property > </ bean > <!-- 第三步:事务 --> < bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" > < property name = "dataSource" ref = "dataSource" ></ property > </ bean > <!-- 配置通知 --> < tx:advice id = "txAdvice" transaction-manager = "transactionManager" > < tx:attributes > < tx:method name = "save*" propagation = "REQUIRED" /> < tx:method name = "update*" propagation = "REQUIRED" /> < tx:method name = "delete*" propagation = "REQUIRED" /> < tx:method name = "insert*" propagation = "REQUIRED" /> < tx:method name = "*" propagation = "REQUIRED" /> </ tx:attributes > </ tx:advice > <!-- 配置拦截service --> < aop:config > < aop:advisor advice-ref = "txAdvice" pointcut = "execution(* com.zhao.service.*.*(..))" /> </ aop:config > </ beans > |
jdbc.properties(数据库jdbc的配置)
1
2
3
4
|
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\: //localhost\:8888/blog jdbc.username=root jdbc.password= 123456 |
web.xml的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<? xml version = "1.0" encoding = "UTF-8" ?> < web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee" xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version = "2.5" > < display-name ></ display-name > < welcome-file-list > < welcome-file >index.jsp</ welcome-file > </ welcome-file-list > < context-param > < param-name >contextConfigLocation</ param-name > < param-value >classpath:beans.xml</ param-value > </ context-param > < listener > < listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class > </ listener > < filter > < filter-name >CharacterEncodingFilter</ 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 >CharacterEncodingFilter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < 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:springmvc.xml</ param-value > </ init-param > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >springmvc</ servlet-name > < url-pattern >/</ url-pattern > </ servlet-mapping > </ web-app > |
spring的配置中已经添加了对数据源的支持。。在基础的应用中我们并不需要对MyBatis做什么配置。因此基本的配置就是如上所示。
增删改查的操作
首先是查的操作
列表显示所有信息
Controller层实现
1
2
3
4
5
6
7
8
9
|
@RequestMapping ( "/list" ) public String UserList(Model model) { List<User> list =userService.findAll(); //传递数据至前端 model.addAttribute( "list" ,list); //返回对应视图 return "itemsList" ; } |
对应的Service实现层
1
2
3
4
5
6
|
@Override public List<User> findAll() { UserExample example = new UserExample(); List<User> list= userMapper.selectByExample(example); return list; } |
前端页面实现细节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<table width= "100%" border=1> <tr> <td>ID</td> <td>用户名</td> <td>密码</td> <td>昵称</td> <td>电子邮箱</td> <td>操作</td> </tr> <c:forEach items= "${list}" var = "item" > <tr> <td> <input type= "checkbox" name= "iduser" value= "${item.iduser}" > </td> <td>${item.username }</td> <td>${item.password }</td> <td>${item.nickname }</td> <td>${item.email }</td> <td><a href= "${pageContext.request.contextPath }/user/edit?iduser=${item.iduser}" rel= "external nofollow" >修改</a> <a href= "${pageContext.request.contextPath }/user/deleteByID?iduser=${item.iduser}" rel= "external nofollow" >删除</a> </td> </tr> </c:forEach> |
根据id修改相应的数据
Controller层实现
1
2
3
4
5
6
7
|
@RequestMapping ( "/edit" ) public String Edit(Integer iduser,Model model) { User user=userService.findById(iduser); model.addAttribute( "item" ,user); return "editItem" ; } |
Service实现层实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@RequestMapping ( "/edit" ) public String Edit(Integer iduser,Model model) { User user=userService.findById(iduser); //将要修改的值传递到前端 model.addAttribute( "item" ,user); return "editItem" ; } @RequestMapping (value = "/saveOrUpdate" ,method = RequestMethod.POST) public String saveOrUpdate(User user) { //保存修改的值 userService.update(user); //跳转到对应的list路由 return "redirect:list" ; } |
前端页面实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<form id= "itemForm" action= "${pageContext.request.contextPath }/user/saveOrUpdate" method= "post" > <input type= "hidden" name= "iduser" value= "${item.iduser }" /> 修改商品信息: <table width= "100%" border=1> <tr> <td>用户名称</td> <td><input type= "text" name= "username" value= "${item.username }" /></td> </tr> <tr> <td>密码</td> <td><input type= "text" name= "password" value= "${item.password}" /></td> </tr> <tr> <td>昵称</td> <td><input type= "text" name= "nickname" value= "${item.nickname}" /></td> </tr> <tr> <td>email</td> <td><input type= "text" name= "email" value= "${item.email}" /></td> </tr> <tr> <td colspan= "2" align= "center" ><input type= "submit" value= "提交" /> </td> </tr> </table> </form> |
上述流程并未对是否查询成功做对应处理。有兴趣的同学可以尝试将其补充完整
根据id删除对应的数据
Controller层实现
1
2
3
4
5
6
7
|
@RequestMapping ( "/deleteByID" ) public String deleteByID(Integer iduser) { userService.deleteById(iduser); return "redirect:list" ; } |
Service实现层实现
1
2
3
4
5
|
@Override public void deleteById(Integer iduser) { // TODO Auto-generated method stub userMapper.deleteByPrimaryKey(iduser); } |
前端页面上需要做的修改。已经在上述列表页面展示过了。在此不再赘述。
新增数据
Controller层实现
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//超链接到对应的页面 @RequestMapping ( "/add" ) public String Add() { return "AddUser" ; } //保存数据到数据库后跳转到列表页面 @RequestMapping ( "/addUser" ) public String Insert(User user) { userService.insert(user); return "redirect:list" ; } |
Service实现层实现
1
2
3
4
5
|
@Override public void insert(User user) { userMapper.insert(user); } |
前端页面实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<form id= "itemForm" action= "${pageContext.request.contextPath }/user/addUser" method= "post" > 商品信息: <table width= "100%" border=1> <tr> <td>用户名称</td> <td><input type= "text" name= "username" /></td> </tr> <tr> <td>密码</td> <td><input type= "text" name= "password" /></td> </tr> <tr> <td>昵称</td> <td><input type= "text" name= "nickname" /></td> </tr> <tr> <td>email</td> <td><input type= "text" name= "email" /></td> </tr> <tr> <td colspan= "2" align= "center" ><input type= "submit" value= "提交" /> </td> </tr> </table> </form> |
以上就是一个完整的增删改查的全部过程。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.jianshu.com/p/9f00cf73cd8e