前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不会使用Spring boot写CRUD的前端不是好前端!

不会使用Spring boot写CRUD的前端不是好前端!

作者头像
用户6297767
发布2023-11-21 08:48:03
1900
发布2023-11-21 08:48:03
举报

前言

在开发Web应用程序时,CRUD(Create、Read、Update、Delete)是最基本的操作。为了简化开发过程并提高效率,我们可以使用一些成熟的框架和工具来实现CRUD操作。Spring Boot作为一个快速开发框架,而MyBatis-Plus则是一个高效的持久层框架,两者的结合可以帮助我们快速实现数据库操作。本文将详细介绍如何在Spring Boot项目中整合MyBatis-Plus,以便快速实现CRUD操作。

Spring boot项目整合MyBatis-Plus快速CRUD

  1. 概述
  2. 环境准备
  3. 创建Spring Boot项目
  4. 引入MyBatis-Plus依赖
  5. 配置数据库连接
  6. 创建包目录和添加注解
  7. 创建实体类和Mapper接口
  8. 实现CRUD操作
  9. 最后再创建路由控制器controller
  10. 总结

1. 概述

MyBatis-Plus是一个基于MyBatis的增强工具,提供了许多便捷的功能和方法,使得CRUD操作更加简单和高效。它能够自动生成基本的SQL语句,减少了手动编写SQL的工作量。结合Spring Boot,我们可以更方便地进行开发和管理。

2. 环境准备

在开始之前,确保你已经安装了以下环境:

  • JDK 1.8或以上版本
  • Maven(用于构建项目)
  • MySQL数据库

3. 创建Spring Boot项目

使用Spring Initializr创建一个新的Spring Boot项目。选择所需的项目元数据和依赖项,例如Web和MySQL驱动程序。点击生成项目,下载并导入到你的IDE中。

image.png
image.png

记得修改成自己需要的包路径,点击下一步

image.png
image.png

选择和自己jdk匹配的spring boot版本 不然项目会报错 选择常用的一些插件,然后点击完成,等待maven下载依赖即可

4. 引入MyBatis-Plus依赖

在项目的pom.xml文件中添加MyBatis-Plus的依赖项:

代码语言:javascript
复制
xmlCopy Code
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>最新版本</version>
</dependency>

我用的mybatis plus版本是3.5.3.1。记住jdk的版本和mybatis plus的版本要匹配不然也会出现问题。本人就踩过坑 ,这个版本要求自己查看官网文档即可

这里给出我的pom.xml文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>3.0.12</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com</groupId>
   <artifactId>backendVol</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>backend</name>
   <description>Demo project for Spring Boot</description>
   <properties>
       <java.version>17</java.version>
   </properties>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jdbc</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-jdbc</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.5.3.1</version>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>com.mysql</groupId>
           <artifactId>mysql-connector-j</artifactId>
           <scope>runtime</scope>
       </dependency>
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>


   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
               <configuration>
                   <excludes>
                       <exclude>
                           <groupId>org.projectlombok</groupId>
                           <artifactId>lombok</artifactId>
                       </exclude>
                   </excludes>
               </configuration>
           </plugin>
       </plugins>
   </build>

</project>

5. 配置数据库连接

application.propertiesapplication.yml文件中配置数据库连接信息,包括数据库URL、用户名和密码等。

代码语言:javascript
复制
#端口号9090
server:
  port: 9999

#数据库名:mysql,用户名root,密码123456
spring:
  datasource:
    username: root
    password: 1111111
    url: jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&amp
    driver-class-name: com.mysql.cj.jdbc.Driver



# mybatis-plus配置
mybatis-plus:
  # xml文件位置
  mapper-locations: classpath:mybatis/**/*Mapper.xml
  # 开启驼峰命名
  configuration:
    map-underscore-to-camel-case: true
    # 开启sql显示
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

6. 创建包目录和添加注解

image.png
image.png

我们在启动类里面添加@SpringBootApplication,@MapperScan("com.backendvol.mapper") 这两个注解

7. 创建实体类和Mapper接口

创建一个Java类表示数据库表的实体,使用@Table注解指定表名和主键字段。然后创建一个继承自BaseMapper的Mapper接口,用于定义CRUD操作的方法。 在entity包里面创建User实体类

代码语言:javascript
复制
package com.backendvol.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@TableName(value = "user")
@Data
public class UserEntity {
    @TableId(value = "userId",type = IdType.AUTO)
    private Integer userId;

    @TableField("userName")
    private String userName;

    @TableField("userRole")
    private Integer userRole;

    @TableField("userPwd")
    private String userPwd;

    @TableField("userPic")
    private String userPic;

    @TableField("userTel")
    private String userTel;

    @TableField("userHobby")
    private String userHobby;

    @TableField("userVolDesc")
    private String userVolDesc;

    @TableField("userAge")
    private int userAge;
}

这里使用的是mybatis plus的注解@TableName(value = "user")@TableField,以及插件 lombok的@Data注解

在mapper包创建Mapper接口

代码语言:javascript
复制
package com.backendvol.mapper;

import com.backendvol.entity.UserEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
        // 自定义查询方法,例如根据用户名和密码查询用户信息
        @Select("select * from user where userName = #{username} and userPwd = #{password}")
        UserEntity selectByUsernameAndPwd(@Param("username") String username ,@Param("password") String password);

        // 自定义查询方法,例如根据用户名用户信息
        @Select("select * from user where userName = #{username}  ")
        UserEntity selectByUsername (@Param("username") String username  );

}

8. 实现CRUD操作

在service里面创建impl包 在Service层中调用Mapper接口的方法,即可实现对数据库表的CRUD操作。 创建service的的接口

代码语言:javascript
复制
package com.backendvol.service;


import com.backendvol.entity.UserEntity;
import com.backendvol.utils.Result;
import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<UserEntity> {
     
}

创建service的的接口实现类 例如,在UserService中编写如下代码:

代码语言:javascript
复制
package com.backendvol.service.impl;

import com.backendvol.entity.UserEntity;
import com.backendvol.mapper.UserMapper;
import com.backendvol.service.UserService;
import com.backendvol.utils.Result;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;


@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {


    private final UserMapper userMapper;

    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public Result login(String username, String password) {
        UserEntity user = userMapper.selectByUsernameAndPwd(username, password);

        System.out.println(user + "登陆用户");

        if (user != null && user.getUserPwd().equals(password)) {
            return Result.success("登陆成功",user);
        }

        return Result.fail("用户名或密码错误");
    }

    @Override
    public Result register(UserEntity UserEntity) {
        UserEntity user = userMapper.selectByUsername(UserEntity.getUserName());

        if (user != null) {
            return Result.fail("用户名已存在,请输入其他用户名");
        }
        userMapper.insert(UserEntity);
        UserEntity user2 = userMapper.selectByUsername(UserEntity.getUserName());
        return Result.success("注册成功",user2);

    }
}

对返回值做统一的封装

代码语言:javascript
复制
package com.backendvol.utils;

import lombok.Data;
import org.springframework.data.relational.core.sql.In;

import java.io.Serializable;

/**
 * 封装统一的返回结果
 */
@Data
public class Result implements Serializable {
    private Integer code;
    private String msg;
    private Object data;
    public static Result success(Object data) {
        Result m = new Result();
        m.setCode(200);
        m.setData(data);
        m.setMsg("操作成功");
        return m;
    }
    public static Result success(String mess, Object data) {
        Result m = new Result();
        m.setCode(200);
        m.setData(data);
        m.setMsg(mess);
        return m;
    }
    public static Result fail(String mess) {
        Result m = new Result();
        m.setCode(500);
        m.setData(null);
        m.setMsg(mess);
        return m;
    }
    public static Result fail(String mess, Object data) {
        Result m = new Result();
        m.setCode(500);
        m.setData(data);
        m.setMsg(mess);
        return m;
    }
}

9.最后再创建路由控制器controller

代码语言:javascript
复制
package com.backendvol.controller;

import com.backendvol.entity.UserEntity;
import com.backendvol.service.UserService;
import com.backendvol.utils.Result;
import org.springframework.web.bind.annotation.*;

import java.sql.Wrapper;


@RestController
@RequestMapping("/user")
public class UserController {

    private final UserService UserService;

    public UserController(UserService userService) {
        UserService = userService;
    }

    //增加用户
    @PostMapping("/add")
    public Boolean add(@RequestBody UserEntity UserEntity) {
        return UserService.save(UserEntity);
    }

    //删除
    @GetMapping("delete/{id}")
    public Boolean delete(@PathVariable Integer id) {
        return UserService.removeById(id);
    }

    //修改
    @PostMapping("/update")
    public Boolean update(@RequestBody UserEntity UserEntity) {
        return UserService.updateById(UserEntity);
    }

    //查询
    @GetMapping("/get/{id}")
    public UserEntity get(@PathVariable Integer id) {
        return UserService.getById(id);
    }

    //查询全部
    @GetMapping("/list")
    public Result list() {
        return Result.success("测试", UserService.list());
    }

    //登陆接口
    @PostMapping("/login")
    public Result login(@RequestBody UserEntity userEntity) {
        return UserService.login(userEntity.getUserName(), userEntity.getUserPwd());
    }

    //注册接口
    @PostMapping("/register")
    public Result register(@RequestBody UserEntity userEntity) {
        return UserService.register(userEntity);
    }
}

基本上都不用写sql语句了(复杂的除外)。

运行测试一下接口。

image.png
image.png

10. 总结

通过整合Spring Boot和MyBatis-Plus,我们可以快速实现数据库的CRUD操作。MyBatis-Plus提供了许多便捷的功能和方法,使得开发更加高效。在本文中,我们介绍了整合的步骤,包括依赖的引入、数据库连接的配置、实体类和Mapper接口的创建以及Mapper XML文件的编写。希望本文对你在Spring Boot项目中整合MyBatis-Plus并快速实现CRUD操作有所帮助。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1. 概述
  • 2. 环境准备
  • 3. 创建Spring Boot项目
  • 4. 引入MyBatis-Plus依赖
  • 5. 配置数据库连接
  • 6. 创建包目录和添加注解
  • 7. 创建实体类和Mapper接口
  • 8. 实现CRUD操作
  • 9.最后再创建路由控制器controller
  • 10. 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档