当前位置: 首页 > news >正文

网站外部链接做多少合适呢电商模板免费下载

网站外部链接做多少合适呢,电商模板免费下载,乌海网站建设,上海建设工程安全质量监督站网站本文是我们学院课程的一部分#xff0c;标题为jOOQ –类型安全的数据库查询 。 在SQL和特定关系数据库很重要的Java应用程序中#xff0c;jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多#xff0c;JDBC过多时#xff0c;这是一种替代方法。 它显示了一种现代的领域特… 本文是我们学院课程的一部分标题为jOOQ –类型安全的数据库查询 。 在SQL和特定关系数据库很重要的Java应用程序中jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多JDBC过多时这是一种替代方法。 它显示了一种现代的领域特定语言如何可以极大地提高开发人员的生产率从而将SQL内部化为Java。 在本课程中我们将看到如何使用jOOQ有效地查询数据库。 在这里查看 目录 1. jOOQ DSL的思想 2.运行第一个查询 3.其他语句类型 3.1。 插 3.2。 更新 3.4。 删除 4.谓词 4.1。 日常谓词 4.2。 更高级的谓词 4.3。 比较谓词 5.列表达式 5.1。 在SQL中 5.2。 使用jOOQ :: 6.有关jOOQ DSL的更多信息 也可以从org.jooq.academy.section1包中获得本节中显示的示例 。 1. jOOQ DSL的思想 jOOQ是一种DSL领域特定语言它模仿Java API中的标准和特定于供应商的SQL语法。 该API背后的思想很容易理解 作为内部 DSLJava编译器可以验证您的SQL查询的语法正确性例如SQL关键字的正确顺序 将表和列作为生成的Java对象编译器还可以验证元数据的正确性例如正确的列名和类型 换句话说当您要表达这样的SQL查询时 SELECT author.first_name, author.last_name FROM author ORDER BY author.id …然后您可以立即使用jOOQ编写相同的查询 select (AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME) .from (AUTHOR) .orderBy(AUTHOR.ID); 它是如何工作的jOOQ和您的Java编译器如何知道“ select ”的含义或“ AUTHOR.FIRST_NAME ”的含义 2.运行第一个查询 在上面的示例中进行了两个简单的假设并将在整个过程中进行以下假设 每当您看到独立的SQL关键字时都可能是从org.jooq.impl.DSL静态导入的。 每当您看到独立的表引用时它就可能是从生成的Tables类中静态导入的 换句话说理想情况下在每个使用jOOQ的类中只需添加以下两个import语句 import static org.jooq.example.db.h2.Tables.*; import static org.jooq.impl.DSL.*; 这将使上面的代码编译。 但是这样的Select语句并不能做很多事情它只是放在那儿可以打印到控制台上 System.out.println(select (AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).from (AUTHOR).orderBy(AUTHOR.ID) ); 上面将打印 select PUBLIC.AUTHOR.FIRST_NAME, PUBLIC.AUTHOR.LAST_NAME from PUBLIC.AUTHOR order by PUBLIC.AUTHOR.ID asc 执行这样的查询非常简单。 我们需要做的就是为其提供JDBC Connection 然后在其上调用fetch() DSL.using(connection).select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).from(AUTHOR).orderBy(AUTHOR.ID).fetch(); 注意当然您也可以将对象分配给局部变量或者使用Spring或您喜欢的配置框架来配置它而不是一直重复DSL.using(...) DSLContext dsl DSL.using(connection);dsl.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).from(AUTHOR).orderBy(AUTHOR.ID).fetch(); jOOQ将在内部创建一个新的JDBC PreparedStatement 执行它使用JDBC ResultSet 并急切地关闭它创建的所有资源。 结果对象是Result 它也实现了一个非常有用的toString()方法 System.out.println(dsl.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).from(AUTHOR).orderBy(AUTHOR.ID).fetch() ); 以上将产生 ------------------- |FIRST_NAME|LAST_NAME| ------------------- |George |Orwell | |Paulo |Coelho | -------------------3.其他语句类型 jOOQ本机支持每个DML SQL语句以及一些DDL SQL语句包括SELECT UPDATE INSERT DELETE MERGE 。 如果我们要创建更新删除新的AUTHOR记录则可以编写以下SQL语句 插 dsl.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).values(3, Alfred, Hitchcock).execute(); 请注意我们现在将调用execute()而不是fetch() execute() 它返回受影响的行数。 上面查询的一个有趣的方面是jOOQ使用很多Java泛型来确保查询中的类型安全。 例如以下两个查询将产生编译错误 dsl.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).values(3, Alfred) // ^^^^^^^ values() expects three arguments (for ID, FIRST_NAME, LAST_NAME), // but only two were provided!.execute() 这非常强大因为您将永远不会忘记根据INTO子句的要求向VALUES子句添加相等数量的值。 这也扩展到类型不匹配。 如果您决定对INTO子句中的列进行重新排序但忘了改写VALUES子句则您的Java编译器可能会再次抱怨。 以下内容无法编译 dsl.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, AUTHOR.ID).values(4, Alfred, Hitchcock) // ^^^^^^^ values() expects arguments of type (String, String, Integer),but (Integer, String, String) was provided!.execute()更新 UPDATE语句与前面的语句一样简单 dsl.update(AUTHOR).set(AUTHOR.DATE_OF_BIRTH, Date.valueOf(1899-08-13)).where(AUTHOR.ID.eq(3)).execute() 到目前为止选择ID 3的作者将产生完整的AUTHOR记录 dsl.select().from(AUTHOR).where(AUTHOR.ID.eq(3)).fetch() ……屈服 ------------------------------------ | ID|FIRST_NAME|LAST_NAME|DATE_OF_BIRTH| ------------------------------------ | 3|Alfred |Hitchcock|1899-08-13 | ------------------------------------删除 最后但并非最不重要的一点是 DELETE语句如下 dsl.delete(AUTHOR).where(AUTHOR.ID.eq(3)).execute()4.谓词 谓词是SQL尤其是动态SQL的重要方面。 SQL知道各种谓词例如 日常谓词 比较谓词 NULL谓词 像谓词 IN谓词 存在谓词 更高级的谓词 量化比较谓词 DISTINCT谓词 谓词之间 重叠谓词 同样在SQL中可以使用AND和OR轻松组合谓词。 jOOQ以一种流利的方式直接在列类型上反映了所有这些谓词。 最好通过示例解释 比较谓词 // A filtering predicate AUTHOR.ID.eq(3);// A join predicate AUTHOR.ID.eq(BOOK.AUTHOR_ID); 这些谓词中的大多数也都是类型安全的例如您不能将数字与字符串进行比较。 AUTHOR.ID.eq(abc); // ^^ Compilation error. An expression of type Integer is expected // (or FieldInteger, or Select? extends Record1Integer) IN谓词是类型安全的一个有趣案例它需要一个值列表或一个在IN关键字右侧仅包含一列的子查询 // IN list AUTHOR.ID.in(1, 2, 3);// IN with subquery AUTHOR.ID.in(select(BOOK.AUTHOR_ID).from(BOOK)) 第二个示例在AUTHOR表和BOOK表之间执行半AUTHOR 仅返回至少写过一本书的作者。 由于使用Java泛型因此以下查询将无法编译 // IN list with wrong types AUTHOR.ID.in(a, b, c); // ^^^^^^^^^^^^^ This in() method expects an Integer... argument// IN with subquery returning wrong type AUTHOR.ID.in(select(BOOK.TITLE).from(BOOK)) // ^^^^^^^^^^^^^^^^^^ This in() method expects a Select? extends Record1Integer // 另外以下无效语句将被Java编译器拒绝 AUTHOR.ID.in(select(BOOK.AUTHOR_ID, BOOK.TITLE).from(BOOK)) // ^^ This in() method expects a Select? extends Record1Integer, // but instead, an incompatible SelectRecord2Integer, String was provided5.列表达式 在SQL中您可以通过对列表达式应用函数或操作来创建新型的列表达式。 例如您可以串联作者的名字和姓氏 在SQL中 SELECT author.first_name || || author.last_name FROM author ORDER BY author.id使用jOOQ :: dsl.select(concat(AUTHOR.FIRST_NAME, val( ), AUTHOR.LAST_NAME)).from(AUTHOR).orderBy(AUTHOR.ID).fetch() 请记住我们是从DSL静态导入所有内容包括DSL.concat()和DSL.val() 。 dsl.select(AUTHOR.FIRST_NAME.concat( ).concat(AUTHOR.LAST_NAME)).from(AUTHOR).orderBy(AUTHOR.ID).fetch() 当然由于Java不允许运算符重载或符号方法名称因此我们必须处理常规方法名称在这种情况下应使用concat 。 通常是由您决定要对函数使用前缀符号还是对运算符使用前缀符号。 6.有关jOOQ DSL的更多信息 jOOQ DSL具有非常丰富的功能。 列出本课程中的所有功能将重复参考手册。 请考虑手册中有关SQL构建的部分以了解有关jOOQ DSL的更多信息。 翻译自: https://www.javacodegeeks.com/2015/09/work-with-the-jooq-dsl.html
http://www.zqtcl.cn/news/86839/

相关文章:

  • 自己怎么做商城网站吗沈阳工程信息
  • 网站建设柚子网络科技多品牌网站建设
  • 怀化招标网站印度喜欢用什么框架做外贸网站
  • python 开发手机网站开发优质国外网站
  • 长安网站建设流程网站开发文档模板下载
  • 河南省建设部省厅网站兰溪做网站哪家好
  • 河南网站优化推广全国的做网站的公司
  • 建设企业门户网站易语言如何做验证系统官方网站
  • wordpress不安全么佛山seo网站优化
  • 抖音做我女朋友的网站建设银行网站app
  • 廊坊关键词seo排名网站安徽网站制作
  • 江苏省城乡建设局网站网络联盟推广
  • 网站建设中倒计时模板下载网站开发的流程是什么
  • 建设网站源码赣州做网站的公司有哪家好
  • 网站flash合肥瑶海区地图全图高清版
  • 做药品的电商网站有哪些网站制作商家入驻
  • 在线做海报的网站seo网站推广怎样
  • 网站建设案例讯息网站开发工资高吗
  • 个人网站建设教学视频服务器架设国外做违法网站
  • 公司网站建设意义不属于网络推广方法
  • 标准网站建设哪家便宜男女做暧昧视频网站
  • 家装e站网站机房建设流程
  • 动易视频网站管理系统网站建设演示ppt模板
  • 网站站内链接详情页设计英文翻译
  • 网站建设全包 广州网页编辑模式快捷键
  • 搜索引擎网站录入免费优化网站建设
  • 济南华企立方 网站做微商如何引流推广?怎么找客源?
  • 用cms做网站的缺点佛山做网站制作
  • 提供网站技术支持网页美工设计需要学什么
  • 镇江网站建设优化制作公司网线水晶头接法顺序