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.springframeworkspring-context4.3.18.RELEASEorg.springframeworkspring-core4.3.18.RELEASEorg.springframeworkspring-beans4.3.18.RELEASEorg.springframeworkspring-web4.3.18.RELEASEorg.springframeworkspring-webmvc4.3.18.RELEASEorg.mybatismybatis3.4.6mysqlmysql-connector-java5.1.38org.springframeworkspring-jdbc4.3.18.RELEASEorg.springframeworkspring-tx4.3.18.RELEASEorg.mybatismybatis-spring1.3.2javax.servletjstl1.2javax.servletjavax.servlet-api3.1.0providedcommons-dbcpcommons-dbcp1.4com.alibabafastjson1.2.47com.fasterxml.jackson.corejackson-databind2.12.2com.fasterxml.jackson.corejackson-core2.12.2com.fasterxml.jackson.corejackson-annotations2.12.2com.alibabadruid1.1.10com.alibabadruid-spring-boot-starter1.1.10com.github.pagehelperpagehelper5.2.0com.github.jsqlparserjsqlparser4.0
粘贴位置:
3、包解释:
Spring需要的包:
org.springframeworkspring-context4.3.18.RELEASEorg.springframeworkspring-core4.3.18.RELEASEorg.springframeworkspring-beans4.3.18.RELEASEorg.springframeworkspring-web4.3.18.RELEASEorg.springframeworkspring-webmvc4.3.18.RELEASE
Mybatis需要的包:
org.mybatismybatis3.4.6mysqlmysql-connector-java5.1.38org.springframeworkspring-jdbc4.3.18.RELEASEorg.springframeworkspring-tx4.3.18.RELEASEorg.mybatismybatis-spring1.3.2
jsp与servlet需要的包:
javax.servletjstl1.2javax.servletjavax.servlet-api3.1.0provided
数据库连接池DBCP:
commons-dbcpcommons-dbcp1.4
Json:
com.alibabafastjson1.2.47com.fasterxml.jackson.corejackson-databind2.12.2com.fasterxml.jackson.corejackson-core2.12.2com.fasterxml.jackson.corejackson-annotations2.12.2
JDBC组件:
com.alibabadruid1.1.10com.alibabadruid-spring-boot-starter1.1.10
分页:
com.github.pagehelper</groupIpagehelper5.2.0
复杂sql处理:
com.github.jsqlparserjsqlparser4.0
4、创建资源文件夹:
打开项目层级,看到包已经下载好了,并引入成功,但是【src】下只有webapp,所以需要鼠标右键创建需要的4个文件夹。
在【src】上点击鼠标右键,创建四个文件夹:
全选并回车创建
项目层级:
5、创建数据库链接在资源文件【jdbc.properties】
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com:3306/test" /> 6、在【resources】下创建【mapper】文件夹与【UsersMapper.xml】测试类文件
select * from usersselect * 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_515index.jsporg.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:applicationContext.xmlCharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingutf-8forceEncodingtrueCharacterEncodingFilter/*springmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:spring-mvc.xml1truespringmvc/
替换效果:(注释写在的相对好理解,不理解的留言)
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 = '用户信息表\r\n\r\n这个表是用来记录用户的基础信息\r\n\r\n' 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;}@Overridepublic 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;@Servicepublic class UsersServiceImpl implements UsersService {@Autowiredprivate UsersMapper usersMapper;@Overridepublic List GetInfo() {return usersMapper.GetInfo();}@Overridepublic 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@CrossOriginpublic class UsersController {@Autowiredprivate UsersService usersService;@RequestMapping("/GetInfoApi")@ResponseBodypublic 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】,点击一下【测试】按钮即可看到数据。
希望能给大家带来帮助,欢迎一键三连哦。