mybatis
前身是ibatis,是一个轻量级ORM框架,需要自己写sql,DAO(mapper) 只写接口无需写实现,使用xml方式写sql,允许使用OGNL表达式 来动态写sql语句。
MyBatis JPA
在mybatis的基础上添加了以下特性(比较重要的)
Hibernate
使用XML做数据库字段和DO 字段映射,使用HQL写sql,最NP的是他可以屏蔽一般关系型数据库的sql语句的区别,使用方言来适配各种类型的数据库,写复杂的查询的话,比较麻烦,性能也不好。
Spring DATA JPA
spring data jpa其实是 hibernate 实现的,实现的jpa协议。 jpa协议使用注解来标记DO字段和数据库表字段的关系,并且可以很方便的支持一对一,一对多的关联 插入,删除,更新,可以说是双击666 很好用的。
他还支持根据命名规范写方法名,自动生成sql比如 findByName。
Mybatis JPA
实现了部分JPA协议,同样是mybatis的一个插件,拥有mybatis,单表CRUD,一对一,一对多查询功能,支持根据mapper 接口的方法名字自动生成sql,只支持mysql,配合AOP可以支持 主键自动生成,配合基类可以支持ActiveRecord 模式,代码很少,方便定制。
项目地址:https://gitee.com/shuaizai88/jack_mybatis_jpa
最佳的解决方案是: Mybatis JPA + Mybatis + Spring DATA JPA 一起使用,既保证了Spring DATA JPA的多表操作优势,又保证了Mybatis的灵活性。
FAQ:
为什么不能使用Mybatis Plus + Mybatis + Spring DATA JPA 一起用呢?
因为Mybatis Plus 自己做了一套ORM 标准不兼容JPA。