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

news/2024/7/23 11:22:03 标签: java, 开发语言

🥳🥳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文件夹的注释

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

2.代码生成

①导入代码生成类

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

java">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层之中编写相关代码

java">@Autowired
    private IOaUserService oaUserService;

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

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

五. 使用MyBatis-Plus完成CURD

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

Controller

java">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;
    }

}

测试

增加

删除

修改

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


http://www.niftyadmin.cn/n/5266917.html

相关文章

【Avue】点击新增再点击表单得radio选项出现新表单,且编辑页面关不掉新表单处理方法

一、问题描述 1、点击新增 2、 点击radio选择值 1、点击否得时候没反应 2、点击是得时候出现新表单 2.1、旧代码 {label: 是否危险源,prop: isBigdanger,searchLabelWidth: 120,overHidden: true,span: 24,rules: [{required: true,message: 请选择是否重大危险源,trigger: bl…

人工智能自然语言处理:语言之美,算法之智

导言 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能领域中备受关注的分支&#xff0c;致力于让计算机能够理解、处理和生成人类语言。本文将深入研究人工智能在自然语言处理领域的关键技术、应用场景以及未来发展趋势。 1. 简介 自然语言处…

小程序使用Nodejs作为服务端,Nodejs与与MYSQL数据库相连

小程序使用Nodejs作为服务端,Nodejs与MYSQL数据库相连 一、搭建环境二、配置Nodejs三、与小程序交互四、跨域处理/报错处理五、nodejs连接mysql数据库六、微信小程序连接nodejs报错七、小程序成功与服务端相连,且能操作数据库一、搭建环境 新建空文件夹:Win + R进入cmd命令界…

正则表达式IP地址

正则表达式基础语法 正则表达式-字符类 [abc]&#xff1a;代表a或者b&#xff0c;或者c字符中的一个。 [^abc]&#xff1a;代表除a,b,c以外的任何字符。 [a-z]&#xff1a;代表a-z的所有小写字符中的一个。 [A-Z]&#xff1a;代表A-Z的所有大写字符中的一个。 [0-9]&#xff…

hadoop-yarn简介及常用命令详解(超详细)

文章目录 前言一、YARN概述1. YARN简介2. YARN架构(1) ResourceManager&#xff08;资源管理器&#xff09;(2) NodeManager&#xff08;节点管理器&#xff09;(3) ApplicationMaster&#xff08;应用程序管理器&#xff09; 3. YARN特点(1) 分布式资源管理(2) 多框架支持(3) …

zlib - 编译

文章目录 zlib - 编译概述笔记编译win10 vs2019的zlib版本测试编译出的zlibDLL自己新建一个vs2019工程来编译zlibDll备注备注END zlib - 编译 概述 账单分析程序写完了, 处理excel时用到了libxlsxwriter. 看了一下libxlsxwriter主页, 有新版本. 想自己编译一个libxlsxwriter…

最新Redis7主从复制(保姆级教程)

前提准备&#xff1a;三台云服务器&#xff08;吐血消费&#xff0c;点赞回血&#xff09;也可以使用虚拟机创建三台&#xff0c;但是我搞了一天也连接不上&#xff0c;要是又可以连接上的大家可以教我一下&#xff0c;也可以参考一下或者大家可以参考一下这个大佬的配置&#…

商业印刷市场分析:预计2029年将达到53004亿元

商业印刷技术显示了强大的生命力。电子商务的扩张性发展&#xff0c;传统的商务印刷行业也在逐渐的转型。中国印刷业已深度融入全球印刷加工产业链&#xff0c;为国际社会超过50个国家提供印刷包装服务。数据显示&#xff0c;中国印刷业对外加工贸易额已达842亿元。 商业印刷是…