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

信贷 网站模板 下载wordpress 调用插件

信贷 网站模板 下载,wordpress 调用插件,广州有什么好玩的旅游景点,网页设计规范怎么写orm java在Data Geekery #xff0c;我们喜欢Java。 而且#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL #xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五#xff0c;我们都会向您展示一些不错的教程风格的Java 8新功… orm java 在Data Geekery 我们喜欢Java。 而且由于我们真的很喜欢jOOQ的流畅的API和查询DSL 我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五我们都会向您展示一些不错的教程风格的Java 8新功能这些功能利用了lambda表达式扩展方法和其他出色的功能。 您可以在GitHub上找到源代码 。 不再需要ORM 在过去的十年中关于ORM对象关系映射的有用性的争论一直在进行。 尽管许多人都同意Hibernate和JPA很好地解决了许多问题大多数情况是复杂对象图的持久性但其他人可能会认为 映射复杂性对于以数据为中心的应用程序来说过于矫kill过正 。 JPA通过在接收目标类型上使用硬连线的注释建立标准化的声明性映射规则来解决映射问题。 我们声称许多以数据为中心的问题不应仅受这些注释的狭窄范围的限制而应以更具功能性的方式解决。 Java 8和新的Streams API最终使我们能够以非常简洁的方式执行此操作 让我们从一个简单的示例开始在该示例中我们使用H2的INFORMATION_SCHEMA收集所有表及其列。 我们将要生成一个MapString, ListString类型的临时数据结构来包含此信息。 为了简化SQL交互我们将使用jOOQ 与往常一样此博客上的内容令人震惊。 这是我们准备的方法 public static void main(String[] args) throws Exception {Class.forName(org.h2.Driver);try (Connection c getConnection(jdbc:h2:~/sql-goodies-with-mapping, sa, )) {// This SQL statement produces all table// names and column names in the H2 schemaString sql select table_name, column_name from information_schema.columns order by table_catalog, table_schema, table_name, ordinal_position;// This is jOOQs way of executing the above// statement. Result implements List, which// makes subsequent steps much easierResultRecord result DSL.using(c).fetch(sql)} } 现在我们已经设置了该查询让我们看看如何从jOOQ Result中生成MapString, ListString DSL.using(c).fetch(sql).stream().collect(groupingBy(r - r.getValue(TABLE_NAME),mapping(r - r.getValue(COLUMN_NAME),toList()))).forEach((table, columns) - System.out.println(table : columns)); 上面的示例产生以下输出 FUNCTION_COLUMNS: [ALIAS_CATALOG, ALIAS_SCHEMA, ...] CONSTANTS: [CONSTANT_CATALOG, CONSTANT_SCHEMA, ...] SEQUENCES: [SEQUENCE_CATALOG, SEQUENCE_SCHEMA, ...] 它是如何工作的 让我们逐步进行 DSL.using(c).fetch(sql)// Here, we transform a List into a Stream.stream()// Were collecting Stream elements into a new // collection type.collect(// The Collector is a grouping operation, producing // a MapgroupingBy(// The grouping operations group key is defined by // the jOOQ Records TABLE_NAME valuer - r.getValue(TABLE_NAME),// The grouping operations group value is generated // by this mapping expression...mapping(// ... which is essentially mapping each grouped // jOOQ Record to the Records COLUMN_NAME valuer - r.getValue(COLUMN_NAME),// ... and then collecting all those values into a // java.util.List. WhewtoList())))// Once we have this ListString, ListString we // can simply consume it with the following Consumer // lambda expression.forEach((table, columns) - System.out.println(table : columns)); 得到它了 第一次玩这些东西时肯定有些棘手。 起初新类​​型泛型泛型lambda表达式的组合可能有点令人困惑。 最好的办法是简单地练习这些东西直到您掌握了它。 毕竟与以前的Java Collections API相比整个Streams API确实是一场革命。 好消息是此API是最终的并将保留。 练习每一分钟都是对自己未来的投资。 请注意以上程序使用了以下静态导入 import static java.util.stream.Collectors.*; 还要注意不再像数据库中那样对输出进行排序。 这是因为groupingBy收集器返回java.util.HashMap 。 在我们的例子中我们可能更喜欢将东西收集到java.util.LinkedHashMap 该对象保留插入/收集的顺序 DSL.using(c).fetch(sql).stream().collect(groupingBy(r - r.getValue(TABLE_NAME),// Add this Supplier to the groupingBy// method callLinkedHashMap::new,mapping(r - r.getValue(COLUMN_NAME),toList()))).forEach(...); 我们可以继续使用其他转换结果的方法。 想象一下我们想根据上述模式生成简单的DDL。 非常简单 首先我们需要选择列的数据类型。 我们只需将其添加到我们SQL查询中 String sql select table_name, column_name, type_name // Add the column typefrom information_schema.columns order by table_catalog, table_schema, table_name, ordinal_position; 我还为示例引入了一个新的本地类以包装名称和类型属性 class Column {final String name;final String type;Column(String name, String type) {this.name name;this.type type;} } 现在让我们看看如何更改Streams API方法调用 result.stream().collect(groupingBy(r - r.getValue(TABLE_NAME),LinkedHashMap::new,mapping(// We now collect this new wrapper type// instead of just the COLUMN_NAMEr - new Column(r.getValue(COLUMN_NAME, String.class),r.getValue(TYPE_NAME, String.class)),toList()))).forEach((table, columns) - {// Just emit a CREATE TABLE statementSystem.out.println(CREATE TABLE table ();// Map each Column type into a String// containing the column specification,// and join them using comma and// newline. Done!System.out.println(columns.stream().map(col - col.name col.type).collect(Collectors.joining(,\n)));System.out.println(););}); 输出再好不过了 CREATE TABLE CATALOGS(CATALOG_NAME VARCHAR ); CREATE TABLE COLLATIONS(NAME VARCHAR,KEY VARCHAR ); CREATE TABLE COLUMNS(TABLE_CATALOG VARCHAR,TABLE_SCHEMA VARCHAR,TABLE_NAME VARCHAR,COLUMN_NAME VARCHAR,ORDINAL_POSITION INTEGER,COLUMN_DEFAULT VARCHAR,IS_NULLABLE VARCHAR,DATA_TYPE INTEGER,CHARACTER_MAXIMUM_LENGTH INTEGER,CHARACTER_OCTET_LENGTH INTEGER,NUMERIC_PRECISION INTEGER,NUMERIC_PRECISION_RADIX INTEGER,NUMERIC_SCALE INTEGER,CHARACTER_SET_NAME VARCHAR,COLLATION_NAME VARCHAR,TYPE_NAME VARCHAR,NULLABLE INTEGER,IS_COMPUTED BOOLEAN,SELECTIVITY INTEGER,CHECK_CONSTRAINT VARCHAR,SEQUENCE_NAME VARCHAR,REMARKS VARCHAR,SOURCE_DATA_TYPE SMALLINT );ORM时代可能刚刚结束 这是一个强有力的声明。 ORM时代可能已经结束。 为什么 因为使用函数表达式转换数据集是软件工程中最强大的概念之一。 函数式编程非常有表现力而且用途广泛。 它是数据和数据流处理的核心。 我们的Java开发人员已经知道现有的功能语言。 例如每个人以前都使用过SQL。 想一想。 使用SQL您可以声明表源将它们投影/转换为新的元组流并将它们作为派生表提供给其他更高级别SQL语句或Java程序。 如果您使用的是XML则可以使用XSLT声明XML转换并使用XProc pipelining将结果提供给其他XML处理实体例如另一个XSL样式表。 Java 8的Streams没什么。 使用SQL和Streams API是最强大的数据处理概念之一。 如果将jOOQ添加到堆栈则可以从对数据库记录和查询API的类型安全访问中受益。 想象一下使用jOOQ的流畅API而不是使用SQL字符串编写上一条语句。 整个方法链可以是一个单一的流利数据转换链如下所示 DSL.using(c).select(COLUMNS.TABLE_NAME,COLUMNS.COLUMN_NAME,COLUMNS.TYPE_NAME).from(COLUMNS).orderBy(COLUMNS.TABLE_CATALOG,COLUMNS.TABLE_SCHEMA,COLUMNS.TABLE_NAME,COLUMNS.ORDINAL_POSITION).fetch() // jOOQ ends here.stream() // Streams start here.collect(groupingBy(r - r.getValue(COLUMNS.TABLE_NAME),LinkedHashMap::new,mapping(r - new Column(r.getValue(COLUMNS.COLUMN_NAME),r.getValue(COLUMNS.TYPE_NAME)),toList()))).forEach((table, columns) - {// Just emit a CREATE TABLE statementSystem.out.println(CREATE TABLE table ();// Map each Column type into a String// containing the column specification,// and join them using comma and// newline. Done!System.out.println(columns.stream().map(col - col.name col.type).collect(Collectors.joining(,\n)));System.out.println(););}); Java 8是未来借助jOOQJava 8和Streams API您可以编写功能强大的数据转换API。 希望我们像您一样兴奋 请继续关注此博客上更多精彩的Java 8内容。 翻译自: https://www.javacodegeeks.com/2014/04/java-8-friday-no-more-need-for-orms.htmlorm java
http://www.zqtcl.cn/news/779494/

相关文章:

  • 电子商务网站建设与管理的论文题目智能自助建站系统源码
  • 个人网站建设价格网站做视频转流量
  • 点网站出图片怎么做深圳市中心在哪
  • 企业网站建设58同城网站优化排名软件哪些最好
  • 最专业企业营销型网站建设企业宣传海报设计制作
  • 石家庄建站公司软件开发岗位介绍
  • 网站开发知识视频教程公司网站总感觉少点什么找什么人做
  • 做网站ps建立多大的画布网站排名监控工具
  • 烟台网站开发网站建设横幅标语
  • 微信公众号素材网站在线资源链接
  • 网站开发地图板块浮动国际重大新闻事件10条
  • 成品网站app开发wordpress宽度调整
  • 小型网站建设需要多少钱网站发布内容是否过滤
  • 网站如何推广运营漳平网站编辑价格
  • 海洋优质的网站建设企业微信下载官方网站
  • 十大免费ae模板网站wordpress 远程设置
  • 青岛网站的优化云南抖音推广
  • 做中英文版的网站需要注意什么如何偷别人dedecms网站的模板
  • 免费微网站制作最近三天发生的重要新闻
  • 网站优化网络推广seo编程软件python
  • 建设部网站官网合同免费申请网站永久
  • 遵化建设局网站哈尔滨网站制作公司价格
  • 科技因子网站建设方案河南网站推广优化公司
  • 什么网站了解国家建设的行情如何建设自己的php网站
  • 大连市平台网站外包公司和劳务派遣
  • 广州建网站公司排名嵌入式软件开发工程师工作内容
  • 计算机软件网站建设免费asp网站源码
  • 网站建设介绍ppt镇江网站搜索引擎优化
  • 珠海自助建站软件泉州网站开发
  • ios个人开发者账号多少钱拼多多seo怎么优化