Spring Boot 整合 MyBatis-Plus

本文详细介绍了如何在Spring Boot项目中整合MyBatis-Plus,包括快速上手步骤、常用注解解析,如@TableName、@TableId、@TableField等。此外,还展示了如何进行数据源配置、自定义SQL查询、分页查询、乐观锁实现、逻辑删除以及MyBatis Plus的代码生成工具。最后,讨论了项目的云端部署和Docker镜像打包。
摘要由CSDN通过智能技术生成

Mybatis Plus

国产的开源框架,基于MyBatis。核心功能就是简化MyBatis的开发,提高效率

MyBatis Plus快速上手

Spring Boot(2.5.3)+MyBatis Plus(国产开源框架,并没有接入Spring官方孵化器)

  1. 新建项目

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  2. 在pom文件中导入MyBatis Plus依赖(如果连接的是云服务器上的数据库,请配置数据库连接池)

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

    我的pom文件:

    <?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>2.5.3</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.ssakura</groupId>
    	<artifactId>mybatisplus</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>mybatisplus</name>
    	<description>Demo project for Spring Boot</description>
    	<properties>
    		<java.version>11</java.version>
    	</properties>
    	<dependencies>
    		<!-- MyBatis Plus依赖 -->
    		<dependency>
    			<groupId>com.baomidou</groupId>
    			<artifactId>mybatis-plus-boot-starter</artifactId>
    			<version>3.4.3.1</version>
    		</dependency>
    
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-thymeleaf</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<scope>runtime</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.2.5</version>
    		</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>
    
    
  3. 配置数据源信息

    在这里插入图片描述

  4. 新建表数据

    /*
     Navicat Premium Data Transfer
    
     Source Server         : sakura
     Source Server Type    : MySQL
     Source Server Version : 50734
     Source Schema         : mybatisplus
    
     Target Server Type    : MySQL
     Target Server Version : 50734
     File Encoding         : 65001
    
     Date: 10/08/2021 11:44:42
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `id` bigint(100) NOT NULL,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `age` int(11) NOT NULL,
      `create_time` datetime NULL DEFAULT NULL,
      `update_time` datetime NULL DEFAULT NULL,
      `flag` int(11) UNSIGNED NOT NULL DEFAULT 1,
      `status` int(11) NULL DEFAULT NULL,
      `deleted` int(11) NULL DEFAULT 0,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
    SET FOREIGN_KEY_CHECKS = 1;
    
    

    在这里插入图片描述

  5. 创建实体类

    package com.ssakura.mybatisplus.entity;
    
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    public class User {
         
        private Integer id;
        private String name;
        private Integer age;
    
        public User(String name, Integer age) {
         
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
         
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    
  6. 创建Mapper接口

    package com.ssakura.mybatisplus.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.ssakura.mybatisplus.entity.User;
    
    //动态代理(实现类是程序运行时动态生成,Mybatis-plus通过cjlib动态代理方式来实现)
    public interface UserMapper extends BaseMapper<User> {
         
        
        
    }
    
  7. 创建测试类

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  8. 测试,查询所有数据(selectList)

    package com.sakura.mybatisplus.mapper;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class UserMapperTest {
         
        @Autowired
        private UserMapper userMapper;
    
        @Test
        void test(){
         
            //查询所有数据
            //forEach方法是Java8的新特性,可以将结果集里面的数据遍历操作
            userMapper.selectList(null).forEach(System.out::println);
        }
    }
    

    加上@MapperScan注解,否则无法加载Mapper bean

    在这里插入图片描述

    在这里插入图片描述

  9. 查看BaseMapper里面的方法:

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by FernFlower decompiler)
    //
    
    package com.baomidou.mybatisplus.core.mapper;
    
    import com.baomidou.mybatisplus.core.conditions.Wrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import java.io.Serializable;
    import java.util.Collection;
    import java.util.List;
    import java.util.Map;
    import org.apache.ibatis.annotations.Param;
    
    public interface BaseMapper<T> extends Mapper<T> {
         
        int insert(T entity);
    
        int deleteById(Serializable id);
    
        int deleteByMap(@Param("cm") Map<String, Object> columnMap);
    
        int delete(@Param("ew") Wrapper<T> queryWrapper);
    
        int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);
    
        int updateById(@Param("et") T entity);
    
        int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
    
        T selectById(Serializable id);
    
        List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
    
        List<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zjojk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值