《MyBatis-Plus 助力 OceanBase 提升生产效率_阿超.pdf》由会员分享,可在线阅读,更多相关《MyBatis-Plus 助力 OceanBase 提升生产效率_阿超.pdf(22页珍藏版)》请在三个皮匠报告上搜索。
1、提升生产效率阿超MyBatis-Plus 开发团队成员MyBatis-Plus 助力 OceanBase00后开源爱好者、Gitee封面33期人物;Apache StreamParkCommitter;Dromara开源组织委员会成员、Hutool、Mybatis-Plus开发团队成员、Stream-Query作者,参与贡献的开源项目包括不限于Apache-Shenyu、Sa-Token、Bean-Searcher等曾获腾讯云开发者社区2022年度优秀作者奖,快乐阿超技术专栏文章超百万阅读量;2023年“开源之夏”活动担任 Mybatis-Plus 项目导师;合十思维(北京)科技有限公司技术副
2、总监自我介绍IntroductionMyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus我们的愿景是成为 MyBatis 最好的搭档就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍只做增强 不做改变6支持自定义全局通用操作7内置代码生成器8内置分页插件9内置性能分析插件内置全局拦截插件101无侵入2强大的 CRUD 操作3支持 Lambda 形式调用4支持主键自动生成5支持 ActiveRecord 模式贡献者GiteeGitHub从属开源组织baomidou苞米豆+150 c
3、ontributors.GitHub Issues 4,000+Pull Request 800+社区活跃164八年开源 用爱发电MP的第一次提交是在2016年1月23日下午3点33分2017年度最受欢迎中国开源软件-开源中国2018年度最受欢迎中国开源软件-开源中国2019年度最受欢迎中国开源软件-开源中国2020年度OCS中国开源项目评选【最佳人气项目】-开源中国2023快速成长开源项目-开放原子开源基金会.早在2020年7月31日就开始进行OceanBase适配,目前已经支持OceanBase,MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLS
4、erver,Phoenix,Gauss,ClickHouse,Sybase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift,达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库等40余家数据库。提供了详细的中文注释,这使得国内开发者在阅读源代码、深入理解框架机制时更加方便。对于初学者而言,良好的中文注释大大降低了学习门槛。中文注释中文文档提供了全面且详尽的中文文档,覆盖了从快速入门到高级特性的各个方面。使得开发者能够快速掌握其使用方法和最佳实践。活跃的中文社区支持,不论是
5、遇到问题寻求帮助,还是分享开发经验,开发者都能在社区找到归属感和成长。中文社区打造国产开发者生态中文化的力量 让文档、代码和社区更接地气,激发国产开发生态的活力MyBatis需要为每个简单的单表CRUD编写SQL语句提供RowBounds进行分页,但依赖于手写SQL和手动处理分页逻辑动态SQL通过XML或者注解配置,类似于Spring从XML或者注解手动注入需要自己实现通用枚举、逻辑删除、字段类型处理器、自动填充功能、多数据源等逻辑手动处理乐观锁、多租户、防全表更新与删除、动态表名、数据权限、数据变动记录、非法SQL拦截MyBatis-Plus内置通用 Mapper、通用 Service,自动
6、注入CRUD功能,还支持自定义sql注入内置分页插件,自动化处理分页逻辑,更加简洁方便使用Wrapper条件构造器代替XML或注解sql,简化动态SQL构建内置功能,简单配置即可使用,进一步提升开发效率提供插件方式,支持全部功能选装插件,还可自定义插件,更加灵活为简化开发而生持久层框架的演进之路致敬MyBatis站在巨人的肩膀上,塑造适应国产化开发生态的技术风景Reflection extraction框架结构Scan EntityAnalysis Table Name ColumnInjection MyBatisContainermybatis-plus-boot-starterannot
7、ationextensioncoregeneratorSQL:Insert Delete UpdateSelect 0初始化 SpringBoot 项目使用Spring Initializr创建配置 OceanBase 连接在application.properties或者yml里配置代码生成器CV代码生成器代码到项目test包或任意位置开始生成快速生成 Mapper、Model、Service、Controller 层代码创建数据库表Mybatis-Plus也支持项目启动时自动执行DDL添加依赖添加mybatis-plus-boot-starter、oceanbase-
8、client等从零开始,六步完成代码生成OceanBase 开发者从零使用 MyBatis-Plus 实现数据处理快速流程引入依赖com.baomidoumybatis-plus-boot-starter最新版本配置数据库连接spring.datasource.url=jdbc:mysql:/11.XX.XX.197:1130/TESTspring.datasource.username=XXXXmysqlspring.datasource.password=XXXXspring.datasource.driverClassName=com.mysql.jdbc.Driver新建实体类Mapp
9、erpublic interface UserMapper extends BaseMapper 通过maven使用 MYSQL-JDBC 驱动代码生成更快使用 MySQL-JDBC 连接 OceanBase从 MySQL 迁移到 OceanBase 竟然不需要修改任何代码!直接使用即可查询:List userList=userMapper.selectList(null);引入依赖com.oceanbaseoceanbase-client最新版本com.baomidoumybatis-plus-boot-starter最新版本配置数据库连接spring.datasource.url=jdbc
10、:oceanbase:/11.XX.XX.197:1130/TEST#mysql模式#spring.datasource.username=XXXXmysql#oracle模式下需要额外设置分页插件DbType为Oraclespring.datasource.username=XXXXxyoraclespring.datasource.password=XXXXspring.datasource.driverClassName=com.alipay.oceanbase.jdbc.Driver新建实体类Mapperpublic interface UserMapper extends BaseM
11、apper 通过maven使用OB-JDBC驱动代码生成更快使用 OB-JDBC 连接 OceanBaseOceanBase 不仅仅支持Mysql模式,还支持 Oracle 模式!直接使用即可查询:List userList=userMapper.selectList(null);代码生成器&CRUD连接 OceanBase,根据表结构快速生成基础代码自动生成根据表结构自动生成实体类、Mapper类、XML文件生成代码配置规范,统一代码风格,便于团队合作与代码维护低层开发规范、命名规则一写就忘,代码风格如何统一大量基础CRUD接口代码编写,导致项目开发效率低需要为每个单表创建实体类、Mappe
12、r类、XML文件,繁琐又重复自动生成Service、Controller模块代码,提供基础CRUD通用接口效率翻倍应 用 代 码 案 例这些丰富的案例同样也支持 OceanBasebaomidou/mybatis-plus-samplesoceanbase/ob-samplesmybatis-plus-samples拥有丰富的代码案例:快速开始、SpringMVC快速开始、SpringMVC简化mapper、代码生成器、完整 CRUD、SQL 脚本自动维护、条件构造器、分页功能、ActiveRecord、Sequence、Sql执行分析、性能分析、乐观锁、自定义全局操作、公共字段填充、逻辑删除
13、、多数据源、枚举注入、动态表名、多租户、类型处理器、整合、分离打包、使用 resultMap、自定义ID生成、字符串ID生成、不使用spring下的、使用pagehelper进行、联表查询、数据库 postgres字段jsonb等3.5.6更新内容稳定维护与功能创新,共同推动项目向前发展,致力高效稳定的开发体验错误修复功能增强重构生成器TemplateConfig配置,提升灵活性和准确性支持组合注解,增强注解功能的复用性和便利性新增LambdaUpdateWrapper字段自增自减方法setSelfXxx增加CI流程,提高代码质量和项目稳定性获取注入方法时传递Configuration,增强配
14、置传递的准确性新增自增主键兼容配置开关,提供主键字段生成的更多控制新增参数填充器跳过方式,提高填充器使用的灵活性支持SQLite的DDL自动维护功能,增强SQLite数据库的支持wrapper新增eqSql方法,提升SQL操作的灵活性新增SQL解析线程池,提升SQL解析的效率和性能增加雪花ID生成器初始化日志打印,优化日志记录,辅助问题诊断修复多层代理错误,确保代理结构正确性修ServiceImpl改为抽象类,防止误实例化解决Json处理器泛型丢失问题,保障数据类型准确去除sqlFirst与sqlComment的强制转义,提供手动转义拓展修正填充器处理基本类型数组的强制错误,增强数据处理能力修
15、复Page与PageDto类序列化的问题,优化分页处理逻辑解决IllegalSQLInnerInterceptor未处理Parenthesis的问题修复IllegalSQLInnerInterceptor无法获取字段索引信息问题修复KtUpdateChainWrapper调用setSql时params未展开问题解决配置useGeneratedShortKey失效问题,增强生成配置可靠性修复DataChangeRecorderInnerInterceptor,提升变更记录准确性并行注入提升启动速度静态函数适配多数据源内置Service并入BaseMapper好用的多表关联查询支持.未来版本更新计划新特性目前仍处于开发中/未开发/待定阶段,尽情期待“开源之夏”欢迎学生报名MyBatis-Plus、OceanBaseMyBatis-Plus 4.0 我们一起见证!欢迎各路好汉一起来参与完善,我们期待你的 PR!MyBatis-Plus 与 OceanBase 社区共建生态只有开源的 才是世界的项目兼容文档友好社区开放合作共赢基本无需改造即可连接使用持续提供对开发者友好的文档积极举办线上/线下联合活动借助开源的力量支持更丰富的应用谢谢谢谢谢谢