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

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 新增用户

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值