前言
今天给大家介绍一个新的ORM框架->JOOQ , 可能很多朋友还没有听说过这个框架 , 码农哥之前也是一直在使用Mybatis框架作为Java工程中的持久层访问框架 , 但是最近的一些项目采用JOOQ框架开发后 , 码农哥表示再也不想用Mybatis了!
为什么这么说呢?因为JOOQ在代码层面要比Mybatis简洁得多 , 而且性能也非常优异 。 相信大家都有过这样的体会 , 我们在项目工程中使用Mybatis进行数据库相关代码的编写时 , 为了提高工程效率 , 一般会在数据库模型设计完成后 , 一次性使用Mybatis代码插件(如**:mybatis-generator**) , 来生成Mybatis数据库访问的实体类代码以及XML、Mapper等映射代码 , 从而尽量以面向对象的方式来操作和访问数据库 。 而通过这样的方式 , 虽然在工程效率上提高了很多 , 但是从代码的简洁和优雅性上来说就会让人感觉特别的啰嗦 , 因为自动生成的代码并不完全都是你在项目中能够用得到的 。
所以 , 有些对代码有追求的同学就会以比较简洁的方式来手写SQL代码 。 如在**@Mapper**接口中编写这样的代码:
而虽然这种方式可以减少很多无用的代码量 , 但是在业务逻辑比较复杂的场景下这种方式显然又会大大降低开发的效率 , 因为通过这样的方式不仅SQL编写的通用层度需要我们花费额外的时间去考虑 , 而且由于Java面向对象的编程方式 , 我们还需要花费很多的时间来将数据库查询结果映射成为实体对象 , 所以使用Mybatis进行持久层开发时有时候真的是让人又爱又恨!
@Select(\"select max(t.balance_id) from balance t where t.country=#{country\\") String selectMaxId(Map<String String> paramMap);
【mybatis|为什么项目中用了JOOQ后大家都不愿再用Mybatis?】
那么**有没有一种新的ORM框架既能够保持Mybatis的灵活性又不像Hibernate那样重呢?**毕竟大家也都是从Hibernate的魔爪中逃离出来后才选择使用Mybatis直到今天的!在软件工程领域就是这样 , 有痛点的地方就一定会有人提供解决方案 , JOOQ就是这样一个产物!
JOOQ简介
JOOQ是基于Java访问关系型数据库的工具包 , 它具有轻量、简单、并且足够灵活的特点 , 通过JOOQ我们可以轻松的使用Java面向对象的语法来实现各种复杂的SQL 。 相比于传统ORM框架 , 如Hibernate、Mybatis来说 , JOOQ汲取了即汲取了它们操作数据的简单性和安全性、同时也保留了原生SQL的灵活性 , 从某种程度上说JOOQ更像是介于ORM和JDBC的中间层 。
JOOQ目前在国内相对来说还比较小众 , 对于大部分从SSH或者SSM成长起来的码农朋友们来说 , 心里估计会质疑“这玩意用的这么少 , 到底靠不靠谱?” 。 在这里码农哥可以很负责任的说JOOQ是靠谱的!因为码农哥已经在好几个生产项目上实践过了 , 而且是在比较核心的支付系统上完全使用了JOOQ来替代Mybatis作为持久层框架 , 并且这个支付系统的并发量也是非常高的 , 所以JOOQ框架本身是能够经受住真实业务场景的考验的!
SpringBoot项目集成JOOQ
接下来我们就来一起看看 , 如何在SpringBoot的项目中集成和使用JOOQ吧!首先 , 我们在项目中引入JOOQ的stater依赖包 , 如下
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jooq</artifactId> </dependency>
- 芯片|为什么说开源、免费的操作系统、芯片架构,很难打赢闭源的?
- 苹果|为什么苹果产品如此昂贵,你还愿意买单,看完这5个原因就明白了
- C++|为什么以前买五六千手机不眨眼,现在看到三四千的手机却嫌贵了
- 小米科技|为什么像小米公司这样的互联网公司,招工要求一定要达到本科学历
- 为什么像小米公司这样的互联网公司,招工要求一定要达到本科学历
- 本文转自:中老年时报微信是我们每天都要使用的工具|不管是什么手机,微信上这个选项要尽快关闭,越早越好
- 为什么iPhone做个感叹号屏就有那么多人关注
- 如何使用开发人员选项加速Android手机
- 优秀技术作家的11项技能
- 本文转自:汕头政务发布15日上午召开的全省科技创新大会颁发了2021年度广东省科学技术奖...|汕头2个项目获省科技奖一等奖,分别来自“超声”和“光华