Mybatis-Plus介绍
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作, 更有强大的条件构造器,满足各类使用需求
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
- 支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、
- SQLServer2005、SQLServer 等多种数据库
- 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解 决主键问题
- 支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操 作
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 支持关键词自动转义:支持数据库关键词(order、key......)自动转义,还可自定义关键词
- 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码, 支持模板引擎,更有超多自定义配置等您来使用
- 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List 查询
- 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
- 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
- 内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击
Mybatis这里大家应该都知道是一款优秀的持久层框架,但是随着我们的开发,我们会发现一些简单的CRUD我们也要写mapper,而这些工作除了表不同都是重复的,当然,我们可以写一个mapper查询,各个业务模块共同调用,久而久之,我们发现不同的业务模块调用同一个mapper查询条件大大的增加了其耦合性,当我们根据某些需求而需要调整查询逻辑时,使之整个模块都可能受到牵连,我遇到过一个最可怕的场景:一个会员信息查询,其sql内部关联了N涨表,而所有会员查询的功能都会调用这个mapper,但是会发现,可能大部分模块只需要单表查询就能满足条件,而这个sql查询可能会耗时几秒甚至几十秒,从而可见对性能的影响有多大。。。通过集成Mybatis-Plus使我们对于单表的CRUD更简洁,无需自己去写对应的sql(内部已自动生成)。
MongoDB介绍
MongoDB是一个基于分布式文件存储 [1]的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB使用场景:日志、事件、文档等数据记录,随着我们平台数据量的增加,平台内部记录的日志、事件等非业务型数据量日益增加,达到上千万或上亿级别。当这些数据要求我们要保留时,mysql数据库往往会因为这些数据的增删改查而影响其性能,那么我们可能要考虑将这些数据放到MongoDB数据库进行存储。