JOOQ框架学习(1):逆向编译生成代码

版权声明: https://blog.csdn.net/qq_29166327/article/details/83046319

2018年10月14日

目录

一、前言

二、模仿网上的文章来搭建JOOQ Demo

步骤1:配置XML文件

步骤2:手敲执行指令

三、对于盲目照抄导致报错的不断填坑

坑NO1:class not found.

坑NO.2:java.lang.ClassNotFoundException: org.jooq.util.DefaultGenerator

坑NO.3:java.lang.ClassNotFoundException: org.jooq.util.mysql.MySQLDatabase

四、最终运行JOOQ逆向生成


一、前言

网上的很多文章(好文:https://segmentfault.com/a/1190000010415384都对JOOQ这个框架做了详细的讲解,百闻不如一见,我也自己动手尝试使用了一下,但是发现实操起来坑洼特别多,但最后还是成功了,因此做个总结,帮助各位避开更多的问题。

 

二、模仿网上的文章来搭建JOOQ Demo

官方网站:http://www.jooq.org/doc/3.11/manual-single-page/

Windows环境下,JOOQ搭建demo最简单的手段:

1、新建一个备用文件夹(“D:\temp”);

2、下载4个jar包

(jooq-3.11.5.jar / jooq-codegen-3.11.5.jar / jooq-meta-3.11.5.jar /  mysql-connector-java-5.1.18.jar);

3、新建一个xml文件(“library.xml”);

步骤1:配置XML文件

下面配置内容依次讲解:

1)Mysql jdbc 配置:数据库驱动、本地ip+端口+数据库、用户名+密码

2)生成器配置:

2.1 默认生成器;

2.2 指定数据库;

2.3 指定数据库的表为全部(.*);

2.4 目标:项目文件路径  + package路径;

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd">
  <!-- Configure the database connection here -->
  <jdbc>
    <driver>com.mysql.jdbc.Driver</driver>
    <url>jdbc:mysql://localhost:3306/guestbook</url>
    <user>root</user>
    <password>qweasd!@#zxc123</password>
  </jdbc>

  <generator>
    <!-- The default code generator. You can override this one, to generate your own code style
         Defaults to org.jooq.util.DefaultGenerator -->
	<!-- 
	org.jooq.util.DefaultGenerator 
	org.jooq.util.GenerationTool
	org.jooq.util.JavaGenerator
	-->
    <name>org.jooq.util.DefaultGenerator</name>

    <database>
      <!-- The database type. The format here is:
           org.util.[database].[database]Database -->
      <name>org.jooq.util.mysql.MySQLDatabase</name>

      <!-- The database schema (or in the absence of schema support, in your RDBMS this
           can be the owner, user, database name) to be generated -->
      <inputSchema>guestbook</inputSchema>

      <!-- All elements that are generated from your schema (several Java regular expressions, separated by comma)
           Watch out for case-sensitivity. Depending on your database, this might be important! -->
      <includes>.*</includes>

      <!-- All elements that are excluded from your schema (several Java regular expressions, separated by comma).
              Excludes match before includes -->
      <excludes></excludes>
    </database>

    <target>
      <!-- The destination package of your generated classes (within the destination directory) -->
      <packageName>mmbTest.jooq</packageName>

      <!-- The destination directory of your generated classes. Using Maven directory layout here -->
      <directory>E:/zuolin/workspace/jooqDemo/jooq/src/main/java</directory>
    </target>
  </generator>
</configuration>  

 

步骤2:手敲执行指令

根据网上的博文,只要手敲下面的指令即可完美收工:

java -classpath jooq-3.11.5.jar;jooq-meta-3.11.5.jar;jooq-codegen-3.11.5.jar;mysql-connector-java-5.1.18.jar;.  org.jooq.util.GenerationTool library.xml

可能我这边环境比较特殊,真实情况是这样的:

 

三、对于盲目照抄导致报错的不断填坑

坑NO1:class not found.

org.jooq.util.GenerationTool找不到该类??怎么可能呢,,难道要我手写一个??心一横,去看看jar包的class吧。

1)在jar包(jooq-codegen-3.11.5.jar)发现: org.jooq.codegen.GenerationTool;难道网上的文章有错,参数“org.jooq.util.GenerationTool”要改为“ org.jooq.codegen.GenerationTool”?

2)ok,换个参数试试,因为找光所有的jar包,都不存在:“org.jooq.util.GenerationTool”。

3)输入指令:

java -cp jooq-codegen-3.11.5.jar;jooq-3.11.5.jar;jooq-meta-3.11.5.jar;mysql-connector-java-5.1.18.jar;. org.jooq.codegen.GenerationTool library.xml

结果报错消失,填坑1完成(估计网上资料用的是比较旧的版本,所以某些class被移除掉了),但还是有错误提示:

 

坑NO.2:java.lang.ClassNotFoundException: org.jooq.util.DefaultGenerator

从上图可以知道,问题是我的 library.xml 文件配置出了问题,原因是 “org.jooq.util.DefaultGenerator” 这个 class 找不到了。

先去官方提供的xml文件模板瞄一下:

ok,注释掉它并修改为“JavaGenerator”;

问题解决,填坑2完成,但还是有报错:

坑NO.3:java.lang.ClassNotFoundException: org.jooq.util.mysql.MySQLDatabase

xml的 org.jooq.util.mysql.MySQLDatabase 找不到??去官网的模板瞄一下:

ok,注释掉它并修改为“org.jooq.meta.mysql.MySQLDatabase”;

最后一个坑填完!结束。

 

四、最终运行JOOQ逆向生成

最后执行指令:

java -cp jooq-3.11.5.jar;jooq-meta-3.11.5.jar;jooq-codegen-3.11.5.jar;mysql-connector-java-5.1.18.jar;. org.jooq.codegen.GenerationTool library.xml

无报错:

项目结构:

 

总结:纸上得来终觉浅,绝知此事要躬行。

 

猜你喜欢

转载自blog.csdn.net/qq_29166327/article/details/83046319