文档章节

JOOQ简单使用

KELLS
 KELLS
发布于 2016/05/13 18:54
字数 983
阅读 2448
收藏 37
点赞 3
评论 5

    JOOQ跟其他的ORM框架类似,需要做一个映射。JOOQ也要做一个映射,不过JOOQ是通过代码类进行生成,官方的jar内提供了一个工具类可以用来生成。

  1. 新建maven项目,编辑pom.xml,编入依赖和插件,代码如下: 
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>org.test-jooq</groupId>
    	<artifactId>quickstart</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>jooq-quickstart</name>
    	<packaging>jar</packaging>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.jooq</groupId>
    			<artifactId>jooq</artifactId>
    			<version>3.8.0</version>
    		</dependency>
    		<dependency>
    			<groupId>org.jooq</groupId>
    			<artifactId>jooq-meta</artifactId>
    			<version>3.8.0</version>
    		</dependency>
    		<dependency>
    			<groupId>org.jooq</groupId>
    			<artifactId>jooq-codegen</artifactId>
    			<version>3.8.0</version>
    		</dependency>
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.38</version>
    		</dependency>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.0.18</version>
    		</dependency>
    	</dependencies>
    	
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>3.5.1</version>
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>

    2. 创建数据库和表,代码如下:

    -- ----------------------------
    -- 创建数据库TEST
    -- ----------------------------
    CREATE DATABASE `TEST` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    USE TEST;
    
    -- ----------------------------
    -- 创建UsersINFO表
    -- ----------------------------
    DROP TABLE IF EXISTS `UsersINFO`;
    CREATE TABLE `UsersINFO` (
      `usersid` int(11) NOT NULL AUTO_INCREMENT,
      `usersname` varchar(20) NOT NULL,
      `userspwd` varchar(20) NOT NULL,
      PRIMARY KEY (`usersid`),
      UNIQUE KEY `uk_usersname` (`usersname`)
    ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- 添加测试数据
    -- ----------------------------
    INSERT INTO `UsersINFO` VALUES ('1', 'admin', '123');
    INSERT INTO `UsersINFO` VALUES ('2', 'guest', '123');
    INSERT INTO `UsersINFO` VALUES ('3', 'root', '123');
    
    commit;

    3. JOOQ需要使用工具类检索xml文件生成数据映射,官方网站提供了一个xml文件模板,在这个页面下http://www.jooq.org/doc/3.8/manual/getting-started/tutorials/jooq-in-7-steps/jooq-in-7-steps-step3/   我修改后的xml文件我放在了maven项目的resources资源包下:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.8.0.xsd">
    	<!-- 配置jdbc驱动连接 -->
    	<jdbc>
    		<driver>com.mysql.jdbc.Driver</driver>
    		<url>jdbc:mysql://localhost:3306/test</url>
    		<user>root</user>
    		<password>root</password>
    	</jdbc>
    	<generator>
    		<!-- 代码生成器 -->
    		<name>org.jooq.util.JavaGenerator</name>
    		<database>
    			<!-- 数据库类型 -->
    			<name>org.jooq.util.mysql.MySQLDatabase</name>
    			<!-- 数据库名 -->
    			<inputSchema>test</inputSchema>
    			<!-- 生成包含,*表示包含所有内容 -->
    			<includes>.*</includes>
    			<!--剔除,此处未剔除 -->
    			<excludes></excludes>
    		</database>
    		<target>
    			<!-- 生成的代码所在的包结构 -->
    			<packageName>org.test.jooq.generated</packageName>
    			<!-- 生成的代码存放路径,默认会以src同目录开始 -->
    			<directory>src/main/java/</directory>
    		</target>
    	</generator>
    </configuration>

    4. 官方网站说通过命令去执行,但是命令我执行不通,说找不到类,后面想了个办法直接用eclipse工具新建了run configure运行。官方的执行代码如下:

    1. Windows: 

      java -classpath jooq-3.8.0.jar;jooq-meta-3.8.0.jar;jooq-codegen-3.8.0.jar;mysql-connector-java-5.3.18-bin.jar;.
        org.jooq.util.GenerationTool Test.xml
    2. Linux \ Mac \Unix:
      java -classpath jooq-3.8.0.jar:jooq-meta-3.8.0.jar:jooq-codegen-3.8.0.jar:mysql-connector-java-5.3.18-bin.jar:.
        org.jooq.util.GenerationTool Test.xml
    3. 代码的意思大概就是执行org.jooq.util包下的GenerationTool类,并将 Text.xml作为args传过去给它使用,执行后控制台会显示一大段日志,说明成功了,按照我上面的Test.xml设置,生成后的类文件应该在maven项目的src/main/java源码包下的org.test.jooq包下的generated包里面,包含一个tables包和defaultCatalog.java、Keys.java、Tables.java、Test.java这几个东西,这样就配置完了
  2. 新建一个测试类测试JOOQ,代码如下:

    public class Test {
    
    	public static void main(String[] args) throws SQLException {		
    		Connection conn = getDataSource().getConnection();
    		// 配置方言
    		DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
            // 获得查询结果
            Result<Record> result = create.select().from(USERSINFO).fetch();
    
            for ( Record r : result ) {
                Integer id = r.getValue(USERSINFO.USERSID);
                String name = r.getValue(USERSINFO.USERSNAME);
                String pwd = r.getValue(USERSINFO.USERSPWD);
    
                System.out.println("ID: " + id + " NAME : " + name + " PWD : " + pwd);
            }
    	}
    
    	public static DruidDataSource getDataSource() {
    		// 使用alibaba的Druid数据连接池
    		DruidDataSource dds = new DruidDataSource();
    		dds.setDriverClassName("com.mysql.jdbc.Driver");
    		dds.setUrl("jdbc:mysql://localhost:3306/test");
    		dds.setUsername("root");
    		dds.setPassword("root");
    		
    		// dds.setFilters("stat");
    		dds.setInitialSize(2);
    		dds.setMaxActive(100);
    		dds.setMaxWait(20000);
    		dds.setPoolPreparedStatements(false);
    		
    		return dds;
    	}
    }

    上面的代码使用了Druid数据源,下面的代码使用jdbc:

    public class Test {
        public static void main(String[] args) throws ClassNotFoundException {
    
            String userName = "root";
            String password = "root";
            String url = "jdbc:mysql://localhost:3306/test";
    
    
    
            Class.forName("com.mysql.jdbc.Driver");
            try (Connection conn = DriverManager.getConnection(url,userName,password)) {
                DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
                Result<Record> result = create.select().from(USERSINFO).fetch();
    
                for ( Record r : result ) {
                    Integer id = r.getValue(USERSINFO.USERSID);
                    String name = r.getValue(USERSINFO.USERSNAME);
                    String pwd = r.getValue(USERSINFO.USERSPWD);
    
                    System.out.println("ID: " + id + " NAME : " + name + " PWD : " + pwd);
                }
            } catch ( Exception e ) {
                e.printStackTrace();
            }
    
        }
    }
    

    项目结构如图:

  3. 然后执行测试类就可以了...

  4. 以后再更新web端的使用

© 著作权归作者所有

共有 人打赏支持
KELLS
粉丝 1
博文 1
码字总数 983
作品 0
深圳
程序员
加载中

评论(5)

Claymorex
Claymorex
KELLS
KELLS

引用来自“xmlspyspring”的评论

感觉还是用spring data jpa 比较好

我也觉得,JOOQ这API我是有点迷
KELLS
KELLS

引用来自“CapJes”的评论

几年前都已经关注JOOQ,好像和JFinal都是采用的ActiveRecord的模式操作数据库。

对啊,都用的Record
xmlspyspring
xmlspyspring
感觉还是用spring data jpa 比较好
CapJes
CapJes
几年前都已经关注JOOQ,好像和JFinal都是采用的ActiveRecord的模式操作数据库。
jOOQ 3.11:新增支持四款数据库以及 implicit joins

jOOQ 3.11 已发布,新增支持 4 个新的数据库、implicit joins、诊断等等。 新增支持的数据库 jOOQ 专业版 Aurora MySQL Edition Aurora PostgreSQL Edition Azure SQL Data Warehouse jOOQ 企...

局长
06/08
0
1
Spring Boot 2.0.3 和 1.5.14 发布,包含 bug 修复和改进

Spring Boot 2.0.3 和 1.5.14 均已发布,可从 repo.spring.io 和 Maven Central 获取更新。 据发布主页显示,两者的更新主要都是修复了 bug,功能改进以及依赖的升级。 Spring Boot 1.5.14 发...

淡漠悠然
06/14
0
0
spring boot(2)起步依赖spring-boot-starter-*详解

--The core Spring Boot starter, including auto-configuration support, logging and YAML. --Spring Boot starter核心模块,包括自动配置支持,日志和YAML。 --Support for the “Advance......

刘胜球
2017/10/25
0
0
鲜为人知的Java8特性:泛化目标类型推断

本文由 ImportNew - 彭秦进 翻译自 javacodegeeks。如需转载本文,请先参见文章末尾处的转载要求。 ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式...

Big_BoBo
2014/01/02
0
0
分享几个JAVA程序员们最容易犯的错误,你中了几枪?

都说Java语言是一门简单的编程语言,基于C++演化而来,剔除了很多C++中的复杂特性,但这并不能保证Java程序员不会犯错。那么对于广大的Java程序员来说,它们最常犯的几个错误都是什么样的呢?...

启示录是真的
05/25
0
0
第二章——Spring Boot启动器与依赖管理

强烈推荐选择支持依赖管理和可以发布到“Maven中央”仓库的构建系统。推荐使用Maven或Gradle。Spring Boot可以使用其他构建系统(例如,Ant),但支持得并不是很好。 1 依赖管理 Spring Boo...

Leech
02/04
0
0
基于 Java 的 Active Record 开源项目

Active Record 是什么?也许很多做 Java 的朋友并没有听说过这个概念,但它确实很早就已经出现了。 确切地说,应该是在 2003 年,由世界大师级人物 Martin Fowler(马丁 · 福勒)在他写的一...

黄勇
2014/05/23
0
29
10 个精妙的 Java 编码最佳实践

(点击上方公众号,可快速关注) 来源:ImportNew - liken 这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表。和Josh Bloch的列表容易学习并且关注日常情况相比,这...

ImportNew
04/15
0
0
关于Java你可能不知道的10件事

关于Java你可能不知道的10件事 本文由 ImportNew - Jerry Lee 翻译自 Jooq。欢迎加入翻译小组。转载请参见文章末尾的要求。 呃,你是不是写Java已经有些年头了?还依稀记得这些吧: 那些年,...

enosh
2014/11/27
0
0
2----Apache的工作模式

本文转自 wpf926 51CTO博客,原文链接:http://blog.51cto.com/wupengfei/1955990,如需转载请自行联系原作者

余二五
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

eclipse SVN 项目重新定位

SVN 重新定位 1.方法一 首先:在Eclipse中选择Windows-> Show View->others 就会出现【SVN资源库/SVN Repositories】,选中后,点击确认; 然后:选中原有的地址,选择【重新定位/Relocate】...

qimh
13分钟前
0
0
Linux 第29课 ——Linux集群架构(下)

Linux集群架构(下) 八、DR模式搭建 8.1 准备工作 试验需求三台机器: 分发器,也叫调度器(简写为dir) 192.168.112.136 ying01 rs1 192.168.112.138 ying02 rs2 192.168.112.139 ying03 vip...

feng-01
18分钟前
0
0
轻松搭建svn版本管理工具+svnmanager管理客户端

前面的文章有写过svn版本管理工具的安装是基于svn的安装包进行安装,对于svn与apache的结合还得下svn和apache的模块进行结合过程比较繁琐,今天来介绍下通过centos的yum来安装svn能够快速安装...

javazyw
27分钟前
0
0
keepalived配置高可用集群

Linux集群概述 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:...

TaoXu
32分钟前
0
0
mysql联表批处理操作

1 概述 mysql中的单表增删改查操作,可以说是基本中的基本. 实际工作中,常常会遇到一些基本用法难以处理的数据操作,譬如遇到主从表甚至多级关联表的情况(如一些历史问题数据的批量处理),考虑到...

社哥
35分钟前
0
0
IntelliJ IDEA 详细图解最常用的配置,适合刚刚用的新人。

刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改...

kim_o
50分钟前
0
0
Google Java编程风格指南

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合...

niithub
52分钟前
0
0
java.net.MalformedURLException异常说明

1.异常片段 Java代码中,在进行URL url = new URL(urllink)操作时,提示以下异常信息,该类异常主要问题出在参数urllink上面。 异常片段1 java.net.MalformedURLException at java.ne...

lqlm
52分钟前
1
0
CentOS7修改mysql5.6字符集

解决办法:CentOS7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家所需要的字符集,是国际编码。 具体操作如下: 1.进入MySQL [root@tianqi-01 ~]# mysql -uroot -p Enter passw...

河图再现
54分钟前
0
0
DevExpress v18.1新版亮点——WPF篇(一)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载>> Accordion Co...

Miss_Hello_World
56分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部