您还在用mybatis plus和jpa吗

RocketAPI是一款基于SpringBoot2.x的快速API开发工具,无需编写Controller、Service等对象,支持可视化界面操作,能自动执行SQL及MONGODB查询,实现动态编译与即时生效,大大降低开发难度。

Rocket API

摘要

  1. 用于快速开发API接口。不再定义Controller,Service,Dao,Mybatis,xml,Entity,VO等对象.
  2. 可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库SQL执行语句,非关系型MONGODB查询语句.
  3. 完全基于springboot2.x,无侵入性,新老项目都能快速集成
  4. 无需编写一行代码即可完成大部分的需求开发,使用难度级别(测试 or 运维)也可参与开发
  5. 动态编译,无需重启,即时生效

快速开始

#1. 添加依赖

<dependency>
    <groupId>com.github.alenfive</groupId>
    <artifactId>rocket-api-boot-starter</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

版本查看: https://github.com/alenfive/rocket-api/releases

#2. 配置数据源,继承com.github.alenfive.rocketapi.datasource.DataSourceManager 注入数据源

@Component
public class DefaultDataSourceManager extends DataSourceManager {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @PostConstruct
    public void init() {

        Map<String,DataSourceDialect> dialects = new HashMap<>();
        //通过MysqlDataSource的第二个参数为`true`来表示生成的API信息所存储的库,有且仅有一个为true
        dialects.put("mysql",new MysqlDataSource(jdbcTemplate,true));
        super.setDialectMap(dialects);
    }
}

#3. 关系型数据库建表,非关系型不用
最新建表脚本查看: https://github.com/alenfive/rocket-api/tree/master/src/main/resources/script

启动项目,访问地址: http://localhost:8080/api-ui

在线演示,访问地址:http://39.98.181.90:8081/api-ui

文档地址1: https://github.com/alenfive/rocket-api/wiki

文档地址2: https://gitee.com/mihuajun/rocket-api/wikis/Home

### MyBatis-PlusJPA 的区别及使用场景 #### 核心区别 1. **框架定位与设计理念** - **MyBatis-Plus** 是基于 MyBatis 的增强框架,强调灵活性对 SQL 的控制。它提供了许多便捷的 API 来简化 CRUD 操作,并支持自定义 SQL 查询。适合需要灵活编写 SQL 的场景。 - **JPA(Java Persistence API)** 是 Java EE 规范的一部分,提供了一种标准化的对象关系映射(ORM)方式。它通过注解或 XML 配置来管理实体类与数据库表之间的映射,更倾向于完全屏蔽底层 SQL,使开发者专注于对象操作[^3]。 2. **SQL 控制能力** - MyBatis-Plus 允许开发者直接编写 SQL 语句,并通过 XML 文件或注解进行绑定,适用于需要高度定制化 SQL 的项目。 - JPA 则通过 JPQL(Java Persistence Query Language)实现面向对象的查询,减少了直接编写 SQL 的需求,但在复杂查询场景下可能不如 MyBatis-Plus 灵活。 3. **事务管理** - JPA 与 Spring 框架无缝集成,能够方便地进行事务管理。通过在方法上添加 `@Transactional` 注解,即可确保数据库操作在事务中执行,保证数据的一致性完整性。 - MyBatis-Plus 同样支持事务管理,但通常需要结合 Spring 的事务管理机制,手动配置事务边界[^2]。 4. **性能优化** - JPA 提供了诸如一级缓存、二级缓存等高级特性,有助于提升系统性能并优化并发控制。 - MyBatis-Plus 更加轻量级,性能表现取决于 SQL 编写质量,适合对性能有较高要求且能自行优化 SQL 的场景。 5. **学习曲线** - JPA 的学习曲线相对陡峭,尤其是对于不熟悉 ORM 概念的新手来说,需要掌握实体类映射、JPQL 查询等知识。 - MyBatis-Plus 在学习成本上较低,特别是对于已经熟悉 MyBatis 的开发者而言,可以快速上手并开始开发。 #### 使用场景对比 1. **JPA 适用场景** - 项目需要高度抽象的数据访问层,减少对 SQL 的依赖。 - 团队成员熟悉 ORM 概念,且希望利用标准的 Java EE 规范进行开发。 - 需要内置的事务管理缓存机制来优化系统性能。 - 快速原型开发,尤其是中小型项目,能够通过 JPA 的自动建模功能快速搭建数据访问层。 2. **MyBatis-Plus 适用场景** - 项目需要对 SQL 进行精细控制,尤其是涉及复杂查询或性能敏感的业务场景。 - 团队已有 MyBatis 技术栈,希望在此基础上提升开发效率。 - 对 ORM 要求不高,但希望保留一定的灵活性,能够在必要时直接操作 SQL。 - 大型项目中,不同模块可能需要不同的数据访问策略,MyBatis-Plus 可以与其他框架灵活配合使用。 #### 示例代码对比 **JPA 实体类示例** ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; // Getters and Setters } ``` **MyBatis-Plus Mapper 接口示例** ```java public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user WHERE id = #{id}") User selectById(Long id); } ``` **JPA Repository 示例** ```java public interface UserRepository extends JpaRepository<User, Long> { User findByName(String name); } ``` #### 总结 MyBatis-Plus JPA 各有优势,选择合适的框架应根据项目的具体需求、团队的技术栈以及开发习惯。如果项目需要高度灵活的 SQL 控制能力轻量级框架,MyBatis-Plus 是更好的选择;而如果希望利用标准化的 ORM 方式进行开发,并享受 JPA 提供的事务管理缓存机制,则更适合采用 JPA---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值