【MyBatis-Plus】简化你的Java持久层开发

发布时间:2023年12月18日

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于MyBatis-Plus的相关操作吧?

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.MyBatis-Plus是什么

二.MyBatis-Plus结构组成

三.为什么要使用MyBatis-Plus

四. 怎么使用MyBatis-Plus

1.引入相关依赖及配置

①pom依赖

②yml配置

??注:

2.代码生成

①导入代码生成类

②运行生成代码的方法

3.使用mybatis

五.?使用MyBatis-Plus完成CURD

Controller

测试


一.MyBatis-Plus是什么

????????MyBatis-Plus是一个基于MyBatis的增强工具包,简化了MyBatis的开发过程,提高了开发效率。它提供了许多现成的功能和工具,如代码生成器、分页插件、性能分析插件、乐观锁插件等等。这些插件可以帮助开发者更快地开发出高质量、高效率的MyBatis应用程序。

????????除此之外,MyBatis-Plus还提供了一些特殊的功能,如@TableName注解可以自动将Java类与数据库表进行映射,@TableField注解可以配置字段属性,@TableLogic注解可以实现逻辑删除等等。这些功能可以使开发者更方便地处理与数据库交互的问题,使项目开发变得更加轻松。

????????总之,MyBatis-Plus是一个非常实用的MyBatis增强工具包,可以为开发者提供很多便利和支持

二.MyBatis-Plus结构组成

  1. 核心模块(Core Module):核心模块包含了Mybatis-Plus的核心功能和基本组件。它提供了通用的Mapper接口、通用的CRUD方法的实现、条件构造器、分页插件等核心功能的实现。核心模块是整个框架的基础,其他模块都依赖于它。

  2. 代码生成器(Code Generator):代码生成器是一个可选的辅助工具,用于根据数据库表结构自动生成实体类、Mapper接口、XML映射文件等基础代码。通过代码生成器,开发者可以快速生成基础代码,减少手写重复代码的工作量。

  3. 扩展模块(Extension Module):扩展模块是Mybatis-Plus提供的一些扩展功能和增强组件的集合。它包括了一些常用的增强功能,如逻辑删除、字段自动填充、乐观锁等。开发者可以通过引入扩展模块,轻松地增加这些功能的支持。

  4. 注解(annotation):用于对实体类、Mapper接口以及SQL语句进行配置和标记。通过使用注解,可以简化配置文件的编写,提高代码的可读性和可维护性

三.为什么要使用MyBatis-Plus

  1. 简化开发流程:MyBatis-Plus提供了许多现成的功能和工具,如代码生成器、分页插件、性能分析插件等等,可以帮助开发者简化开发流程,减少重复劳动。

  2. 提高开发效率:MyBatis-Plus的各种功能和工具可以帮助开发者更快地实现数据库操作,减少手动编写重复的SQL语句,提高代码编写效率。

  3. 丰富的功能扩展:MyBatis-Plus提供了许多特殊功能,如自动映射、逻辑删除等,这些功能可以帮助开发者更方便地处理与数据库交互的问题。

  4. 更好的性能优化:MyBatis-Plus内置了一些性能优化的功能,如缓存管理、乐观锁等,可以帮助开发者提升数据库访问的性能。

  5. 社区支持和活跃度高:MyBatis-Plus拥有庞大的用户社区,有很多开发者积极参与其中,提供技术支持和解决问题,保证了项目的稳定性和可持续发展。

  6. 支持大量常用的数据库:例如:MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift
    - 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库

总之,使用MyBatis-Plus可以简化开发流程、提高开发效率、提供丰富的功能扩展和性能优化,使开发者能够更快地开发出高质量的MyBatis应用程序

四. 怎么使用MyBatis-Plus

1.引入相关依赖及配置

①pom依赖

 <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!--mybatis-plus的生成插件-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>

②yml配置

#mybatis-plus的配置
mybatis-plus:
    # Mybatis Mapper所对应的XML位置
    mapper-locations: classpath:mapper/*.xml
    # 别名包扫描路径
    type-aliases-package: com.wh.springboot.model
    # 是否开启自动驼峰命名规则(camel case)映射
    configuration:
        map-underscore-to-camel-case: true

??注:

要在启动类中加上一个扫描mapper文件夹的注释

@MapperScan({"com.wh.springboot.mapper"})

2.代码生成

①导入代码生成类

其中的用户名、密码、数据库、生成包名及其他类的名称需要进行更改

package com.wh.springboot.mybatisplus;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

@Slf4j
public class MySQLGenerator {

    private final static String URL = "jdbc:mysql://localhost:3306/bookshop";
    private final static String USERNAME = "root";
    private final static String PASSWORD = "123456";

    private final static DataSourceConfig.Builder DATA_SOURCE_CONFIG =
            new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);

    public static void main(String[] args) {
        FastAutoGenerator.create(DATA_SOURCE_CONFIG)
                .globalConfig(
                        (scanner, builder) ->
                                builder.author(scanner.apply("请输入作者名称?"))
                                        .outputDir(System.getProperty("user.dir") + "\\src\\main\\java")
                                        .commentDate("yyyy-MM-dd")
                                        .dateType(DateType.TIME_PACK)
                )
                .packageConfig((builder) ->
                        builder.parent("com.wh.springboot")
                                .entity("model")
                                .service("service")
                                .serviceImpl("service.impl")
                                .mapper("mapper")
                                .xml("mapper.xml")
                                .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"))
                )
                .injectionConfig((builder) ->
                        builder.beforeOutputFile(
                                (a, b) -> log.warn("tableInfo: " + a.getEntityName())
                        )
                )
                .strategyConfig((scanner, builder) ->
                        builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                                .addTablePrefix("tb_", "t_", "lay_", "meeting_", "sys_")
                                .entityBuilder()
                                .enableChainModel()
                                .enableLombok()
                                .enableTableFieldAnnotation()
                                .controllerBuilder()
                                .enableRestStyle()
                                .enableHyphenStyle()
                                .build()
                )
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }

    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

}

②运行生成代码的方法

运行生成代码的方法,生成代码

生成代码前,输入特定的信息

代码生成完毕会弹出一个弹窗(可设置关闭弹窗)

这个与mybatis不同,它还会生成service层以及controller层的类

3.使用mybatis

虽然它会生成controller层,但是controller层之中没有代码

所以我们需要在controller层之中编写相关代码

@Autowired
    private IOaUserService oaUserService;

    @RequestMapping("/list")
    public Object  list(){
        List<OaUser> list = oaUserService.list();
        return list;
    }

然后在浏览器中访问所写方法的相关路径

五.?使用MyBatis-Plus完成CURD

前面已经完成了查询,这里我们就完成增删改便可

Controller

package com.wh.springboot.controller;

import com.wh.springboot.model.OaUser;
import com.wh.springboot.model.TBook;
import com.wh.springboot.service.IOaUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author wh
 * @since 2023-12-16
 */
@RestController
@RequestMapping("/oa-user")
public class OaUserController {
    @Autowired
    private IOaUserService oaUserService;

    /**
     * 查询
     * @return
     */
    @RequestMapping("/list")
    public Object  list(){
        List<OaUser> list = oaUserService.list();
        return list;
    }

    /**
     * 增加
     * @param oaUser
     * @return
     */
    @RequestMapping("/add")
    public Map add(OaUser oaUser){
        oaUserService.save(oaUser);
        Map map = new HashMap();
        map.put("coed",200);
        map.put("msg","添加成功");
        return map ;
    }

    /**
     * 删除
     * @param oaUser
     * @return
     */
    @RequestMapping("/del")
    public Map  del(OaUser oaUser){
        oaUserService.removeById(oaUser);
        Map map = new HashMap();
        map.put("coed",200);
        map.put("msg","删除成功");
        return map;
    }

    /**
     * 修改
     * @param oaUser
     * @return
     */
    @RequestMapping("/edit")
    public Map edit(OaUser oaUser){
        oaUserService.updateById(oaUser);
        Map map = new HashMap();
        map.put("coed",200);
        map.put("msg","修改成功");
        return map;
    }

}

测试

增加

删除

修改

?好啦,今天的分享就到这了,希望能够帮到你呢!😊😊?

文章来源:https://blog.csdn.net/m0_74315688/article/details/135028553
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。