🥳🥳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结构组成
核心模块(Core Module):核心模块包含了Mybatis-Plus的核心功能和基本组件。它提供了通用的Mapper接口、通用的CRUD方法的实现、条件构造器、分页插件等核心功能的实现。核心模块是整个框架的基础,其他模块都依赖于它。
代码生成器(Code Generator):代码生成器是一个可选的辅助工具,用于根据数据库表结构自动生成实体类、Mapper接口、XML映射文件等基础代码。通过代码生成器,开发者可以快速生成基础代码,减少手写重复代码的工作量。
扩展模块(Extension Module):扩展模块是Mybatis-Plus提供的一些扩展功能和增强组件的集合。它包括了一些常用的增强功能,如逻辑删除、字段自动填充、乐观锁等。开发者可以通过引入扩展模块,轻松地增加这些功能的支持。
注解(annotation):用于对实体类、Mapper接口以及SQL语句进行配置和标记。通过使用注解,可以简化配置文件的编写,提高代码的可读性和可维护性
三.为什么要使用MyBatis-Plus
简化开发流程:MyBatis-Plus提供了许多现成的功能和工具,如代码生成器、分页插件、性能分析插件等等,可以帮助开发者简化开发流程,减少重复劳动。
提高开发效率:MyBatis-Plus的各种功能和工具可以帮助开发者更快地实现数据库操作,减少手动编写重复的SQL语句,提高代码编写效率。
丰富的功能扩展:MyBatis-Plus提供了许多特殊功能,如自动映射、逻辑删除等,这些功能可以帮助开发者更方便地处理与数据库交互的问题。
更好的性能优化:MyBatis-Plus内置了一些性能优化的功能,如缓存管理、乐观锁等,可以帮助开发者提升数据库访问的性能。
社区支持和活跃度高:MyBatis-Plus拥有庞大的用户社区,有很多开发者积极参与其中,提供技术支持和解决问题,保证了项目的稳定性和可持续发展。
支持大量常用的数据库:例如: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; } }
测试
增加
删除
修改
好啦,今天的分享就到这了,希望能够帮到你呢!😊😊