范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

JOOQ学习(一)

  一、简介
  JOOQ全称Java Object Oriented Querying,基于Java访问关系型数据库的工具包,轻量,简单,并且足够灵活,可以轻松的使用Java面向对象语法来实现各种复杂的sql。
  JOOQ 既吸取了传统ORM操作数据的简单性和安全性,又保留了原生sql的灵活性,它更像是介于 ORMS和JDBC的中间层。可以使用Java代码写出sql的感觉来。
  如同官网[https://www.jooq.org/]所说:
  get back in control of your sql二、原理
  jOOQ,是一个ORM框架,利用其生成的Java代码和流畅的API,可以快速构建有类型约束的安全的SQL语句
  jOOQ使重心可以放在业务逻辑上,而Java与SQL的基础交互部分,都可以交给jOOQ去处理。jOOQ支持很多数据库,而且有商业版本和社区版本区别,商业版本和社区版本区别主要是支持数据库不一样,可以在其授权说明页面上看到各个版本对于数据库的支持情况,开源版本只支持部分开源数据库如MySQL等
  jOOQ的核心优势是可以将数据库表结构映射为Java类,包含表的基本描述和所有表字段。通过jOOQ提供的API,配合生成的Java代码,可以很方便地进行数据库操作
  生成的Java代码字段类型是根据数据库映射成的Java类型,在进行设置和查询操作时,因为是Java代码,都会有强类型校验,所以对于数据的输入,是天然安全的,极大的减少了SQL注入的风险
  jOOQ的代码生成策略是根据配置全量生成,任何对于数据库的改动,如果会影响到业务代码,在编译期间就会被发现,可以及时进行修复 三、流程
  官网文档提到7步走
  Step 1: Preparation
  Step 2: Your database
  Step 3: Code generation
  Step 4: Connect to your database
  Step 5: Querying
  Step 6: Iterating
  Step 7: Explore
  开发流程大致就是 三步:
  创建/更新 数据库表  通过JOOQ插件生成Java代码
  进行业务逻辑开发 四、使用Maven配置
  jOOQ 提供了 Maven 插件  jooq-codegen-maven  ,通过配置可以进行代码生成操作,配置项主要是jdbc连接,目标数据库,表,以及生成的路径包名等      3.15.3                 mysql         mysql-connector-java         8.0.18                         org.jooq         jooq         ${jooq.version}                                   maven-compiler-plugin                              1.8                 1.8                                                      org.jooq             jooq-codegen-maven             ${jooq.version}                                                   com.mysql.cj.jdbc.Driver                     jdbc:mysql://127.0.0.1:3306/jooq                     root                     123456                                                                                *                         jooq                                                                   com.learn.jooq.codegen                         /src/main/java                                                                  代码生成
  代码生成的原理就是通过读取数据库的元数据,将其转换为Java代码,并生成指定的文件,存放到配置好的指定目录
  jOOQ的生成代码的目标路径建议配置单独的子包,因为每次代码生成都是全量的,如果和其他业务代码混合在一起,会被生成器误删 # 通过此命令里可以调用 jooq-codegen-maven 插件进行代码生成 mvn jooq-codegen:generate
  代码生成器执行完成后,会生成以下目录:  src/main/java/.../codegen ---- // 生成路径    tables --------------------- // 表定义目录      pojos ------------------- // 存放和表一一对应的 POJO 类      records ------------------ // 储存一条表记录的字段和值,提供了一系列针对行记录对象的操作方法,如get、set等      interfaces ----------- // 由records和pojos实现,便于进行record和pojo之间的转换      daos ----------- // 提供了常用的查询操作的封装           表数据 ----------- // 表描述信息,提供了获取表字段、索引、主键、重命名等方法供daos和records中的类调用     DefaultCatalog ------------- // Catalog对象,包含Schema常量    Indexes -------------------- // 包含数据库所有的索引常量    Keys ----------------------- // 包含数据库所有表的主键、唯一索引常量    Jooq ------------------ // 数据库`jooq`常量,包含该库所有表描述常量    Tables --------------------- // 包含所有数据库表常量操作
  1.直接通过SQL执行器DSLContext,DSLContext抽象了所有SQL操作
  2.针对特定记录的操作可以直接调用Record对象的方法API
  org.jooq.Result
  结果集接口,此接口实现了List接口,可以当做一个集合来操作,是一个数据库查询结果集的包装类,除了集合的相关方法,该接口还提供了一些结果集转换,格式化,提取字段等方法。通常我们查询出来的结果都是此接口的实现类,掌握好此接口是jOOQ的基础接口,基本所有的SQL查询操作,都会碰到这个接口
  org.jooq.Record
  此接口再使用关系型数据库时,主要用于定义数据库表记录,储存的内容是一条表记录的字段和值,每个值会储存对应字段的类型,可以通过通用的 getValue(Field field)   方法,取到对应字段的值,也可以将这个接口看做是一条记录的字段/值映射
  在使用了代码生成器后,会基于此接口生成对应表的实现类,该实现类基于数据库表字段生成所有字段的  get  /set   方法,可以通过 getXXX  /setXXX(..)   直观的获取或设置指定的值用于读取/更新等后续操作。对于编码来说,代码的可读性大大提升
  org.jooq.DSLContext
  jOOQ的核心接口之一,可以理解为一个SQL执行器,通过静态方法 DSL.using  ,可以获取一个 DSLContext   实例,此实例抽象了所有对于SQL的操作API,可以通过其提供的API方便的进行SQL操作/** * 通过数据库连接和方言配置来创建一个执行器对象 * @param connection 数据库连接 * @param dialect 指定方言, 传入此参数的目的是,在jOOQ渲染SQL的语句的时候,会根据SQL方言配置,使用不同的语法规则去生成SQL语句字符串。 */ public static DSLContext using(Connection connection, SQLDialect dialect) {     return new DefaultDSLContext(connection, dialect, null); }

小米MIUI付费主题变免费!网友先下20个再说?今日据网友爆料,小米MIUI主题将在9月份全面变更业务模式。具体来看,除了一些有特定版权的主题之外,其余大部分的付费主题都将统一改为免费。这样一来,原来小米主题设计师所享有的付费免卢伟冰怒回余承东,上场直怼华为Mate30RS?网友卢总不吃素继德国发布会之后,昨日华为也正式在国内发布了Mate30系列产品。最新消息来看,华为Mate30系列4G版本在一分钟内销售额突破5亿元,令人不得不感叹华为的实力。不过这次发布会上,全家人的互助按摩师筋膜枪前言世界属于你,世界也属于我,但最终属于健康得活的长的人。这话好像没毛病。追求健康就要好好运动,可是运动后为什么会浑身酸痛呢?运动后肌肉僵硬疼痛,四肢沉重无力?原因出在筋膜身上,筋2020紫米8周年新品发布会全流程记录2020年10月15日下午2时,紫米ZMI召开新品发布会,下面我将带领大家回顾发布会全流程。先是在几天前收到了来自紫米的邀请函,我得知了本次发布会的消息。随着发布会的临近,官网分别百元心头好HaylouSmartWatch2体验前言在过去的几年里你若问我百元智能可穿戴设备都有什么选择。我要答案可能是。只有智能手环。而在今天我需要更新我的答案了,智能手表也加入到了百元左右的智能可穿戴设备的行列中。Haylo鹏博士与互联网医疗科创公司奈特瑞的故事奈特瑞公司作为创业公司,鹏博士选择与我们合作,很有前瞻性。奈特瑞公司CEO曲毅在接受通信产业报全媒体记者采访时表示,鹏博士没有错过一家高成长性的公司。作为科技创业公司,奈特瑞公司把centos7搭建nginx网站服务器一次性通过搭建nginx网站服务器,前期准备工作1安装NGINX所需的库编译安装需要的工具yuminstallgccgcccautomakezlibzlibdevel使nginx支持URI重试驾福特EVOS站在风云巨变的路口,福特交出的特别答案文二哥头两天前,我们在长沙完成了对福特evos的首次试驾,经过近一天的深度体验,我们对这款福特中国2。0计划下的首款战略车型有了更为清晰的认知。从MustangMachE带给我们的最便宜的RDNA2显卡AMDNavi24小核心年底登场日前有消息称,AMD将于8月11日(美国时间)正式推出RX6600系列显卡,包括RX6600RX6600XT两款型号,纸面发布时间则有望在本月底的上海ChinaJoy游戏展上。不过最便宜丰田SUV?锋兰达申报图曝光,能延续卡罗拉的荣耀吗?文岸青从9月25日起,丰田就在为锋兰达的上市做准备了,与兰达家族的前两位成员相比,这个尚未正式诞生的新成员可倍有排面,丰田还专门为它拍了一只广告来做预热宣传。而近日,锋兰达的申报图出差饮水没烦恼,我把饮水机装进了背包里前言水,对于人体来说是必须品。喝水可以使人的身体加快新陈代谢的速度,有益于身体的健康。美女多喝水,喝健康水更是能令肌肤饱满。喝水也是有讲究的,一定不能大口狂喝,而应该慢慢饮水,做到
三星S20现在价格4799,可以入手了吧?可以入手,就怕pdd翻车比21性价比高多了手感极佳,128G的有个问题卡槽采用的是三卡合一的设置,不可以双卡加内存卡。但是可以同时插入两张手机卡,或者插入一张手机卡和一张内存,你如华为现在是名副其实还是声闻过情?我不知道师友提这个问题的目的何在?因为现在遇到了问题只要一搜索,就能出现成百上千个相关问题的资讯,然后通过辨别,通常都会得出心目中的最佳答案!华为是名副其实的很好还是被吹嘘的结果?谷歌Android12正式上线,华为鸿蒙即将开源,国产厂商该怎么选?希望鸿蒙可以成功,但也不能道德绑架其他厂商,ov小米等手机企业在国际市场有很大销量,如果他们用鸿蒙,因为不能兼容GMS,势必在国际市场举步维艰,而且从芯片到软件都易受到打压,造成企再超阿里!拼多多年活用户8。238亿,夸大其词还是名副其实?这么说吧,拼多多8亿用户,有6亿是被逼的我怕麻烦,说我没有拼多多,结果他(她)们更高兴了一次没有用过拼夕夕的这里报道。物美价廉是伪命题,而且我家老太太一个人快10个账号了,一周买一苹果地图和高德地图有什么区别?iPhone自带的地图App在国内其实一直也是用的高德地图的数据,也就说两者的数据来源是一致的,只不过高德有自己的App,苹果也有自己的App,分别做了定制化开发,其他的基础数据都台积电传来新消息,事关iPhone13,苹果没有让人失望台积电传来新消息自从华为麒麟芯片无法得到供应之后,台积电这家代工厂就被推到了风口浪尖上,因为它曾是华为最重要的合作伙伴,而现在却选择站到了华为的对立面。身为全球第一大芯片制造商,台微软表示,EDGE很快将成为WINDOWS10最强大的浏览器在Build2021开发者大会中,微软称其Edge浏览器将是Windows10最快的浏览器,并计划于本周进行更新。据报道,开发人员正在向Edge91添加诸如休眠标签和启动增强器之类Linux系统入门BashBash介绍Shell是一种命令行解释器,其读取用户输入的字符串命令,解释并且执行命令它是一种特殊的应用程序,介于系统调用库与应用程序之间,其提供了运行其他程序的的接口它可以是交互华为遭瑞典无理打压,中国人民迅速用行动反击,爱立信或首当其冲据路透社报道,瑞典电信公司爱立信日前表示,他们在中国的5G网络业务或将面临大幅缩水。爱立信称,该公司已获邀参与5G网络建设的各种招标活动,但他们即使中标能被分配到的市场份额也可能比华为表错了情?邀请加入鸿蒙,中兴拒接,小米OV不表态缺少芯片,使华为手机业务越做越艰难,曾经一度和苹果五五分国内高端手机市场的华为,如今被苹果不断抢占,丢失了大量高端市场。而中低端市场,也远不如小米,OPPO等手机。就全球市场份额来中国工程院院士周济今后15年是智能制造发展关键期中新网贵阳5月26日电(左宇坤)没有强大的5G和工业互联网,就没有真正的大数据。而没有真正的大数据就没有新一代人工智能,就更没有新一代的智能制造数字化网络化智能化制造。5月26日,