博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例
阅读量:6221 次
发布时间:2019-06-21

本文共 20419 字,大约阅读时间需要 68 分钟。

          Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

                                         作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

  能看到这篇文章的小伙伴,详细你已经有一定的Java功能,并且对SSM组件已经有一定的了解啦。上次我分享过一篇关于“”,这次我们需要在上次的基础之上添加前端的支持。本篇博客只是介绍他们的联合用法,并不涉及具体的业务逻辑。但是我们可以通过这个小案例,来嵌套我们实际生产环境中所需要的处理的业务逻辑哟!

 

 

一.开发环境介绍

  整合SSM使用的是idea开发工具。在进行开发之前,我们需要准备数据库测试数据以及在Windows操作系统下安装WEB服务器(Tomcat)。

1>.添加数据库数据

1 create database yinzhengjie;2 3 use yinzhengjie;4 5 create table if not exists users(id int primary key auto_increment,name varchar(20) , age int) ;

2>.安装Tomcat

   安装Tomcat的过程极为艰难,直接在网上下载一个安装即可,当然我这里的测试版本大家也可以下载,直接解压即可完成安装操作。我已经下载好了Tomcat绿色版(链接:https://pan.baidu.com/s/1_fTB5tX0JMUtErI-s0_Ofg 密码:bow5

 

二.编写MVC框架代码并启动Tomcat服务器

1>.创建模块,添加web project支持

2>.引入Maven依赖

1 
2
5
4.0.0
6 7
cn.org.yinzhengjie
8
MySSM
9
1.0-SNAPSHOT
10 11 12
13
14
junit
15
junit
16
4.11
17
18
19
org.springframework
20
spring-context-support
21
4.3.5.RELEASE
22
23
24
org.springframework
25
spring-jdbc
26
4.3.5.RELEASE
27
28
29
org.mybatis
30
mybatis
31
3.2.1
32
33
34
org.mybatis
35
mybatis-spring
36
1.3.0
37
38
39
c3p0
40
c3p0
41
0.9.1.2
42
43
44
mysql
45
mysql-connector-java
46
5.1.17
47
48
49
org.aspectj
50
aspectjrt
51
1.6.1
52
53
54
org.aspectj
55
aspectjweaver
56
1.8.10
57
58
59
org.springframework
60
spring-webmvc
61
4.3.5.RELEASE
62
63
64
javax.servlet
65
servlet-api
66
2.5
67
68
69
jstl
70
jstl
71
1.2
72
73
74
pom.xml 文件内容

3>.编写代码

  创建包结构如下:

  具体代码如下:

1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.dao; 7  8 import java.util.List; 9 10 /**11  * Basedao,基本dao12  */13 public interface BaseDao
{14 public abstract void insert(T t) ;15 public abstract void update(T t) ;16 public abstract void delete(Integer id) ;17 public abstract T selectOne(Integer id) ;18 public abstract List
selectAll() ;19 public abstract List
selectPage(int offset, int length) ;20 public abstract int count() ;21 }
BaseDao.java 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.dao.impl; 7  8 import cn.org.yinzhengjie.ssm.dao.BaseDao; 9 import cn.org.yinzhengjie.ssm.domain.User;10 import org.apache.ibatis.session.RowBounds;11 import org.apache.ibatis.session.SqlSessionFactory;12 import org.mybatis.spring.support.SqlSessionDaoSupport;13 import org.springframework.stereotype.Repository;14 15 import javax.annotation.Resource;16 import java.util.List;17 18 @Repository("userDao")19 public class UserDaoImpl extends SqlSessionDaoSupport implements BaseDao
{20 21 public void insert(User user) {22 getSqlSession().insert("users.insert" , user) ;23 }24 25 public void update(User user) {26 getSqlSession().update("users.update", user);27 }28 29 public void delete(Integer id) {30 getSqlSession().delete("users.deleteOne", id);31 }32 33 public User selectOne(Integer id) {34 return getSqlSession().selectOne("users.selectOne", id);35 }36 public int count() {37 return getSqlSession().selectOne("users.selectCount");38 }39 40 public List
selectAll() {41 return getSqlSession().selectList("users.selectAll");42 }43 public List
selectPage(int offset ,int length) {44 return getSqlSession().selectList("users.selectPage" , new RowBounds(offset,length));45 }46 47 @Resource(name="sqlSessionFactory")48 public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {49 super.setSqlSessionFactory(sqlSessionFactory);50 }51 }
UserDaoImpl.java 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.domain; 7  8 public class User { 9     private Integer id;10     private String name;11     private int age;12 13     public Integer getId() {14         return id;15     }16 17     public void setId(Integer id) {18         this.id = id;19     }20 21     public String getName() {22         return name;23     }24 25     public void setName(String name) {26         this.name = name;27     }28 29     public int getAge() {30         return age;31     }32 33     public void setAge(int age) {34         this.age = age;35     }36 }
User.java 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.service; 7  8 import java.util.List; 9 10 public interface UserService
{11 public abstract void insert(T t);12 13 public abstract void update(T t);14 15 public abstract void delete(Integer id);16 17 public abstract T selectOne(Integer id);18 public abstract int selectCount();19 20 public abstract List
selectAll();21 public abstract List
selectPage(int offset, int length);22 }
UserService.java 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.service.impl; 7  8 import cn.org.yinzhengjie.ssm.dao.BaseDao; 9 import cn.org.yinzhengjie.ssm.domain.User;10 import cn.org.yinzhengjie.ssm.service.UserService;11 import org.springframework.stereotype.Service;12 13 import javax.annotation.Resource;14 import java.util.List;15 16 /**17  * 用户服务实现类18  */19 @Service("userService")20 public class UserServiceImpl implements UserService
{21 22 @Resource(name="userDao")23 private BaseDao
userDao ;24 25 public void insert(User user) {26 userDao.insert(user);27 }28 29 public void update(User user) {30 userDao.update(user);31 }32 33 public void delete(Integer id) {34 userDao.delete(id);35 }36 37 public User selectOne(Integer id) {38 return userDao.selectOne(id);39 }40 41 public List
selectAll() {42 return userDao.selectAll();43 }44 45 public List
selectPage(int offset , int length) {46 return userDao.selectPage(offset , length);47 }48 49 public int selectCount() {50 return userDao.count();51 }52 }
UserServiceImpl.java 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.web.controller; 7  8 import cn.org.yinzhengjie.ssm.domain.User; 9 import cn.org.yinzhengjie.ssm.service.UserService;10 import org.springframework.stereotype.Controller;11 import org.springframework.web.bind.annotation.RequestMapping;12 13 import javax.annotation.Resource;14 15 @Controller16 @RequestMapping("/home")17 public class HomeController {18 19     //注入用户Service20     @Resource(name="userService")21     private UserService us ;22 23     @RequestMapping("/m1")24     public String m1(){25         System.out.println("m1");26         User u = new User();27         u.setName("yinzhengjie");28         u.setAge(18);29         us.insert(u);30         return "index" ;31     }32 }
HomeController.java 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.ssm.web.controller; 7  8 import cn.org.yinzhengjie.ssm.domain.User; 9 import cn.org.yinzhengjie.ssm.service.UserService;10 import org.springframework.stereotype.Controller;11 import org.springframework.ui.Model;12 import org.springframework.web.bind.annotation.RequestMapping;13 import org.springframework.web.bind.annotation.RequestMethod;14 import org.springframework.web.bind.annotation.RequestParam;15 16 import javax.annotation.Resource;17 import java.util.List;18 19 @Controller20 @RequestMapping("/user")21 public class UserController {22 23     @Resource(name="userService")24     private UserService
us ;25 26 27 public String findAll(Model m){28 List
list = us.selectAll();29 m.addAttribute("list" , list) ;30 return "user/list" ;31 }32 33 @RequestMapping("/list")34 public String page(Model m , @RequestParam(value = "pno" , defaultValue = "1") int pno){35 //每页显示5条记录36 int records = 5 ;37 38 //总页数39 int pages = 1 ;40 41 //查询总记录数42 int count = us.selectCount() ;43 44 if(count % records == 0){45 pages = count / records ;46 }47 else{48 pages = count / records + 1;49 }50 51 List
list = us.selectPage( (pno-1) * records, records) ;52 53 m.addAttribute("list" ,list) ;54 m.addAttribute("pages" , pages) ;55 return "user/list" ;56 }57 58 @RequestMapping("/delete")59 public String delete(Integer uid) {60 us.delete(uid);61 return "redirect:/user/list";62 }63 64 @RequestMapping("/toadd")65 public String toadd(){66 return "user/reg" ;67 }68 69 @RequestMapping(value = "/doadd" ,method = RequestMethod.POST)70 public String doAdd(User user){71 us.insert(user);72 return "redirect:/user/list" ;73 }74 75 @RequestMapping(value = "/modify" ,method = RequestMethod.GET)76 public String modify(Model m ,Integer uid){77 User u = us.selectOne(uid) ;78 m.addAttribute("user" , u) ;79 return "user/edit" ;80 }81 82 @RequestMapping(value = "/update" ,method = RequestMethod.POST)83 public String update(User u){84 us.update(u);85 return "redirect:/user/list" ;86 }87 }
UserController.java 文件内容

4>.编辑Spring和Mybatis配置文件

   文件存放路径如下:

  具体代码如下:

1 
2
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
beans.xml 文件内容
1 
2 5
6
7
8
9
10
11
12
mybatis-config.xml 文件内容
1 
2 4
5
6
7 insert into users(name, age) values(#{name}, #{age}) ; 8
9 10
11 update users set name = #{name} , age = #{age} where id = #{id}12
13 14
15 delete from users where id = #{id}16
17 18
21 22
25
28
31 32
UserMapper.xml 文件内容

5>.配置web文件

  配置目录如下:

 

  具体文件内容如下:

【web/user目录】

1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3  4  5     UserList 6  7  8  9 
10
11 username :
12 age :
13
14
15
edit.jsp 文件内容
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3  4  5     UserList 6  7  8 添加新用户
9
19
11
12
13
14
15
16
17
18
20
21
22
23
24
25
26 27
28
38
39 40
id name age 修改 删除
修改 删除
29
30
31 [
]  32
33
34
  35
36
37
41 42
list.jsp 文件内容
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3  4  5     UserList 6  7  8  9 
10 username :
11 age :
12
13
14
reg.jsp 文件内容

【web/WEB-INF目录】

1 
2
12
13
14
15
16
17
18
19
20
21
dispatcher-servlet.xml 文件内容
1 
2
6 7
8
9
contextConfigLocation
10
classpath:beans.xml
11
12 13
14
15
org.springframework.web.context.ContextLoaderListener16
17
18 19
20
characterEncodingFilter
21
org.springframework.web.filter.CharacterEncodingFilter
22
23
encoding
24
UTF-8
25
26
27
forceEncoding
28
true
29
30
31
32
characterEncodingFilter
33
/*
34
35 36
37
dispatcher
38
org.springframework.web.servlet.DispatcherServlet39
40
41
42
dispatcher
43
/
44
45
web.xml 文件内容

【web根目录】

1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>  2        
3 4
5
6
7 尹正杰的个人主页
8
9
10
11
12
13 14

尹正杰

15

尹正杰

16

尹正杰

17

尹正杰

18
尹正杰
19
尹正杰
20

You are a good boy!

21
22

尹正杰

23

You are a good boy!

24
25

素胚勾勒出青花笔锋浓转淡

瓶身描绘的牡丹一如你初妆
冉冉檀香透过窗心事我了然
宣纸上走笔至此搁一半
釉色渲染仕女图韵味被私藏
而你嫣然的一笑如含苞待放

26 yinzhengjie
27 2017 28 尹正杰博客
29 30 Golang第一章
31 Golang第二章
32 Golang第三章
33 34 35 36
37 Golang进阶之路Day1
38 Go语言官方自称,之所以开发Go 语言,是因为“近10年来开发程序之难让我们有点沮丧”。 这一定位暗示了Go语言希望取代C和Java的地位,成为最流行的通用开发语言。博客地址:http://www.cnblogs.com/yinzhengjie/p/6482675.html 39
40 41
42
Golang进阶之路Day2
43 前者大家应该都很熟悉,因为我在上一篇(http://www.cnblogs.com/yinzhengjie/p/6482675.html)关于GO的博客中用"go build"命令编译不同的版本,但是在这里我们还是要演示一下go build的花式用法。博客地址:http://www.cnblogs.com/yinzhengjie/p/7000272.html 44
45 46
47 Golang进阶之路Day3
48 当然我这里只是介绍了Golang的冰山一角,对Golang感兴趣的小伙伴,可以看一下Golang官网的文档说明。毕竟官方才是最权威的,给出国内地址:https://golang.org/pkg/!博客地址:http://www.cnblogs.com/yinzhengjie/p/7043430.html 49
50 51
52
我是块标签
53 我是内联标签     54 55
56
    57
  • 菜单一
  • 58
  • 菜单二
  • 59
  • 菜单三
  • 60
61 62
    63
  1. 第一章
  2. 64
  3. 第二章
  4. 65
  5. 第三章
  6. 66
67 68
    69
    北京
    70
    朝阳区
    71
    亦庄经济开发区
    72
    丰台区
    73
    海淀区
    74
    河北
    75
    石家庄
    76
    保定
    77
    陕西
    78
    西安
    79
    安康
    80
81 82 83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
姓名 年龄 性别
尹正杰 25 boy
尹正杰 26
yinzhengjie 26
yinzhengjie 26
112 113
index.jsp 文件内容
1  2  3  4     
5 myhtml.html 6 7 8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
id name age
1 tom 12
2 tomas 13
25

h1标题

26

h2标题

27

h3标题

28 百度
29 30 31 username :
32 password :
33 confirm :
34 nickname :
35 sex : 男36
37 hobby : 足球38 蓝球39 排球
40 民族 : 45
46 47 48 49
myhtml.html 文件内容(主要是测试HTML标签的代码文件)

koala.gif是一张考拉的图片,这个大家可以随意放一张照片上去,如下:

6>.添加Tomcat服务端插件

7>.修改Tomcat的服务器名称

8>.添加开发环境(选中项目名称)

 

9>.配置Tomcat的相关参数(配置完毕之后需要点击ok确认哟)

10>.给项目添加依赖库

  点击OK确认配置成功,如下图:

11>.启动Tomcat服务器

  启动成功之后,会自动打开我们设置的浏览器,如下图:

 

 

三.通过Web界面实现增删改查

  由于我的首页会在5秒之后进行自动跳转,因此咱们的手速得快,我们需要切换到指定的路径中去“/user/list”。

1>.查看数据库信息

 

2>.通过web界面网数据库里插入数据

  添加新用户

  添加测试用户:

 

   添加数据成功:

3>.删除数据(我们用上面的方法多添加一些数据信息)

 

4>.修改数据

 

  将修改的数据进行提交:

  查看数据是否修改成功:

 

你可能感兴趣的文章
js导出CSV
查看>>
转:Linux中find命令-path -prune用法详解
查看>>
团队编程项目作业3-模块测试过程
查看>>
Java基本数据类型及其封装器的一些千丝万缕的纠葛
查看>>
easyui datagrid 分页 客户分页
查看>>
ogg概叙、架构、进程
查看>>
建造者模式的使用场景
查看>>
java基本类型
查看>>
iReport报表生成html,pdf,xls,word工具类
查看>>
转一篇关于部署的文章
查看>>
cvc-complex-type.2.4.c 如何解决
查看>>
如何优化VMWare虚拟机的运行速度(转)
查看>>
UVALive2362 POJ1004 HDU1064 ZOJ1048 Financial Management【数学计算】
查看>>
UITableView解析
查看>>
[sas]Missing Value
查看>>
每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面
查看>>
Android自动在线升级
查看>>
windows 系统安装git的方法
查看>>
java多线程简单demo
查看>>
2.第一个MVC程序
查看>>