🎈个人主页:靓仔很忙i
💻B 站主页:👉B站👈
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:SptringBoot
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!
目录
2.1 springboot自动生成项目(本篇博客的版本为:2.1.4 )
5.建立数据库,springboot集成mybatis-plus,并测试mybatis-plus
1 安装软件,准备环境
1.1 软件的安装与破解
idea的安装与破解:https://www.cnblogs.com/jajian/p/7989032.html
navicat的安装与破解:https://blog.csdn.net/WYpersist/article/details/86530973
mysql服务器安装:自行官网下载并安装
1.2 配置idea环境
jdk配置:不会的百度
maven的下载和配置:使用IntelliJ IDEA 配置Maven(入门)_idea配置maven-CSDN博客
*maven给出的链接,完成 "4.在intelliJ IDEA中配置maven" 即可
2.建立并测试springboot项目
2.1 springboot自动生成项目(本篇博客的版本为:2.1.4 )
File->New->Project->Spring Intializr->Next->填写相关项目信息->选中需要的starters(如下)-Finish
删除选中的无用文件
展开src后的项目结构:
其中DemoApplication是程序的启动入口
application.properties可替换成application.yml文件,两者作用等价,只是语法不同
2.2 配置maven,等待jar包下载完成
配置maven,jdk(若一配置好,此次可以不再配置)。此处不再赘述
等待maven自动下载jar包和插件
* 第一次创建的时候可能会比较慢,可能会是10分钟以上或者更久
2.3 测试springboot项目是否可以正常运行
2.3.1 测试项目
打开pom.xml文件,将之前引入的mybaitis的starters注释掉
打开测试类,书写第一行java代码
以debug方式运行(相对于直接运行,更高效),若过程中没有错误,会出现
2.3.2 测试springmvc接收的请求
创建控制器对应的Login类
书写Controller层的代码
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller//声明该类是控制器
public class LoginController {
@ResponseBody //将return的内容作为json串,返回给前端页面
//Restful风格的请求
//@PostMapping 当前端以post方式... @DeleteMapping 当前端以delete方式...
@RequestMapping("/login")//当前端以get方式发送/login 命令时,会被该函数拦截,执行该函数
public String login(){
return "this is login()";
}
}
将启动的程序调至DemoApplication(主启动类,并运行程序)
当看到倒数第2行是下图时,说明程序已经正确启动
在浏览器窗口输入:localshost:8080
3.springboot整合前端
整合前端前的准备:
页面下载地址
http://47.107.71.52:8083/pages/pages.zip
解压后的目录结构如下,可以直接双击index.html运行,查看效果:
3.1 将前端资源加载进springboot中
在springboot的reources下建立static和templates目录
将html,index.html,login.html(前端页面)移动到templates目录(thymleaf自动解析的目录)下
其余文件放入static文件下,移动完成后的static
此时运行项目,并在浏览器中输入localhost:8080
此时springboot自动加载了index.html页面,并且用户管理的页面找不到,原因是springboot自动映射。此时我们修改下springboot的默认配置即可。
3.2 修改springboot默认页面路径
在主应用程序的同级下,创建config.MyWebMvcConfig类,并实现接口WebMvcConfigurer
代码如下:
package com.example.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer{
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//作用类似于Controller中的@RequstMapping,对于多路径来说,不需要
//单独写函数了,简化编程
registry.addViewController("/").setViewName("login");
registry.addViewController("html/member-list.html").setViewName("html/member-list");
}
}
再修改一下LoginController下的login方法
@Controller
public class LoginController {
@RequestMapping("/index.html")
public String login(){
return "index";
}
}
到此前端页面已经完成整合到了springboot中,输入localhost:8080会自动跳到登录界面,点击登录后,会跳到index.html页面,
并且单页面的用户页面也进行了相应的映射。
4.后台和前端(thymeleaf)进行交互
4.1 修改login.html
将login.html的22行到27行,替换成如下代码
(form增加一个action属性,用户名和密码分别各自增加了name属性,button替换成input标签)
<form class="login-form" action="index.html">
<h2>管理登录</h2>
<input type="text" name="username" placeholder="用户名" value="admin" id="user_name" />
<input type="password" name="password" placeholder="密码" id="password" />
<input type="submit">登 录</input>
<!--<button id="login">登 录</button>-->
4.2 修改index.html
index.html
<!--第2行代码替换成下面的代码-->
<html lang="en"> <!--原代码-->
<html lang="en" xmlns:th="http://www.thymeleaf.org"> <!--替换后的代码-->
<!--第45行代码替换成下面的代码-->
<a href="javascript:;">admin</a> <!--原代码-->
<a href="javascript:;" th:text="${msg}">admin</a> <!--替换后的代码-->
4.3 修改LoginController
@RequestMapping("/index.html")
public String login(HttpServletRequest req, Model model){
//HttpServletRequest用来接收前端表单传递的form表单对象,
//Model用来存储返回给前端页面的数据
model.addAttribute("msg",req.getParameter("username"));
return "index";
}
此时即完成了后台向前端发送数据,运行结果:
*前端的form表单的数据,springmvc可自动进行封装,只要确保标签中name与实体类的相同,springmvc即可自动封装。具体在后面进行介绍。
5.建立数据库,springboot集成mybatis-plus,并测试mybatis-plus
5.1 建立数据库
/*
Navicat Premium Data Transfer
Source Server : 阿里云
Source Server Type : MySQL
Date: 07/04/2019 00:26:12
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for userinfo
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`user_id` int(1) NOT NULL,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`user_sex` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`user_telephone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`user_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`user_address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`user_jointime` datetime(0) NULL DEFAULT NULL,
`user_state` bit(1) NULL DEFAULT NULL,
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES (1, '小明', '男', '18756541254', '1141265524@qq.com', '北京市 海淀区', '2017-01-01 11:11:42', b'1');
INSERT INTO `userinfo` VALUES (2, '小红', '女', '14541215412', '1445125487@qq.com', '安徽省 合肥市', '2019-04-17 22:07:06', b'1');
SET FOREIGN_KEY_CHECKS = 1;
5.2 springboot集成mybaits-plus
将之前pom.xml中注释的mybatis替换成
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--generator,模板引擎-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.0.7.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
将application.properties重命名为application.yml
在application.yml中填入
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://数据库ip:3306/数据库名
username: root
password: root
数据根据自己的数据库进行配置
在主配置类的同级下,建立MyGenrator类,用于连接数据库中的表,自动生成三层和实体类
修改MyGenrator中的配置
运行MyGenarator,根据提示,输入要映射的数据库名和表名
操作无误,会生成下述文件夹
此时缺少Controller和Entity层中的基类,建立下述2个类即可(与策略配置中的路径保持一致)
在UserinfoMapper上加上Mapper注解
5.3 测试mybatis-plus与数据库的连接
测试类改为以下代码:
import com.example.demo.springbootDemo.entity.Userinfo;
import com.example.demo.springbootDemo.mapper.UserinfoMapper;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
private UserinfoMapper userMapper;
@Test
public void contextLoads() {
System.out.println(("----- selectAll method test ------"));
List<Userinfo> userList = userMapper.selectList(null);
Assert.assertEquals(2, userList.size());
userList.forEach(System.out::println);
}
}
若打印窗口出现
说明mybatis-plus已成功连接数据库,并且可以实现对数据库的增删改查。