[SpringBoot---MyBatis-Plus] 多模块使用MyBatis-Plus

 ✨✨个人主页:沫洺的主页

📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                           📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                           📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

💖💖如果文章对你有所帮助请留下三连✨✨

☕MyBatis-Plus介绍

MyBatis-Plus(opens new window)(简称 MP)是一个 MyBatis(opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis-Plus官网

MyBatisPlus特性

  • 无侵入:只做增强不做改变,不会对现有工程产生影响

  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作

  • 支持 Lambda:编写查询条件无需担心字段写错

  • 支持主键自动生成

  • 内置分页插件

  • ……

🍣MyBatis-Plus使用

可参考官方的快速入门

数据库

多模块Spring Boot工程(练习可以使用单模块工程)

 主要依赖包

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.2</version>
</dependency>

具体依赖

父模块scm-root的pom.xml

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.8.5</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.2.9</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.4</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.5.2</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus</artifactId>
                <version>3.5.2</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

子模块scm-app的pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>com.moming</groupId>
            <artifactId>scm-service</artifactId>
            <version>14-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

子模块scm-dao的pom.xml

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
        </dependency>
        <dependency>
            <groupId>com.moming</groupId>
            <artifactId>scm-entity</artifactId>
            <version>14-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

子模块scm-entity的pom.xml

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
    </dependencies>

子模块scm-service的pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
        <dependency>
            <groupId>com.moming</groupId>
            <artifactId>scm-dao</artifactId>
            <version>14-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

scm-dao模块/scm-mapper模块(都可以,我用的dao(懒得改),既然是mybatis,建议用mapper,如果你用的是mapper模块,那么下面的dao都换成mapper,还有就是上面的子模块引入的dao模块换成mapper模块)

创建dao/ImagesMapper

package com.moming.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moming.entity.Images;

public interface  ImagesMapper extends BaseMapper<Images> {
}

scm-entity模块

创建entity/Images

这里注意表名和类名不一致要通过@TableName去指定表名

同样的表字段名和属性名不一致用@TableField去指定字段名

package com.moming.entity;

import cn.hutool.core.date.LocalDateTimeUtil;
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;

import java.time.LocalDateTime;

@Data
@TableName("scm_images")
public class Images {
    //自增,且不加入sql语句拼接
    @TableId(type = IdType.AUTO)
    private Integer id;
    @TableField("img")
    private String img;
    @TableField("createTime")
    private LocalDateTime createTime = LocalDateTimeUtil.now();
}

scm-service模块

创建service/ImagesService

package com.moming.service;

import com.moming.dao.ImagesMapper;
import com.moming.entity.Images;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ImagesService {
    @Autowired
    private ImagesMapper imagesMapper;

    public Integer add(Images images){
        return imagesMapper.insert(images);
    }

    public List<Images> select(){
        return imagesMapper.selectList(null);
    }
}

scm-app模块

application.yml配置数据库连接信息

#数据库连接信息配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db5?useSSL=false&useServerPrepStmts=true
    username: root
    password: 123456
    druid:
      initial-size: 10 # 初始化时建立物理连接的个数
      min-idle: 10 # 最小连接池数量
      maxActive: 200 # 最大连接池数量
      maxWait: 60000 # 获取连接时最大等待时间,单位毫秒
#映射文件所在位置
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  #别名
  type-aliases-package: com.moming.entity

#配置日志级别
logging:
  level:
#    root: error
    com.moming: info


rest:
  controller:
    advice:
      base-packages: com.moming.controller

创建controller/ImagesController

package com.moming.controller;

import com.moming.entity.Images;
import com.moming.service.ImagesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/images")
public class ImagesController {
    @Autowired
    private ImagesService imagesService;

    @PostMapping("/add")
    public Integer add(@RequestBody Images images){
        return imagesService.add(images);
    }
    @GetMapping("/select")
    public List<Images> select(){
        return imagesService.select();
    }

}

在 Spring Boot 启动类中添加@MapperScan注解,扫描 dao/mapper 文件夹

package com.moming;

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

@SpringBootApplication
@MapperScan("com.moming.dao")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

单元测试

ImagesMapper中的selectList()方法的参数为 MP 内置的条件封装器Wrapper,所以不填写就是无任何条件

package com.moming;

import com.moming.dao.ImagesMapper;
import com.moming.entity.Images;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class ScmAppTests {
    @Autowired
    private ImagesMapper imagesMapper;

    @Test
    void test1() {
        List<Images> images = imagesMapper.selectList(null);
        images.forEach(System.out::println);
    }

}

测试结果

 单模块的入门使用请参考官方的快速入门,不过官方用的是H2数据库,可以改为MySql数据库

🍰注解

官方注解说明

官方已经描述的很详细了,这里做一些常用的演示

@TableName

  • 描述:表名注解,标识实体类对应的表
  • 使用位置:实体类

@TableId

  • 描述:主键注解
  • 使用位置:实体类属性主键字段
  • 常用: @TableId(type = IdType.AUTO)默认自增

@TableField

  • 描述:字段注解(非主键)
  • 使用位置: 实体类属性上

FieldStrategy

  • 配合@TableField使用,如下插入忽略,修改忽略
  • @TableField(insertStrategy= FieldStrategy.IGNORED,updateStrategy = FieldStrategy.IGNORED)

@OrderBy

  • 描述:内置 SQL 默认指定排序,优先级低于 wrapper 条件查询
  • 默认倒序
@OrderBy(asc = true)//正序(不写就是正序)

🍨条件封装器Wrapper 

创建Wrapper对象

QueryWrapper wrapper = new QueryWrapper<T>();

常用方法

package com.moming;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.moming.dao.ImagesMapper;
import com.moming.entity.Images;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class ScmAppTests {
    @Autowired
    private ImagesMapper imagesMapper;

    @Test
    void selectTest() {
        //普通查询
        //List<Images> images = imagesMapper.selectList(null);
        //条件查询
        QueryWrapper<Images> wrapper1 = new QueryWrapper<>();
        //QueryWrapper<Images> wrapper1 = Wrappers.query();
        //等于
        //wrapper1.eq("img", "1.jpg");
        //大于等于
        //wrapper1.ge("id",2);
        //Integer minId=2;
        Integer minId=null;
        wrapper1.ge(minId!=null,"id",minId);
        //模糊
        wrapper1.like("img", "1");

        LambdaQueryWrapper<Images> wrapper2 = new LambdaQueryWrapper<>();
        wrapper2.like(Images::getImg,"2");
        List<Images> images = imagesMapper.selectList(wrapper2);
        images.forEach(System.out::println);
    }
    @Test
    void updateTest() {
        Images images = new Images();
        images.setId(3);
        images.setImg("333.jpg");
        //全字段修改
        //imagesMapper.updateById(images);
        //单字段修改
        //UpdateWrapper<Images> wrapper1 = new UpdateWrapper<>();
        UpdateWrapper<Images> wrapper1 = Wrappers.update();
        wrapper1.set("img", "333333.jpg");
        wrapper1.eq("id",3);
        //imagesMapper.update(null, wrapper1);

        LambdaUpdateWrapper<Images> wrapper2 = new LambdaUpdateWrapper<>();
        wrapper2.set(Images::getImg,"3.jpg");
        wrapper2.eq(Images::getId,3);
        imagesMapper.update(null, wrapper2);

    }
    @Test
    void deleteTest() {
        Images images = new Images();
        images.setId(3);
        //根据对象删除
        imagesMapper.deleteById(images);
        //根据具体id删除
        imagesMapper.deleteById(2);
        //多条删除
        imagesMapper.deleteBatchIds(CollUtil.newArrayList(1,2,3));
        
        UpdateWrapper<Images> wapper = Wrappers.update();
        wapper.eq("id",3);
        imagesMapper.delete(wapper);
    }
    //通过传统xml方式查询
    @Test
    void test1() {
        List<Images> tukuList = imagesMapper.select();
        tukuList.forEach(System.out::println);
    }
    //通过注解方式查询
    @Test
    void test2() {
        List<Images> tukuList = imagesMapper.select2();
        tukuList.forEach(System.out::println);
    }
}

补充支持传统的写sql方式

scm-dao模块

ImagesMapper

package com.moming.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moming.entity.Images;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface  ImagesMapper extends BaseMapper<Images> {
    List<Images> select();
    @Select("select *  from scm_images")
    List<Images> select2();
}

scm-app模块

application.yml配置

mybatis-plus:
  config-location: classpath:mapper/*Mapper.xml
  #别名
  type-aliases-package: com.moming.entity

创建resources/ImagesMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moming.dao.ImagesMapper">

    <select id="select" resultType="com.moming.entity.Images">
        select * from scm_images
    </select>
</mapper>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
要创建一个Spring Boot项目并整合MyBatis-Plus,你可以按照以下步骤进行操作: 1. 首先,在你的项目的pom.xml文件中添加MyBatis-Plus和MySQL驱动的依赖。你可以引用和中提供的示例代码来配置pom.xml文件。这将确保你的项目具有使用MyBatis-Plus和MySQL的必要依赖。 2. 接下来,创建一个用于定义数据库连接和其他配置的配置文件。你可以在Spring Boot的配置文件(application.properties或application.yaml)中添加以下配置信息: - 数据库连接配置:包括数据库的URL、用户名和密码等信息。 - MyBatis-Plus配置:你可以配置MyBatis-Plus的一些属性,比如自动填充、逻辑删除等。 你可以根据你的实际需求进行配置。 3. 然后,创建数据库表对应的实体类。你可以使用Java类来表示数据库表,并在类上使用注解来映射数据库字段和表。 4. 接下来,创建Mapper接口和Mapper.xml文件。Mapper接口用于定义数据库操作的方法,而Mapper.xml文件用于编写具体的SQL语句。你可以使用MyBatis-Plus的自动注入功能来简化这一过程。通过继承MyBatis-Plus提供的BaseMapper接口,你可以自动获得常见的CRUD操作方法。 5. 最后,编写业务逻辑代码并注入Mapper。在你的Service类中,你可以注入Mapper接口,并使用它来调用数据库操作方法。你可以根据你的实际需求编写其他业务逻辑代码。 运行你的Spring Boot项目后,你应该能够看到控制台输出一系列信息,表明Spring Boot项目成功整合了MyBatis-Plus。你可以参考中提供的示例代码来验证整合结果。 总结起来,创建Spring Boot项目并整合MyBatis-Plus的步骤包括:配置pom.xml文件、创建配置文件、定义实体类、创建Mapper接口和Mapper.xml文件、编写业务逻辑代码。你可以根据所提供的参考内容来详细了解每个步骤的具体实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沫洺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值