SpringBoot+mybatis+Vue實(shí)現(xiàn)前后端分離項(xiàng)目的示例
vue前后端分離實(shí)現(xiàn)功能:?jiǎn)T工的增刪改(先實(shí)現(xiàn)數(shù)據(jù)回顯之后,再進(jìn)行修改)查
一、SpringBoot環(huán)境搭建
1、項(xiàng)目的數(shù)據(jù)庫(kù)

/* Navicat Premium Data Transfer Source Server : windows Source Server Type : MySQL Source Server Version : 80022 Source Host : localhost:3306 Source Schema : ems Target Server Type : MySQL Target Server Version : 80022 File Encoding : 65001 Date: 19/12/2021 16:27:43 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_emp -- ---------------------------- DROP TABLE IF EXISTS `t_emp`; CREATE TABLE `t_emp` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `salary` double NOT NULL, `age` int NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of t_emp -- ---------------------------- INSERT INTO `t_emp` VALUES (2, '楊福君', 9000, 19); INSERT INTO `t_emp` VALUES (6, '鄧正武', 18000, 25); INSERT INTO `t_emp` VALUES (8, '王恒杰', 12000, 21); INSERT INTO `t_emp` VALUES (9, '張西', 8000, 20); SET FOREIGN_KEY_CHECKS = 1;
2、項(xiàng)目所需依賴
<!--繼承springboot的父項(xiàng)目 ,放在dependencies平級(jí)下-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<dependencies>
<!--springboot依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!--引入springboot的web支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--數(shù)據(jù)源連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<!--引入springboot的test支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
</project>
3、application.yml文件
server:
port: 8080
servlet:
context-path: /ems
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #數(shù)據(jù)源類型
driver-class-name: com.mysql.cj.jdbc.Driver #加載驅(qū)動(dòng)
url: jdbc:mysql://localhost:3306/ems?useSSL=false&serverTimezone=UTC
username: root
password: root
mybatis:
mapper-locations: classpath:com/tjcu/mapper/*Mapper.xml #指定mapper文件所在的位置,其中classpath必須和mapper-locations分開
type-aliases-package: com.tjcu.entity
4、入口類

@SpringBootApplication
@MapperScan("com.tjcu.dao")
public class EmpApplication {
public static void main(String[] args) {
SpringApplication.run(EmpApplication.class,args);
}
}
二、vue實(shí)現(xiàn)前后端分離
1、前端頁(yè)面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>emp manager</title>
</head>
<body>
<div id="app">
<center><h2>{{msg}}</h2></center>
<hr/>
<center>
<form>
編號(hào):<input type="text" v-model="emp.id" placeholder="添加默認(rèn)為null"/><br/>
名稱:<input type="text" v-model="emp.name"/><br/>
薪資:<input type="text" v-model="emp.salary"/><br/>
年齡:<input type="text" v-model="emp.age"/><br/>
<input type="button" value="添加/修改" @click="add()"/>
<br/>
<br/>
<br/>
</form>
</center>
<table border="1" cellspacing="0" cellpadding="0" width="80%" align="center">
<tr>
<td>編號(hào)</td>
<td>名稱</td>
<td>年齡</td>
<td>薪資</td>
<td>操作</td>
</tr>
<tr v-for="(emp,index) in emps">
<td>{{index+1}}</td>
<td>{{emp.name}}</td>
<td>{{emp.salary}}</td>
<td>{{emp.age}}</td>
<td><input type="button" value="刪除" @click="del(emp.id)">
<input type="button" value="修改" @click="queryOne(emp.id)"></td>
</tr>
</table>
</div>
</body>
</html>
<script src="js/vue-min.js"></script>
<script src="js/axios.min.js"></script>
<script>
new Vue({
el:"#app" , //指定vue實(shí)例的作用范圍
data:{ //定義數(shù)據(jù)
msg:"ems員工管理系統(tǒng)",
emps:[],
emp:{}
},
methods:{ //定義函數(shù)
queryAll(){
var vue=this;
axios.get("http://localhost:8080/ems/emp/queryall")
.then(function (response) {
console.log(response.data);
vue.emps = response.data;
}).catch(function (error) {
console.log(error.data);
})
},
add(){
var vue=this;
console.log(vue.emp);
axios.post("http://localhost:8080/ems/emp/add",vue.emp)
.then(function () {
vue.queryAll();
console.log("添加成功");
vue.emp={};
})
.catch(function () {
console.log("添加失敗")
})
},
queryOne(id){
if(window.confirm("你確定修改嗎?")){
var vue=this;
axios.get("http://localhost:8080/ems/emp/queryOne?id="+id)
.then(function (response) {
//將查詢的結(jié)果嫁給vue中的emp進(jìn)行管理 根據(jù)雙向綁定原理 emp數(shù)據(jù)變化 會(huì)影響頁(yè)面 從而在表單中展示當(dāng)前員工
vue.emp=response.data;
console.log("查詢成功");
}).catch(function () {
console.log("查詢失敗")
})
}
},
del(id){
if(window.confirm("你確定刪除嗎?")){
var vue=this;
axios.get("http://localhost:8080/ems/emp/delete?id="+id)
.then(function () {
vue.queryAll();
console.log("刪除成功")
}).catch(function () {
console.log("刪除失敗")
})
}
}
},
created(){
this.queryAll();
}
})
</script>
2、springBoot控制層
/**
* @author 王恒杰
* @date 2021/12/17 15:52
* @Description:
*/
@Controller
@CrossOrigin
@ResponseBody
public class EmpController {
@Autowired
private EmpService empService;
@RequestMapping("/emp/queryall")
public List<Emp> queryall(){
List<Emp> emps = empService.showEmp();
return emps;
}
/**
* 刪除
* @param id
*/
@RequestMapping("/emp/delete")
public void delete(Integer id){
empService.deleteById(id);
}
@RequestMapping("/emp/add")
public void add(@RequestBody Emp emp){
if(emp.getId()!=0){
empService.updateEmp(emp);
}else {
emp.setId(null);
empService.insertEmp(emp);
}
}
@RequestMapping("/emp/queryOne")
public Emp query(Integer id){
Emp emp = empService.selectEmpById(id);
return emp;
}
}
3、mapper文件
<mapper namespace="com.tjcu.dao.EmpDao">
<insert id="insertEmp">
insert into t_emp
values (#{id}, #{name}, #{salary}, #{age})
</insert>
<select id="showEmp" resultType="emp">
select *
from t_emp
</select>
<update id="updateEmp">
update t_emp
<set>
<if test="name!=null">
name=#{name},
</if>
<if test="salary!=null">
salary=#{salary},
</if>
<if test="age!=null">
age=#{age}
</if>
</set>
where id=#{id}
</update>
<delete id="deleteById">
delete from t_emp where id=#{id}
</delete>
<select id="selectEmpById" resultType="emp">
select *
from t_emp where id=#{id}
</select>
</mapper>
4、項(xiàng)目完整源代碼
gitee開源:https://gitee.com/wanghengjie563135/springboot_mybatis_vue.git

到此這篇關(guān)于SpringBoot+mybatis+Vue實(shí)現(xiàn)前后端分離項(xiàng)目的示例的文章就介紹到這了,更多相關(guān)SpringBoot+mybatis+Vue前后端分離內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用React和springboot做前后端分離項(xiàng)目的步驟方式
- springBoot前后端分離項(xiàng)目中shiro的302跳轉(zhuǎn)問(wèn)題
- IDEA教程創(chuàng)建SpringBoot前后端分離項(xiàng)目示例圖解
- SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過(guò)程(后端)
- 部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)
- 使用Springboot+poi上傳并處理百萬(wàn)級(jí)數(shù)據(jù)EXCEL
- Springboot+Poi導(dǎo)入Excel表格實(shí)現(xiàn)過(guò)程詳解
- Springboot?前后端分離項(xiàng)目使用?POI?生成并導(dǎo)出?Excel的操作方法
相關(guān)文章
SpringBoot+OCR?實(shí)現(xiàn)圖片文字識(shí)別
本文主要介紹了SpringBoot+OCR 實(shí)現(xiàn)圖片文字識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法
在Java中我們經(jīng)常需要將數(shù)組從一種類型轉(zhuǎn)換為另一種類型,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)組轉(zhuǎn)換為集合的相關(guān)方法,文中通過(guò)圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
java多線程中的生產(chǎn)者和消費(fèi)者隊(duì)列詳解
這篇文章主要介紹了java多線程中的生產(chǎn)者和消費(fèi)者隊(duì)列詳解,隊(duì)列,是一種數(shù)據(jù)結(jié)構(gòu),除了優(yōu)先級(jí)隊(duì)列和LIFO隊(duì)列外,隊(duì)列都是以FIFO(先進(jìn)先出)的方式對(duì)各個(gè)元素進(jìn)行排序的,需要的朋友可以參考下2024-01-01

