JOOQ 代码生成

Maven Java 项目pom.xml 文件


	4.0.0
	com.zzg
	java
	0.0.1-SNAPSHOT


	
		******
        
		
			mysql
			mysql-connector-java
			8.0.15
		
		
		
			org.jooq
			jooq
			3.12.3
		
	

	
		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					1.8
					1.8
					UTF-8
				
			
			
			
            org.jooq
            jooq-codegen-maven
            3.12.3
            
                
                
                    com.mysql.cj.jdbc.Driver
                    jdbc:mysql://localhost:3306/myblog?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
                    root
                    123456
                
                
                    
                        
                        .*
                        
                        

                        
                        myblog
                    
                    
                    
                        com.zzg.jooq
                        /src/main/java
                    
                
            
        
		
	

新建Java Maven项目的编译指令:mvn jooq-codegen:generate

JOOQ 代码生成_第1张图片

生成结果展示:

JOOQ 代码生成_第2张图片 

相关类说明:

com.zzg.jooq.Keys:主要记录自增键、唯一键、外键。

com.zzg.jooq.Tables:主要记录数据库下涉及的表常量

com.zzg.jooq.Index:主要记录数据库涉及的索引。

com.zzg.jooq.DefaultCatalog:主要获取实体对象的Schema.

com.zzg.jooq.Myblog:数据库`Myblog`常量,包含该库所有表描述常量

com.zzg.jooq.tables 文件夹,记录了数据表中每个字段信息,包括字段名、数据类型、非空、默认值等。注意:假设表里添加了新字段,就要修改这个文件

JOOQ 代码生成_第3张图片

 com.zzg.jooq.tables.records文件夹,主要涉及表操作对象,包含字段get,set方法。

JOOQ 代码生成_第4张图片

JOOQ 简单查询:

package com.zzg.jooq.test;

import java.sql.Connection;
import java.sql.DriverManager;

import org.jooq.DSLContext;
import org.jooq.Record;
import org.jooq.Result;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;

import com.zzg.jooq.Tables;
import com.zzg.jooq.tables.User;

public class JooqTest {
	// 用户名
	public static String userName = "root";
	// 密码
	public static String password = "123456";
	// mysql连接url
	public static String url = "jdbc:mysql://localhost:3306/myblog?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";

	public static void main(String[] args) {
		try (Connection conn = DriverManager.getConnection(url, userName, password)) {
			DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
			Result result = create.select().from(Tables.USER).fetch();

			for (Record r : result) {
				Integer id = r.getValue(Tables.USER.ID);
				String address = r.getValue(Tables.USER.ADDRESS);
				String username = r.getValue(Tables.USER.USERNAME);

				/**
				 * 控制台输出 ID: 1 first name: 3 last name: zhang ID: 2 first name: 4 last name: li
				 */
				System.out.println("ID: " + id + " address is: " + address + " username name: " + username);
			}

			// 关闭连接对象
			conn.close();
		}
		// For the sake of this tutorial, let's keep exception handling simple
		catch (Exception e) {
			e.printStackTrace();
		}

	}

}

 控制台结果输出:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Administrator/.m2/repository/org/apache/activemq/activemq-all/5.15.13/activemq-all-5.15.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Administrator/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Administrator/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
 INFO | 
                                      
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@  @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@        @@@@@@@@@@
@@@@@@@@@@@@@@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@  @@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@        @@  @  @  @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  Thank you for using jOOQ 3.12.3
                                      
ID: 1 address is: 广东省深圳市 username name: zzg
ID: 2 address is: 广东省深圳市 username name: wz
ID: 3 address is: 广东省深圳市 username name: zcx

JOOQ 核心类总结:

org.jooq.DSLContext:

jOOQ的核心接口之一,可以理解为一个SQL执行器,通过静态方法 DSL.using,可以获取一个 DSLContext 实例,此实例抽象了所有对于SQL的操作API,可以通过其提供的API方便的进行SQL操作。

JOOQ 代码生成_第5张图片

重点: 通过数据库连接和数据库方言配置来创建一个执行器对象。

org.jooq.Result:

结果集接口,此接口实现了List接口,可以当做一个集合来操作,是一个数据库查询结果集的包装类,除了集合的相关方法,该接口还提供了一些结果集转换,格式化,提取字段等方法。通常我们查询出来的结果都是此接口的实现类,掌握好此接口是jOOQ的基础接口,基本所有的SQL查询操作,都会碰到这个接口。

org.jooq.Record

主要用于定义数据库表记录,储存的内容是一条表记录的字段和值,每个值会储存对应字段的类型,可以通过通用的 getValue(Field field) 方法,取到对应字段的值,也可以将这个接口看做是一条记录的字段/值映射。

你可能感兴趣的:(jooq)