首页 > 其他分享 >SpringBoot与MyBatis-Plus的整合与综合实例

SpringBoot与MyBatis-Plus的整合与综合实例

时间:2024-09-28 17:20:15浏览次数:3  
标签:SpringBoot 用户 pjb Plus UserInfo MyBatis import com userInfo

MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程、以及高级映射。MyBatis3 提供的注解可以取代 XML。例如,使用注解 @Select 直接编写 SQL 完成数据查询。MyBatis-Plus 是一个对 MyBatis 进行增强的工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

下面将介绍 SpringBoot 与 MyBatis-Plus 的整合步骤。

官方文档:《MyBatis-Plus 官方文档》 

1、创建数据表

在MySQL数据库中创建用户信息表(tb_user),并添加数据。

-- 创建数据库
CREATE DATABASE IF NOT EXISTS db_admin;

-- 使用数据库
USE db_admin;

-- 判断数据表是否存在,存在则删除
DROP TABLE IF EXISTS tb_user;
 
-- 创建“用户信息”数据表
CREATE TABLE IF NOT EXISTS tb_user
( 
	user_id BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
	user_account VARCHAR(50) NOT NULL COMMENT '用户账号',
	user_password VARCHAR(50) NOT NULL COMMENT '用户密码',
	blog_name VARCHAR(50) COMMENT '博客信息',
	blog_url VARCHAR(50) NOT NULL COMMENT '博客地址'
) COMMENT = '用户信息表';
 
-- 添加数据
INSERT INTO tb_user(user_account,user_password,blog_name,blog_url) VALUES('pan_junbiao的博客','123456','您好,欢迎访问 pan_junbiao的博客','https://blog.csdn.net/pan_junbiao');

-- 查询数据
SELECT * FROM tb_user;

2、创建项目

(1)创建 SpringBoot 项目,项目结构如下图:

(2)添加 Maven 依赖

在 pom.xml 配置文件中添加 MyBatis-Plus、 MySQL 的 JDBC 数据库驱动、Lombok插件等依赖。

<!-- MyBatis-Plus 依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- MySQL的JDBC数据库驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

<!-- Lombok 依赖 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.34</version>
    <scope>provided</scope>
</dependency>

(3)配置相关信息

将默认的 application.properties 文件的后缀修改为“.yml”,即配置文件名称为:application.yml,并配置以下信息:

#Spring配置
spring:
  application:
    #项目名称
    name: ProjectManagement
  #DataSource数据源
  datasource:
    url: jdbc:mysql://localhost:3306/db_admin?useSSL=false&amp&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

#MybatisPlus配置
mybatis-plus:
  configuration:
    #配置日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2.1 创建实体类(Entity层)

在 com.pjb.pm.entity 包中,创建 UserInfo 类(用户信息实体类)。

package com.pjb.pm.entity;

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

/**
 * 用户信息实体类
 * @author pan_junbiao
 **/
@Data
@TableName("tb_user") //设置数据表名
public class UserInfo
{
    /**
     * 用户编号(主键、自增)
     */
    @TableId(type = IdType.AUTO) //主键生成策略:自增
    private Long userId;

    /**
     * 用户账号
     */
    private String userAccount;

    /**
     * 用户密码
     */
    private String userPassword;

    /**
     * 博客信息
     */
    private String blogName;

    /**
     * 博客地址
     */
    private String blogUrl;
}

2.2 数据库映射层(Mapper层)

在 com.pjb.pm.mapper 包中,创建 UserMapper 接口(用户信息 Mapper 动态代理接口)。

package com.pjb.pm.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pjb.pm.entity.UserInfo;
import org.apache.ibatis.annotations.Mapper;

/**
 * 用户信息 Mapper 动态代理接口
 * @author pan_junbiao
 **/
@Mapper
public interface UserMapper extends BaseMapper<UserInfo>
{
}

但是建议以后直接在 SpringBoot 启动类中加 @MapperScan("com.pjb.pm.mapper") 注解,这样会比较方便,不需要对每个 Mapper 都添加 @Mapper 注解。

package com.pjb.pm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.pjb.pm.mapper") //扫描mapper文件
public class ProjectManagementApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(ProjectManagementApplication.class, args);
        System.out.println("项目启动成功!");
    }
}

2.3 编写 Mapper 配置文件(静态文件)

在 resources/mapping 目录下,创建用户信息 Mapper 配置文件(UserMapper.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.pjb.pm.mapper.UserMapper">

</mapper>

 2.4 业务逻辑层(Service层)

在 com.pjb.pm.service 包下,创建 UserService 接口(用户信息服务接口),并继承 IService 接口。

package com.pjb.pm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pjb.pm.entity.UserInfo;

/**
 * 用户信息服务接口
 * @author pan_junbiao
 **/
public interface IUserService extends IService<UserInfo>
{
    /**
     * 查询用户信息
     */
    UserInfo getUserInfo(Long userId);

    /**
     * 根据条件,查询用户信息
     */
    UserInfo getUserInfoByAccount(String userAccount);

    /**
     * 新增用户信息
     */
    boolean addUserInfo(UserInfo userInfo);

    /**
     * 修改用户信息
     */
    boolean updateUserInfo(UserInfo userInfo);

    /**
     * 新增或修改用户信息
     */
    boolean saveOrUpdateUserInfo(UserInfo userInfo);

    /**
     * 删除用户信息
     */
    boolean deleteUserInfo(Long userId);
}

在 com.pjb.pm.service.impl 包下,创建 UserServiceImpl 类(用户信息服务类),并继承 ServiceImpl 类。

package com.pjb.pm.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pjb.pm.entity.UserInfo;
import com.pjb.pm.mapper.UserMapper;
import com.pjb.pm.service.IUserService;
import org.springframework.stereotype.Service;

/**
 * 用户信息服务类
 * @author pan_junbiao
 **/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserInfo> implements IUserService
{
    /**
     * 查询用户信息
     */
    @Override
    public UserInfo getUserInfo(Long userId)
    {
        UserInfo userInfo = this.getById(userId);
        return userInfo;
    }

    /**
     * 根据条件,查询用户信息
     */
    @Override
    public UserInfo getUserInfoByAccount(String userAccount)
    {
        //查询条件
        LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(UserInfo::getUserAccount,userAccount);

        //执行查询
        UserInfo userInfo = this.getOne(queryWrapper);
        return userInfo;
    }

    /**
     * 新增用户信息
     */
    @Override
    public boolean addUserInfo(UserInfo userInfo)
    {
        boolean result = this.save(userInfo);
        return result;
    }

    /**
     * 修改用户信息
     */
    @Override
    public boolean updateUserInfo(UserInfo userInfo)
    {
        boolean result = this.updateById(userInfo);
        return result;
    }

    /**
     * 新增或修改用户信息
     */
    @Override
    public boolean saveOrUpdateUserInfo(UserInfo userInfo)
    {
        boolean result = this.saveOrUpdate(userInfo);
        return result;
    }

    /**
     * 删除用户信息
     */
    @Override
    public boolean deleteUserInfo(Long userId)
    {
        boolean result = this.removeById(userId);
        return result;
    }

}

2.5 控制器方法(Controller层)

在 com.pjb.pm.controller 包中,创建 UserController 类(用户控制器),实现用户数据的查询、新增、修改、删除,并实现数据的返回。

package com.pjb.pm.controller;

import com.pjb.pm.entity.UserInfo;
import com.pjb.pm.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 用户信息控制器
 * @author pan_junbiao
 **/
@RestController
@RequestMapping("/user")
public class UserController
{
    @Autowired
    private IUserService userService;

    /**
     * 查询用户信息
     */
    @RequestMapping(value = "/getUserInfo/{id}", method = RequestMethod.GET)
    public UserInfo getUserInfo(@PathVariable("id") Long userId)
    {
        UserInfo userInfo = userService.getUserInfo(userId);
        return userInfo;
    }

    /**
     * 根据条件,查询用户信息
     */
    @RequestMapping(value = "/getUserInfoByAccount", method = RequestMethod.GET)
    public UserInfo getUserInfoByAccount(String userAccount)
    {
        UserInfo userInfo = userService.getUserInfoByAccount(userAccount);
        return userInfo;
    }

    /**
     * 新增用户信息
     */
    @RequestMapping(value = "/addUserInfo", method = RequestMethod.POST)
    public boolean addUserInfo(@RequestBody UserInfo userInfo)
    {
        boolean result = userService.addUserInfo(userInfo);
        return result;
    }

    /**
     * 修改用户信息
     */
    @RequestMapping(value = "/updateUserInfo", method = RequestMethod.POST)
    public boolean updateUserInfo(@RequestBody UserInfo userInfo)
    {
        boolean result = userService.updateUserInfo(userInfo);
        return result;
    }

    /**
     * 新增或修改用户信息
     */
    @RequestMapping(value = "/saveOrUpdateUserInfo", method = RequestMethod.POST)
    public boolean saveOrUpdateUserInfo(@RequestBody UserInfo userInfo)
    {
        boolean result = userService.saveOrUpdateUserInfo(userInfo);
        return result;
    }

    /**
     * 删除用户信息
     */
    @RequestMapping(value = "/deleteUserInfo/{id}", method = RequestMethod.POST)
    public boolean deleteUserInfo(@PathVariable("id") Long userId)
    {
        boolean result = userService.deleteUserInfo(userId);
        return result;
    }
}

3、综合实例

【实例】实现用户信息的查询、新增、修改、删除操作。

3.1 查询用户

查询用户信息,执行结果如下图:

3.2 根据条件,查询用户信息

根据条件,查询用户信息,执行结果如下图:

3.3 新增用户

新增用户信息,执行结果如下图:

标签:SpringBoot,用户,pjb,Plus,UserInfo,MyBatis,import,com,userInfo
From: https://blog.csdn.net/pan_junbiao/article/details/142597553

相关文章

  • MyBatis-Plus分页查询
    在实际开发中,对于大量数据的查询,可以通过分页查询的方式来减少查询量和提高查询效率。在MyBatis-Plus中,分页查询可以通过使用Page对象和IService接口提供的分页方法来实现。MyBatis-Plus的分页插件PaginationInnerInterceptor提供了强大的分页功能,支持多种数据库,使得......
  • Springboot实战——黑马点评之秒杀优化
    Springboot实战——黑马点评之秒杀优化1秒杀优化先来复习以下,秒杀优惠券业务的现有实现逻辑:以上流程图中的操作串行执行,效率极低。其中判断秒杀库存以及校验一人一单属于对数据库的读取,耗时较少;扣减库存以及创建订单属于对数据库的写操作,耗时相对较久。提升效率的......
  • 轻松上手MyBatis反向工程:从零到一的自动化代码生成
    前言反向工程概念:反向工程是从已有的具体实现(如数据库表结构)中推导出高层次的信息(如Java代码)的过程。在MyBatis中,它特指根据数据库表结构自动生成Java实体类、Mapper接口和XML映射文件。原理:MyBatis反向工程通过读取数据库表结构的元数据(如表名、字段名、字段类型等),然后利......
  • springboot基于java的酒店管理系统设计与实现(源码+文档+调试+vue+前后端分离)
    收藏关注不迷路!!......
  • java基于协同过滤算法的springboot的煤矿员工健康管理系统(源码+文档+调试+vue+前后端
    收藏关注不迷路!!......
  • DC00020基于springboot新闻网站系统java web项目MySQL新闻管理系统
    1、项目功能演示DC00020基于springboot新闻网站系统javaweb项目MySQL2、项目功能描述  基于springboot+vue新闻网站包括用户和系统管理员两个角色。2.1用户功能1、用户登录、用户注册2、新闻信息:点赞、点踩、收藏、查看3、用户分享:点赞、点踩、收藏、查看、添加......
  • 基于SpringBoot + Vue的校园人脸识别系统
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot + Vue的房屋租赁管理系统
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot + Vue的宠物领养饲养交流管理平台
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • Springboot轮滑竞赛管理系统gsj4e--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,比赛信息,比赛报名,比赛分类,成绩公布,裁判,评审打分,比赛通知,作品提交,奖项信息,比赛奖励开题报告内容一、课题名称轮滑竞赛管理系统开发与应用二、研......