您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[OceanBase]:阿超:MyBatis-Plus助力OceanBase提升生产效率 - 发现报告
当前位置:首页/行业研究/报告详情/

阿超:MyBatis-Plus助力OceanBase提升生产效率

信息技术2024-08-23-OceanBase李***
AI智能总结
查看更多
阿超:MyBatis-Plus助力OceanBase提升生产效率

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