springboot+mp完成简单案例

目录

1.框架搭建

2.前端搭建

3.后端编写


需求:完成简单的连表条件查询以及添加即可

 

1.框架搭建

1.创建springboot项目

2.相关依赖

 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--MyBatis-plus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

3.配置文件

#数据源信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_saas_fbms?serverTimezone=Asia/Shanghai&characterEncoding=UTF8
spring.datasource.username=root
spring.datasource.password=123456789
#指定映射文件的路径--链表操作
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
#sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

4.数据库:

/*Navicat Premium Data TransferSource Server         : wqg1Source Server Type    : MySQLSource Server Version : 50731Source Host           : localhost:3306Source Schema         : db_saas_fbmsTarget Server Type    : MySQLTarget Server Version : 50731File Encoding         : 65001Date: 25/08/2023 10:20:37
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for ums_agent
-- ----------------------------
DROP TABLE IF EXISTS `ums_agent`;
CREATE TABLE `ums_agent`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户名',`levelid` int(10) NOT NULL COMMENT '等级编号(外键关联代理商等级表)',`nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '昵称',`phonenum` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '电话',`status` int(10) NULL DEFAULT NULL COMMENT '账号状态(1:正常,2:禁用)',`create_time` date NULL DEFAULT NULL COMMENT '创建时间',`icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '头像路径',`growth` int(10) NULL DEFAULT NULL COMMENT '成长值',`integration` int(10) NULL DEFAULT NULL COMMENT '积分',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of ums_agent
-- ----------------------------
INSERT INTO `ums_agent` VALUES (1, 'admin01', 1, '代理01', '15346342611', 1, '2023-08-25', 'www.baidu.com', 100, 10);
INSERT INTO `ums_agent` VALUES (2, 'admin02', 2, '代理02', '15346342622', 1, '2023-08-25', 'www.baidu.com', 100, 10);-- ----------------------------
-- Table structure for ums_agent_level
-- ----------------------------
DROP TABLE IF EXISTS `ums_agent_level`;
CREATE TABLE `ums_agent_level`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '等级名称',`note` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '描述说明',`growth_point` int(10) NULL DEFAULT NULL COMMENT '等级成长值临界点',`priviledge_birthday` int(10) NULL DEFAULT NULL COMMENT '是否有生日特权',`addtime` date NULL DEFAULT NULL COMMENT '添加时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of ums_agent_level
-- ----------------------------
INSERT INTO `ums_agent_level` VALUES (1, '白银', '等级1', 1, NULL, '2023-08-25');
INSERT INTO `ums_agent_level` VALUES (2, '黄金', '等级2', 1, NULL, '2023-08-25');
INSERT INTO `ums_agent_level` VALUES (3, '铂金', '等级3', 1, NULL, '2023-08-25');
INSERT INTO `ums_agent_level` VALUES (4, '王者', '等级4', 1, NULL, '2023-08-25');SET FOREIGN_KEY_CHECKS = 1;

5.实体类

@Data
@TableName(value ="ums_agent")
public class Agent implements Serializable {/*** 编号*/@TableId(type = IdType.AUTO)private Integer id;/*** 用户名*/private String username;/*** 等级编号(外键关联代理商等级表)*/private Integer levelid;/*** 昵称*/private String nickname;/*** 电话*/private String phonenum;/*** 账号状态(1:正常,2:禁用)*/private Integer status;/*** 创建时间*/private Date createTime  ;/*** 头像路径*/private String icon ;/*** 成长值*/private Integer growth;/*** 积分*/private Integer integration;@TableField(exist = false)private AgentLevel agentLevel;}
@Data
@TableName(value ="ums_agent_level")
public class AgentLevel implements Serializable {/*** 编号*/@TableId(type = IdType.AUTO)private Integer id;/*** 等级名称*/private String name;/*** 描述说明*/private String note;/*** 等级成长值临界点*/private Integer growthPoint;/*** 是否有生日特权*/private Integer priviledgeBirthday;/*** 添加时间*/private Date addtime;}

2.前端搭建

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="/js/jquery.min.js"></script><script src="/js/vue.js"></script><script src="/js/axios.min.js"></script><link rel="stylesheet" href="/css/index.css"><script src="/js/index.js"></script>
</head>
<body><div id="app"><div style="width: 800px;margin: 0px auto"><el-input v-model="input" placeholder="用户名或者电话" prefix-icon="el-icon-search"style="margin: 0px auto ; width: 400px"></el-input><el-button   @click="findAll()">查询</el-button><el-button   @click="openDialog">添加</el-button></div><!--布局--><div><el-table:data="tableData"stripeborderstyle="width: 100%":header-cell-style="{'text-align':'center'}":cell-style="{'text-align':'center'}"><el-table-columnprop="username"label="用户名"width="180"></el-table-column><el-table-columnprop="nickname"label="昵称"width="180"></el-table-column><el-table-columnprop="agentLevel.name"label="等级"width="180"></el-table-column><el-table-columnprop="phonenum"label="电话"width="180"></el-table-column><el-table-column label="状态"><template slot-scope="scope"><span v-if="scope.row.status===1">正常</span><span v-if="scope.row.status===2">禁用</span></template></el-table-column><el-table-columnprop="growth"label="成长值"width="150px"></el-table-column><el-table-columnprop="integration"label="积分"></el-table-column></el-table><!--添加表单--><el-dialog title="代理商添加" :visible.sync="dialogFormVisible"><el-form :model="formInfo"><el-form-item label="用户名"><el-input v-model="formInfo.username"></el-input></el-form-item><!--动态下拉选框--><el-form-item label="等级"><el-select v-model="formInfo.levelid" placeholder="请选择"><el-optionv-for="item in options":key="item.id":label="item.name":value="item.id"></el-option></el-select></el-form-item><el-form-item label="昵称"><el-input v-model="formInfo.nickname"></el-input></el-form-item><el-form-item label="电话"><el-input v-model="formInfo.phonenum"></el-input></el-form-item><el-form-item label="积分"><el-input v-model="formInfo.integration"></el-input></el-form-item><el-form-item label="成长值"><el-input v-model="formInfo.growth"></el-input></el-form-item><el-form-item label="状态"><el-radio v-model="formInfo.status" label="1">正常</el-radio><el-radio v-model="formInfo.status" label="2">禁用</el-radio></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="insert">确 定</el-button></div></el-dialog></div>
</div>
</body>
<script>let app = new Vue({el: "#app",data: {input: "",tableData: [],options: [],dialogFormVisible: false,formInfo: {},},created() {this.findAll();this.findPosition();;},methods: {// 根据状态回显binConter(status) {switch (status) {case 1:return "正常"break;case 2:return "禁用"break;}},// 打开会话弹框openDialog() {this.dialogFormVisible = true;},// 添加insert() {console.log(this.formInfo)axios.post("agent/insert", this.formInfo).then(Result => {if (Result.data.code == 200) {this.$message.success("添加成功");this.findAll();}})//清空this.formInfo='';//关闭this.dialogFormVisible = false;},// 查询所有findAll() {console.log(this.input)axios.post("/agent/query?input=" + this.input).then(Result => {this.tableData = Result.data.data;console.log(this.tableData)})},//查询等级findPosition() {axios.get("/agentLevel/query").then(Result => {this.options = Result.data.data;})}}})
</script></html>

3.后端编写

1.设置统一返回类型


@NoArgsConstructor
@AllArgsConstructor
@Data
public class Result<T> {//表示状态码private Integer code;//消息提示private String msg;//响应的数据内容private Object data;
}

2.controller层

@RestController
@RequestMapping("/agent")
public class AgentController {@Autowiredprivate AgentService agentService;/*** 查询所有* @param input* @return*/@PostMapping("/query")public Result<List<Agent>> agentList(@RequestParam String input) {List<Agent> agentList = agentService.agentList(input);return new Result<>(200,"成功",agentList);}/*** 添加* @param agent* @return*/@PostMapping("/insert")public Result insert(@RequestBody Agent agent){agent.setIcon("www.baidu.com");Date date = new Date();agent.setCreateTime(date);boolean save = agentService.save(agent);return new Result<>(200,"成功",null);}}
@RestController
@RequestMapping("/agentLevel")
public class AgentLevelController {@Autowiredprivate AgentLevelService agentLevelService;/*** 查询等级* @return*/@GetMapping("/query")public Result select(){return agentLevelService.select();}
}

3.service层

public interface AgentService extends IService<Agent> {/*** 查询所有* @param input* @return*/List<Agent> agentList(String input);
}
public interface AgentLevelService {/*** 查询等级* @return*/Result select();
}

5.serviceImpl层

@Service
public class AgentServiceImpl extends ServiceImpl<AgentDao,Agent> implements AgentService {@Autowiredprivate AgentDao agentDao;/*** 查询所有* @param input* @return*/@Overridepublic List<Agent> agentList(String input) {return agentDao.agentList(input);}
}
@Service
public class AgentLevelServiceImpl implements AgentLevelService {@Autowiredprivate AgentLevelDao agentLevelDao;/*** 查询等级* @return*/@Overridepublic Result select() {List<AgentLevel> agentLevels = agentLevelDao.selectList(null);return new Result<>(200,"查询成功",agentLevels);}
}

6.dao层

@Mapper
public interface AgentDao extends BaseMapper<Agent> {/*** 查询所有* @param input* @return*/List<Agent> agentList(String input);
}
@Mapper
public interface AgentLevelDao extends BaseMapper< AgentLevel> {
}

7.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.wangqiguang.fbms.dao.AgentDao"><!--查询所有+条件查询--><resultMap id="agentList01" type="com.wangqiguang.fbms.pojo.Agent" autoMapping="true"><id property="id" column="id"/><association property="agentLevel" javaType="com.wangqiguang.fbms.pojo.AgentLevel" autoMapping="true"><id property="id" column="id"/></association></resultMap><select id="agentList" resultMap="agentList01">SELECTa.id,a.username,a.levelid,a.nickname,a.phonenum,a.`status`,a.create_time,a.icon,a.growth,a.integration,e.id,e.`name`,e.note,e.priviledge_birthday,e.growth_point,e.addtimeFROMums_agent AS aINNER JOINums_agent_level AS eONa.levelid = e.id<where><if test=" input!=null and input!=''">a.username like concat('%',#{input},'%')ora.phonenum like concat('%',#{input},'%')</if></where></select></mapper>

完成

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/107535.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE笔记(四)vue的组件

一、组件的介绍 1、组件的作用 整个项目都是由组件组成 可以让代码复用&#xff1a;相似结构代码可以做成一个组件&#xff0c;直接进行调用就可以使用&#xff0c;提高代码复用性 可以让代码具有可维护性&#xff08;只要改一处&#xff0c;整个引用的部分全部都变&#xf…

Java——单例设计模式

什么是设计模式&#xff1f; 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。就像是经典的棋谱&#xff0c;不同的棋局&#xff0c;我们用不同的棋谱、“套路”。 经典的设计模式共有23种。…

探索pytest:Python自动化测试的新境界

在当今的软件开发领域&#xff0c;测试已经不仅仅是一个简单的步骤&#xff0c;而是确保软件质量的核心环节。Python&#xff0c;作为全球最受欢迎的编程语言之一&#xff0c;拥有丰富的测试框架和工具。而在这其中&#xff0c;pytest无疑是最受欢迎和最具影响力的一个。本文将…

c++ qt--事件(第六部分)

c qt–事件&#xff08;第六部分&#xff09; 一.编辑伙伴&#xff0c;编辑顺序&#xff08;按TAB进行切换&#xff09; 1.编辑伙伴 此功能在设计界面如下的位置 1.设置伙伴关系 鼠标左键长按一个Label组件然后把鼠标移到另一个组件上 2.伙伴关系的作用 伙伴关系的作用就是…

飞天使-k8s基础组件分析-安全

文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥&#xff1f; 答&#xff1a;集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有…

学习ts(十一)本地存储与发布订阅模式

localStorage实现过期时间 目录 准备 安装 npm i rollup typescript rollup-plugin-typescript2// tsconfig.json"module": "ESNext","moduleResolution": "node", "strict": false, // rollup.config.js import …

【Unity3D赛车游戏】【五】Unity中汽车加速效果是如何优化的?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

ai课堂行为分析检测评估

ai课堂行为分析检测评估系统通过yolo网络模型算法&#xff0c;ai课堂行为分析检测评估算法利用摄像头采集学生的图像&#xff0c;视线跟踪技术的智能教学系统由情感模型、教师模型、学生模型和课程模型四个模型组成。用户端的视线及表情信息通过摄像头采集并传递到情感模型情感…

[C++] STL_vector 迭代器失效问题

文章目录 1、前言2、情况一&#xff1a;底层空间改变的操作3、情况二&#xff1a;指定位置元素的删除操作4、g编译器对迭代器失效检测4.1 扩容4.2 erase删除任意位置&#xff08;非尾删&#xff09;4.3 erase尾删 5、总结 1、前言 **迭代器的主要作用就是让算法能够不用关心底…

如何查看友商的Camera配流情况

有时候&#xff0c;我们想看下竞品友商机器上&#xff0c;使用到camera的app 申请的分辨率情况。 如果只是抓logcat日志&#xff0c;我们可能没法从中获取到有效信息&#xff0c;毕竟一般出货的机器版本&#xff0c;基本已经把大部分相关日志都给关闭了。 那有没其它方式&…

【Java基础增强】类加载器和反射

1.类加载器 1.1类加载器【理解】 作用 负责将.class文件&#xff08;存储的物理文件&#xff09;加载在到内存中 1.2类加载的过程【理解】 类加载时机 创建类的实例&#xff08;对象&#xff09; 调用类的类方法 访问类或者接口的类变量&#xff0c;或者为该类变量赋值 …

最新两年工作经验总结

最新两年工作经验总结 前言URP的使用1&#xff1a;如何开启URP1、老项目升级为URP2、创建新项目时选择URP创建 2&#xff1a;URP阴影的设置 PolyBrush的使用&#xff08;地图编辑插件&#xff09;制作山峰or低谷边缘柔化雨刷上色制造场景中的物体贴图地形创建容易踩坑的点ProBu…

数值类特征

数值类特征 数值类特征是最常见的一种特征类型&#xff0c;数值可以直接喂给算法。 为了提升效果&#xff0c;我们需要对数值特征做一些处理&#xff0c;本文介绍了4种常见的处理方式&#xff1a;缺失值处理、二值化、分桶、缩放。 什么是数值类特征&#xff1f; 数值类特征就是…

各地区结婚、离婚、再婚等数据(1990-2021年)

涵盖了1990年至2021年各地区的结婚、离婚以及再婚情况。通过对此数据进行分析&#xff0c;我们可以了解婚姻趋势的演变和地区之间的差异。数据反映了人们的婚姻决策、家庭变化以及社会动态&#xff0c;为研究家庭结构和社会变迁提供了有价值的信息。 一、数据介绍 数据名称&a…

git操作:将一个仓库的分支提交到另外一个仓库分支

这个操作&#xff0c;一般是同步不同网站的同个仓库&#xff0c;比如说gitee 和github。某个网站更新了&#xff0c;你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库&#xff0c;把B仓库分支&am…

Node.JS教程

文章目录 Node.JSNode.js学习指南一、Node.js基础1.认识Node.js2.开发环境搭建3. 模块、包、commonJS3.1、为什么要有模块化开发&#xff1f;3.2、CommonJS规范3.3、 modules模块化规范写法 4.Npm&Yarn4.1、npm使用4.2、全局安装nrm4.3、yarn使用 持续更新中总结 Node.JS N…

物理机ping不通windows server 2012

刚才尝试各种方法&#xff0c;在物理机上就是ping不能wmware中的windows server 2012 . 折腾了几个小时&#xff0c;原来是icmp 被windows server 2012 禁用了 现在使用使用以下协议就能启用Icmp协议。 netsh firewall set icmpsetting 8然后&#xff0c;就能正常ping 通虚…

Ubuntu20 安装 libreoffice

1 更新apt-get sudo apt-get update2 安装jdk 查看jdk安装情况 Command java not found, but can be installed with:sudo apt install default-jre # version 2:1.11-72, or sudo apt install openjdk-11-jre-headless # version 11.0.138-0ubuntu1~20.04 sud…

Android沉浸式实现(记录)

沉浸式先看效果 直接上代码 Android manifest文件 android:theme"style/Theme.AppCompat.NoActionBar"布局文件 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"ht…

js实现数据关联查找更新。数据求和验证

为了实现这个功能我们和后端定义了数据结构 data:{id&#xff1a;‘’&#xff0c;formInfo:,formInfo2:,formInfo3:,formInfo4:, ......deailData:[ // 明细数据 // saleData 查询带出的对应明细序列号数据{ id:, ocopyId:, copyId:, odoId:, ......, saleData:[ { id:, oc…