spring boot使用mybatisplus访问mysql的配置流程

网上教程大多教人新建一个带对应组件的项目,本文记录如何在一个已有springboot2.x项目中,配置使用mybatisplus来访问mysql。包括使用wrapper和自己写mapper.xml的自定义函数两种和数据库交互的方式。

关于项目的创建,参考创建springboot 2.x web空项目(IDEA),本文使用的项目即为按该链接创建的空项目。

项目配置前提:需要一个配置好的MySQL数据库,并建立相应的角色和数据表。

实现内容:1.通过wrapper实现的增删改查;2.通过自定义mapper.xml实现的通过id查找数据。

正文

1.打开项目

打开需要操作的项目,这里打开了一个空项目,项目文件结构如图所示。

2.添加依赖项

在pom.xml中添加依赖,添加位置是Dependencies标签之间,添加内容如下

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency>

可修改版本号为自己喜欢的版本(删除现有版本号会自动提示),其中若发现程序有错需要改回来!!!加好之后的样子

3.添加配置

在application.yml中添加相关配置,数据库的IP端口、用户名、密码需要换成自己的。mapper-locations中的classpath指的是resource文件夹,添加完成之后有爆红,需要重新加载项目。

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=GMT%2B8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
#
mybatis-plus:mapper-locations: classpath:mapper/*.xml                #对应mapper映射xml文件所在路径type-aliases-package: com.example.demo.entity          #对应实体类路径

添加完成之后内容如下(仅使用简单的wrapper而不自定义一些数据库的方法的话,mapper-locations不要也可以)

在资源管理器右键项目名,在maven子选项中选择重新加载项目。

最终效果就是yml文件中刚刚爆红的内容不爆红了,就不放图了。

4.新增entity实体

提前说明:本文使用了一个名为user的表,表里只有id和name两个字段。项目本身带有demos.web的文件夹,里面也有user相关的内容,这和本文内容无关,本文内容是直接在demo目录下创建的,选择的时候别选错了。

4.1新建entity

在demo下新建文件夹entity并在里面新建实体类User.java,输入内容如下

@Data
public class User {private int id;
private String name;
}

结果如下

5.新增mapper

5.1新建mapper

在demo下新建文件夹mapper并新建接口UserMapper

5.2新增mapper.xml(可选)

由于增删改查使用的是BaseMapper类写好的方法,可以通过wrapper直接调用。因此这里只需要写出按id查数据这个自定义的数据接口就可以了,如果仅使用wrapper相关的内容,可以不用做这一步。

mapper文件夹下的UserMapper接口类新增内容如下

List<User> finduserbyid(int id);

在resource下新建mapper文件夹,并新建usermapping.xml,添加以下内容。xml的对齐功能比较难用,可能需要手工对齐成自己喜欢的样子。

<?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="finduserbyid" resultType="com.example.demo.entity.User">select * from user where id = #{id}</select>
</mapper>

6.创建userservice及userserviceimpl

其中UserService内容为,其中前四个增删改查用的,最后一个为自定义查询函数用的,可以按需要删减。

package com.example.demo.service;import com.example.demo.entity.User;import java.util.List;public interface UserService {public String add(String name);public List<User> query();public String update(int id, String name);public String delete(int id);public List<User> finduserbyid(int id);
}

userServiceImpl内容为

package com.example.demo.service.Impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceimpl implements UserService {@Autowiredprivate UserMapper userMapper;public String add(String name) {User user = new User();user.setName(name);userMapper.insert(user);return "操作成功";}public List<User> query() {LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();return userMapper.selectList(queryWrapper);}public String update(int id, String name) {LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.set(User::getName, name);updateWrapper.eq(User::getId, id);userMapper.update(updateWrapper);return "操作成功";}public String delete(int id) {LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(User::getId, id);userMapper.delete(queryWrapper);return "操作成功";}public List<User> finduserbyid(int id) {return userMapper.finduserbyid(id);}
}

serviceimpl对应了service里面定义的函数,实际截图不放了,有点长,反正一样的。。。

7.添加controller

demo目录下创建controller文件夹,并创建UserController

添加内容

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("myuser")
public class UserController {@Autowiredpublic UserService userService;@PostMapping(value = "add")public String add(@RequestParam(value = "name") String name) {return userService.add(name);}@GetMapping(value = "query")public List<User> query() {return userService.query();}@PostMapping(value = "update")public String update(@RequestParam(value = "id") int id, @RequestParam(value = "name") String name) {return userService.update(id, name);}@PostMapping(value = "delete")public String delete(@RequestParam(value = "id") int id) {return userService.delete(id);}@GetMapping(value = "find")public List<User> finduserbyid(@RequestParam(value = "id") int id){return userService.finduserbyid(id);}
}

8.主程序加注解

在主程序加

@MapperScan("com.example.demo.mapper")

9.项目,启动!

右键DemoApplication运行,并通过浏览器访问localhost:8080/myuser/query

看到数据库中随便插入的数据。

通过访问localhost:8080/myuser/find?id=1可以看到查询的结果

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

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

相关文章

Shell正则表达式

目录 正则表达式的分类 基本组成部分 POSIX字符类 元字符 正则表达式的分类 基本的正则表达式&#xff08;Basic Regular Expression 又叫Basic RegEx 简称BREs&#xff09;扩展的正则表达式&#xff08;Extended Regular Expression 又叫Extended RegEx 简称EREs&#xf…

pytest生成allure的报告

首先要下载安装配置allure allure serve ./outputs/allure_report 可以生成html的文件自动在默认浏览器中打开

unity3d Animal Controller的动物组件使用明天继续

控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…

牛角表情生成器微信小程序版

1.纯前端输出&#xff0c;无需后台&#xff0c;无需域名&#xff0c;速度杠杠快&#xff01; 2.完美支持微信端和抖音端&#xff1b; 3.双端均支持配置开启流量主广告&#xff0c;包括&#xff1a;激励视频广告、插屏广告、banner广告、原生广告、封面广告等&#xff1b; 4.…

Codeforces Round 933 (Div. 3) A~D

比赛链接 : codeforces.com/contest/1941 A . Rudolf and the Ticket 直接暴力即可 ; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \n #define lowbit(x) (x&(-x)) #define sz(a) (int)a.size() #define p…

最好用的流程编辑器bpmn-js系列之基本使用

BPMN&#xff08;Business Process Modeling Notation&#xff09;是由业务流程管理倡议组织BPMI&#xff08;The Business Process Management Initiative&#xff09;开发的一套标准的业务流程建模符号规范。其目的是为用户提供一套容易理解的标准符号&#xff0c;这些符号作…

数学建模理论与实践国防科大版

目录 1.数学建模概论 2.生活中的数学建模 2.1.行走步长问题 2.2.雨中行走问题 2.3.抽奖策略 2.4.《非诚勿扰》女生的“最优选择” 3.集体决策模型 3.1.简单多数规则 3.2.Borda数规则 3.3.群体决策模型公理和阿罗定理 1.数学建模概论 1.数学模型的概念 2.数学建模的概…

前端之用html做一个用户登陆界面

用户登陆界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>用户注册页面</title></head> <body><form action"https://www.baidu.com" method"post">…

数据库系统概念(第二周 第一堂)

前言 本文的所有知识点、图片均来自《数据库系统概念》&#xff08;黑宝书&#xff09;、山东大学李晖老师PPT。不可用于商业用途转发。 回顾 上周最后一个知识点说到数据库三级模式结构&#xff0c;在这个结构里面我们设立了模式/内模式映像、内模式/外模式映像&#xff0c;主…

服务器被大流量攻击怎么办?如何防御攻击?

随着网络的发展&#xff0c;我们所遇到的安全挑战也越来越多。尤其是近年来&#xff0c;网络攻击频发&#xff0c;许多互联网企业深受其扰。为了不影响自身业务的稳定运行&#xff0c;许多企业都在想方设法的寻求解决方案&#xff0c;防止服务器被攻击而影响业务发展。下面我们…

云起云落:揭秘云计算基础内功心法

文章目录 云计算基本概念云计算发展历程云计算计算模式云计算商业模式云计算部署模式私有云部署公有云部署混合云部署 云计算虚拟化技术虚拟机模式虚拟化容器模式虚拟化容器VS虚拟机 常见虚拟化工具和技术虚拟化工具“轻量级”虚拟化工具 云计算供应商云计算三要点&#xff08;…

【Node.js相关问题】npm install报错后重装node版本及npm环境变量配置及npm run dev启动报错原因分析解决办法

一、问题描述 昨天在准备打开b站up主三更草堂的博客项目08-02.基础版本前端联调_哔哩哔哩_bilibili中的前端工程时&#xff0c;使用以下两个命令分别都出现了报错。 命令1&#xff1a; # install dependenciesnpm install 命令2&#xff1a; # serve with hot reload at loca…

服务器加密机的工作原理是什么

服务器加密机在现代信息社会中扮演着至关重要的角色。它是确保服务器数据安全、保障数据传输机密性&#xff0c;以及防范恶意攻击和网络窃取的关键技术手段。本文将对服务器加密机进行详细解读&#xff0c;分析其原理、应用以及在未来发展中的重要性。 服务器加密机是一种专门用…

跨境电商选品实战——Ownips静态ip代理+Python爬虫轻松搞定Lazada电商选品

文章目录 一、引言二、Lazada电商平台爬虫实战2.1、分析Lazada电商平台的商品列表接口2.2、定位商品列表计算逻辑2.3、封装IP代理2.4、运行爬虫 三、数据处理及选品分析四、Ownips——企业级全球静态IP代理 一、引言 互联网与外贸的结合&#xff0c;催生了蓬勃兴起的跨境电子商…

vue的router

目前单页应用&#xff08;SPA&#xff09;越来越成为前端主流&#xff0c;单页应用一大特点就是使用前端路由&#xff0c;由前端来直接控制路由跳转逻辑&#xff0c;而不再由后端人员控制&#xff0c;这给了前端更多的自由。 当用户在应用中进行导航时&#xff0c;Vue Router …

基于EasyCVR视频技术的流媒体视频融合与汇聚管理系统建设方案

流媒体视频融合与汇聚管理系统可以实现对各类模块化服务进行统一管理和配置等操作&#xff0c;可实现对应用服务的整合、管理及共享&#xff0c;以标准接口的方式&#xff0c;业务平台及其他第三方业务平台可以方便地调用各类数据&#xff0c;具有开放性和可扩展性。在流媒体视…

122. 买卖股票的最佳时机 II(力扣LeetCode)

文章目录 122. 买卖股票的最佳时机 II题目描述贪心 122. 买卖股票的最佳时机 II 题目描述 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。…

【强化学习抓取】偏机器人领域(略)

文章目录 1. A Grasp Pose is All You Need: Learning Multi-fingered Grasping with Deep Reinforcement Learning from Vision and Touch摘要和结论引言相关工作模型框架 1. A Grasp Pose is All You Need: Learning Multi-fingered Grasping with Deep Reinforcement Learni…

基于PPT战略的河南嵩县旅游扶贫模式研究

目录 摘 要 3 Abstract 3 &#xff08;一&#xff09;研究背景 4 &#xff08;二&#xff09;研究意义 5 &#xff08;三&#xff09;研究目的 6 二、概念界定及相关研究 6 &#xff08;一&#xff09;PPT战略 6 &#xff08;二&#xff09;PPT战略相关研究 6 &#xff08;三&…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的常见手势识别系统(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;开发手势识别系统对于增强人机交互和智能家居控制领域的体验非常关键。本博客详尽阐述了通过深度学习技术构建手势识别系统的过程&#xff0c;并附上了全套实施代码。系统采用了先进的YOLOv8算法&#xff0c;并通过与YOLOv7、YOLOv6、YOLOv5的性能对比&#xf…