Spring+SpringMVC+Mybatis(开发必备技能)
01、基础idea环境配置
环境:
数据库:MySQL
开发工具:IntelliJ IDEA 2020.1.3 x64
框架:SSM(Spring+SpringMVC+Mybatis)
目录
1、创建idea的maven项目
2、引入maven所需要的所有包
3、包解释:
Spring需要的包:
Mybatis需要的包:
jsp与servlet需要的包:
数据库连接池DBCP:
Json:
JDBC组件:
分页:
复杂sql处理:
4、创建资源文件夹:
5、创建数据库链接在资源文件【jdbc.properties】
编辑
6、在【resources】下创建【mapper】文件夹与【UsersMapper.xml】测试类文件
编辑
7、Spring配置文件【applicationContext.xml】的创建
8、spring-mvc配置文件spring-mvc.xml配置
9、创建各层级【模型层model】、【数据层dao】、【控制器controller】、【业务逻辑接口层service】、【业务逻辑实现层serviceimpl】、【视图层resources/webapp/views】
10、webapp下【WEB-INF/web.xml】配置
11、创建测试数据库(也可以直接用我的,连接不变即可)
12、完成各层级编码(具体注解与逻辑下篇文章具体讲解)
【模型层Users】
【数据层UsersMapper】
【业务逻辑接口层UsersService】
【业务逻辑实现层UsersServiceImpl】
【控制层UsersController】
【视图层GetInfo.jsp】
13、配置Tomcat
14、启动测试
15、接口访问测试
1、创建idea的maven项目
写上项目名称,点击【Next】
选择maven路径
2、引入maven所需要的所有包
org.springframework
spring-context
4.3.18.RELEASE
org.springframework
spring-core
4.3.18.RELEASE
org.springframework
spring-beans
4.3.18.RELEASE
org.springframework
spring-web
4.3.18.RELEASE
org.springframework
spring-webmvc
4.3.18.RELEASE
org.mybatis
mybatis
3.4.6
mysql
mysql-connector-java
5.1.38
org.springframework
spring-jdbc
4.3.18.RELEASE
org.springframework
spring-tx
4.3.18.RELEASE
org.mybatis
mybatis-spring
1.3.2
javax.servlet
jstl
1.2
javax.servlet
javax.servlet-api
3.1.0
provided
commons-dbcp
commons-dbcp
1.4
com.alibaba
fastjson
1.2.47
com.fasterxml.jackson.core
jackson-databind
2.12.2
com.fasterxml.jackson.core
jackson-core
2.12.2
com.fasterxml.jackson.core
jackson-annotations
2.12.2
com.alibaba
druid
1.1.10
com.alibaba
druid-spring-boot-starter
1.1.10
com.github.pagehelper
pagehelper
5.2.0
com.github.jsqlparser
jsqlparser
4.0
粘贴位置:
3、包解释:
Spring需要的包:
org.springframework
spring-context
4.3.18.RELEASE
org.springframework
spring-core
4.3.18.RELEASE
org.springframework
spring-beans
4.3.18.RELEASE
org.springframework
spring-web
4.3.18.RELEASE
org.springframework
spring-webmvc
4.3.18.RELEASE
Mybatis需要的包:
org.mybatis
mybatis
3.4.6
mysql
mysql-connector-java
5.1.38
org.springframework
spring-jdbc
4.3.18.RELEASE
org.springframework
spring-tx
4.3.18.RELEASE
org.mybatis
mybatis-spring
1.3.2
jsp与servlet需要的包:
javax.servlet
jstl
1.2
javax.servlet
javax.servlet-api
3.1.0
provided
数据库连接池DBCP:
commons-dbcp
commons-dbcp
1.4
Json:
com.alibaba
fastjson
1.2.47
com.fasterxml.jackson.core
jackson-databind
2.12.2
com.fasterxml.jackson.core
jackson-core
2.12.2
com.fasterxml.jackson.core
jackson-annotations
2.12.2
JDBC组件:
com.alibaba
druid
1.1.10
com.alibaba
druid-spring-boot-starter
1.1.10
分页:
com.github.pagehelper</groupI
pagehelper
5.2.0
复杂sql处理:
com.github.jsqlparser
jsqlparser
4.0
4、创建资源文件夹:
打开项目层级,看到包已经下载好了,并引入成功,但是【src】下只有webapp,所以需要鼠标右键创建需要的4个文件夹。
在【src】上点击鼠标右键,创建四个文件夹:
全选并回车创建
项目层级:
5、创建数据库链接在资源文件【jdbc.properties】
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com:3306/test?characterEncoding=utf8
username=qwe8403000
password=Qwe8403000
#下面在有需要配置就行,没有需要不用记那么多,用的话过来复制
#初始化链接数量
initialSize=0
#最大连接数,一般20够测试了
maxActive=20
#最多多少空闲在
maxIdle=20
#最少多少空闲在
minIdle=1
#最大等待时间
maxWait=60000
6、在【resources】下创建【mapper】文件夹与【UsersMapper.xml】测试类文件
select * from users
select * from users where nickName like "%${nickName}%"
7、Spring配置文件【applicationContext.xml】的创建
配置文件: (有详细的注解)
8、spring-mvc配置文件spring-mvc.xml配置
配置编码:
9、创建各层级【模型层model】、【数据层dao】、【控制器controller】、【业务逻辑接口层service】、【业务逻辑实现层serviceimpl】、【视图层resources/webapp/views】
当前所有的层级以及包名,还差一个webapp下【WEB-INF/web.xml】没配置。
10、webapp下【WEB-INF/web.xml】配置
替换配置
demo_515
index.jsp
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
forceEncoding
true
CharacterEncodingFilter
/*
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
springmvc
/
替换效果:(注释写在的相对好理解,不理解的留言)
11、创建测试数据库(也可以直接用我的,连接不变即可)
/*
Navicat Premium Data Transfer
Source Server : myALi
Source Server Type : MySQL
Source Server Version : 50732
Source Host : rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com:3306
Source Schema : test
Target Server Type : MySQL
Target Server Version : 50732
File Encoding : 65001
Date: 24/05/2022 21:59:06
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
`userName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户账号',
`pwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户密码',
`nickName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户姓名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表rnrn这个表是用来记录用户的基础信息rnrn' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (1, '文日红', '123456', '有一姑娘,清扬婉兮。');
INSERT INTO `users` VALUES (2, '杨春红', '1234657', '灿如春华,皎若明月');
INSERT INTO `users` VALUES (3, '顾容菲', '123', '二九年华,娉婷姌嫋。');
INSERT INTO `users` VALUES (4, '韦文静', '1234', '明眸善睐,靥辅承权,瑰姿艳逸,仪静体闲。');
INSERT INTO `users` VALUES (5, '卢雪', '12345', '落落大方,英姿飒爽。');
SET FOREIGN_KEY_CHECKS = 1;
12、完成各层级编码(具体注解与逻辑下篇文章具体讲解)
需要5个文件,依次是【模型层Users】、【数据层UsersMapper】、【业务逻辑接口层UsersService】、【业务逻辑实现层UsersServiceImpl】、【控制层UsersController】、【视图层GetInfo.jsp】顺序如果错了回看到层层报错,将所有文件编写完才能不报红,所以建议按照顺序来。
【模型层Users】
package com.item.model;
public class Users {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", userName='" + userName + ''' +
", pwd='" + pwd + ''' +
", nickName='" + nickName + ''' +
'}';
}
private int id;
private String userName;
private String pwd;
private String nickName;
}
【数据层UsersMapper】
package com.item.dao;
import com.item.model.Users;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UsersMapper {
List GetInfo();
List SelectName(@Param("nickName") String nickName);
}
【业务逻辑接口层UsersService】
package com.item.service;
import com.item.model.Users;
import java.util.List;
public interface UsersService {
List GetInfo();
List SelectName(String nickName);
}
【业务逻辑实现层UsersServiceImpl】
package com.item.serviceimpl;
import com.item.dao.UsersMapper;
import com.item.model.Users;
import com.item.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UsersServiceImpl implements UsersService {
@Autowired
private UsersMapper usersMapper;
@Override
public List GetInfo() {
return usersMapper.GetInfo();
}
@Override
public List SelectName(String nickName) {
return usersMapper.SelectName(nickName);
}
}
【控制层UsersController】
package com.item.controller;
import com.item.model.Users;
import com.item.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
@CrossOrigin
public class UsersController {
@Autowired
private UsersService usersService;
@RequestMapping("/GetInfoApi")
@ResponseBody
public Object GetInfoApi(){
List list=usersService.GetInfo();
System.out.println(list);
return list;
}
@RequestMapping("/GetInfo")
public String GetInfo(HttpServletRequest request,Model model){
List list=usersService.GetInfo();
model.addAttribute("lists",list);
return "GetInfo";
}
@RequestMapping("/GetName")
public String GetName(HttpServletRequest request,Model model){
String nickName = request.getParameter("nickName");
List list=usersService.SelectName(nickName);
model.addAttribute("lists",list);
return "GetInfo";
}
}
【视图层GetInfo.jsp】
<%--
Title
<% List lists = (List) request.getAttribute("lists");%>
编号
账号
密码
昵称
13、配置Tomcat
去掉麻烦的路径:
14、启动测试
看到successfully,并且启动中没有错误提示代表启动成功。
15、接口访问测试
基本路径:【http://localhost:8088/】
api接口路径:【http://localhost:8088/GetInfoApi】
视图路径:【http://localhost:8088/GetInfo】
跨域测试(编码如下):
Document
function ontest() {
$.ajax({
url: "http://127.0.0.1:8088/GetInfoApi",
type: "get",
success: function(data) {
console.log(data);
}
});
}
自行创建一个【index.html】用作测试:
打开后,F12,看控制台【Console】,点击一下【测试】按钮即可看到数据。
希望能给大家带来帮助,欢迎一键三连哦。