身为一个程序员连MP都不知道? - Go语言中文社区

身为一个程序员连MP都不知道?


简介

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

MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

身为一个程序员连MP都不知道?

 

小编整理出来一份MP134页的详情介绍pdf文档,点赞+关注私信小编“资料”免费获取;下面给大家展示部分内容。

看图 ↓

身为一个程序员连MP都不知道?

 

特性、优点

  1. 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  2. 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  3. 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部 分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  4. 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  5. 支持主自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可 自由配置,完美解决主键问题
  6. 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即 可进行强大的 CRUD 操作
  7. 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  8. 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  9. 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页 等同于普通 List 查询
  10. 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、 Postgre、SQLServer 等多种数据库
  11. 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪 出慢查询
  12. 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则, 预防误操作

核心功能

一、代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发 效率。

演示效果图:

身为一个程序员连MP都不知道?

 

二、强大的CRUD接口

Mapper CRUD 接口

  • 通用 CRUD 封装BaseMapper 接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转 换为 Mybatis 内部对象注入容器
  • 泛型 T 为任意实体对象
  • 参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都 有自己的唯一 id 主键
  • 对象 Wrapper 为 条件构造器

身为一个程序员连MP都不知道?

 

Service CRUD 接口

  • 通用 Service CRUD 封装IService 接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆
  • 泛型 T 为任意实体对象
  • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
  • 对象 Wrapper 为 条件构造器

身为一个程序员连MP都不知道?

 

身为一个程序员连MP都不知道?

 

条件构造器

  • 以下出现的第一个入参 boolean condition 表示该条件是否加入最后生成的sql中
  • 以下代码块内的多个方法均为从上往下补全个别 boolean 类型的入参,默认为 true
  • 以下出现的泛型 Param 均为 Wrapper 的子类实例(均具有 AbstractWrapper 的所有方法)
  • 以下方法在入参中出现的 R 为泛型,在普通wrapper中是 String ,在LambdaWrapper中是函 数(例: Entity::getId , Entity 为实体类, getId 为字段 id 的getMethod)
  • 以下方法入参中的 R column 均表示数据库字段,当 R 具体类型为 String 时则为数据库字段 名(字段名是数据库关键字的自己用转义符包裹!)!而不是实体类数据字段名!!!,另当 R 具体类 型为 SFunction 该项目runtime不支持eclipse自家的编译器!!!
  • 以下举例均为使用普通wrapper,入参为 Map 和 List 的均以 json 形式表现!
  • 使用中如果入参的 Map 或者 List 为空,则不会加入最后生成的sql中!!!
  • 警告: 不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输
  • wrapper 很重
  • 传输 wrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)
  • 正确的 RPC 调用姿势是写一个 DTO 进行传输,被调用方再根据 DTO 执行相应的操作
  • 我们拒绝接受任何关于 RPC 传输 Wrapper 报错相关的 issue 甚至 pr

AbstractWrapper

QueryWrapper(LambdaQueryWrapper) 和UpdateWrapper(LambdaUpdateWrapper) 的父类 用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件注意: entity 生 成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

由于这份文档太详细了,少了哪一部分都会觉得生涩,但同时碍于平台文章篇幅受限这一份MP134页的pdf文档,点赞+关注私信小编“资料”免费获取;

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Java0258/article/details/107092433
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-30 20:14:55
  • 阅读 ( 919 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢