基于Spring Boot + SSM(Spring + Spring MVC + MyBatis)+Vue+MySQL实现一个简单的用户管理功能

news/2024/12/18 17:06:22/文章来源:https://www.cnblogs.com/java-note/p/18615412

后端代码(Spring Boot + SSM部分)

1. 创建Spring Boot项目

使用Spring Initializr(可以通过IDEA等IDE自带的创建Spring Boot项目功能,或者访问Spring官网的Initializr页面)创建一个基础的Spring Boot项目,添加相关依赖,比如Web(用于构建Web应用)、MyBatisMyBatis Spring Boot StarterMySQL Driver(如果使用MySQL数据库)等。

2. 数据库相关配置(application.properties 或 application.yml)

如果使用application.properties,配置如下示例(以MySQL为例,根据实际情况修改数据库连接信息):

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis.mapper-locations=classpath:mapper/*.xml

如果是application.yml格式:

spring:datasource:url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=utf8username: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driver
mybatis:mapper-locations: classpath:mapper/*.xml

3. 创建实体类(User.java为例)

public class User {private Long id;private String username;private String password;// 生成相应的Getter、Setter、构造函数等// 可以使用Lombok简化代码(添加Lombok依赖后使用相关注解)
}

4. 创建Mapper接口(UserMapper.java)

import org.apache.ibatis.annotations.Mapper;
import com.example.demo.model.User;@Mapper
public interface UserMapper {List<User> selectAllUsers();int insertUser(User user);// 可以定义更多操作数据库的方法,比如根据ID查询、更新、删除等
}

5. 创建Mapper对应的XML文件(UserMapper.xml,放在resources/mapper目录下)

<?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.example.demo.mapper.UserMapper"><select id="selectAllUsers" resultMap="UserResultMap">select * from user</select><insert id="insertUser" keyProperty="id" useGeneratedKeys="true">insert into user(username, password) values(#{username}, #{password})</insert><!-- 定义resultMap --><resultMap id="UserResultMap" type="com.example.demo.model.User"><id property="id" column="id" /><result property="username" column="username" /><result property="password" column="password" /></resultMap>
</mapper>

6. 创建Service层接口(UserService.java)

import java.util.List;
import com.example.demo.model.User;public interface UserService {List<User> getAllUsers();boolean addUser(User user);
}

7. 创建Service层接口实现类(UserServiceImpl.java)

import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import com.example.demo.service.UserService;@Service
@Transactional
public class UserServiceImpl implements UserService {private final UserMapper userMapper;public UserServiceImpl(UserMapper userMapper) {this.userMapper = userMapper;}@Overridepublic List<User> getAllUsers() {return userMapper.selectAllUsers();}@Overridepublic boolean addUser(User user) {return userMapper.insertUser(user) > 0;}
}

8. 创建Controller层(UserController.java)

import java.util.List;
import org.springframework.web.bind.annotation.*;
import com.example.demo.model.User;
import com.example.demo.service.UserService;@RestController
@RequestMapping("/users")
public class UserController {private final UserService userService;public UserController(UserService userService) {this.userService = userService;}// 获取所有用户列表@GetMappingpublic List<User> getUsers() {return userService.getAllUsers();}// 添加用户@PostMappingpublic boolean addUser(@RequestBody User user) {return userService.addUser(user);}
}

前端代码(Vue部分)

1. 创建Vue项目

使用vue-cli创建项目(确保已安装vue-cli,通过命令vue create your-project-name创建项目),选择相应的配置,比如是否使用RouterVuex等(这里简单示例可不选)。

2. 安装axios用于和后端交互(在项目目录下执行命令)

npm install axios

3. 创建组件(比如UserList.vue用于展示用户列表,AddUser.vue用于添加用户,这里以UserList.vue为例)

<template><div><h2>用户列表</h2><ul><li v-for="user in users" :key="user.id">{{ user.username }}</li></ul></div>
</template><script>
import axios from 'axios';
export default {data() {return {users: []};},mounted() {this.fetchUsers();},methods: {fetchUsers() {axios.get('http://localhost:8080/users')  // 根据后端实际部署的地址和端口修改.then(response => {this.users = response.data;}).catch(error => {console.log(error);});}}
};
</script>

4. 在main.js中注册组件并挂载到根实例(简单示例)

import Vue from 'vue';
import App from './App.vue';
import UserList from './components/UserList.vue';Vue.component('user-list', UserList);new Vue({render: h => h(App)
}).$mount('#app');

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

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

相关文章

活动策划还能这样做,效率提升看得见!

文档协同如何助力电商团队降本增效? 电商行业以快著称,活动运营的每一秒都可能决定销量的成败。然而,在紧张的时间表下,如何确保团队成员高效协同,是很多电商运营者面临的难题。文档协同成为破解这一问题的关键手段。 打破信息差,构建透明化流程 在大型电商活动中,信息孤…

用WPF实现桌面锁屏壁纸的应用

用WPF实现桌面锁屏壁纸的应用 目录用WPF实现桌面锁屏壁纸的应用需求分析需求方案实现App.xamlApp.xaml.csMainWindow.xamlMainWindow.xaml.csImportImageHelper.csKeyboardHookLib.cs壁纸 需求分析 需求存取数据库二进制文件轮播图片显示系统时间滑动解锁禁用键盘添加托盘图标开…

GaussDB技术解读高性能——分布式优化器

GaussDB技术解读高性能——分布式优化器 分布式数据库场景下表分布在各个节点上,数据的本地性Data Locality是分布式优化器中生成执行计划时重点考虑的因素,基于Share Nothing的分布式数据库中有一个很关键概念就是“移动数据不如移动计算”,之所以有数据本地性就是因为数据…

15隐藏元素-文本溢出-盒子模型的四个部分

一、元素隐藏方法 在HTML开发过程当中存在一些元素我们想要将一些元素隐藏起来,元素如果想要隐藏有哪些方式: (1)将display设置为none页面上不显示,但是HTML仍然存在 并且也不占据位置和空间了,后面的元素就会跑上来。 (2)visibility设置为hidden visibility这个单词是…

manim边学边做--突出显示

本篇介绍Manim中用于突出显示某些内容的动画类,主要包括:ApplyWave:让图形或文字产生连续波浪式变形的动画类,用于展示波动效果,参数可调节 Circumscribe:用于在几何场景中展示图形与其外接图形的关系,动画围绕对象生成外接图形 Flash:通过快速改变对象视觉属性产生闪烁…

今天是周三?

符合题墓的标题,朴实无华[WUSTCTF2020]朴实无华 首先打开页面,发现无信息含泪扫墓路,发现robots.txt访问其中的链接,此时发现http头中藏有一个路径直接访问,得到以下代码,有一点点乱码,用抓包软件打开即可发现代码分为三关,我们一关一关看 第一关:intval绕过 //level …

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-7-元素基础定位方式-下篇 (详细教程)

1.简介 上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的基础定位方式的理论基础知识以及在什么情况下推荐使用。今天这一篇讲解和分享一下剩下部分的基础定位方式。 2.过滤器定位 例如以下 DOM 结构,我们要在其中单击第二个产品卡的购买按钮。我…

实景三维赋能智慧城市时空基础设施建设

随着信息技术的飞速发展,智慧城市建设已成为全球城市发展的新趋势。实景三维技术作为智慧城市建设的重要支撑,对于构建时空基础设施具有不可替代的作用。本文将探讨实景三维技术如何为智慧城市的时空基础设施建设提供强大动力。一、智慧城市时空基础设施的挑战智慧城市的时空…

没有域名如何申请SSL证书

SSL证书一般多应用于域名上,可以保证网站里面的数据不会被泄露,加强网站安全,也加强浏览者的信任度。但是有一种特殊的情况,在网站没有域名或者域名还没有准备好的时候,只有IP地址,能否安装SSL证书呢,答案是可以的,本文将介绍IP SSL证书的应用场景和申请方式。 IP SSL证…

《DNK210使用指南 -CanMV版 V1.0》第四十四章 人脸68关键点检测实验

第四十四章 人脸68关键点检测实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/board…

性能优化相关总结

一、性能优化要从何入手1. 让加载更快2. 让渲染更快下面看一下这两方面分别要怎么优化 二、加载方面的优化想要页面加载更快,需要从资源体积、访问次数、网络入手1、减少资源体积压缩代码       2、减少访问次数资源合并多个js文件合并 多个css文件合并 多个小图标合并…