JOOQ简单使用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

  1. 新建maven项目,编辑pom.xml,编入依赖和插件,代码如下: 
    
    	4.0.0
    	org.test-jooq
    	quickstart
    	0.0.1-SNAPSHOT
    	jooq-quickstart
    	jar
    
    	
    		
    			org.jooq
    			jooq
    			3.8.0
    		
    		
    			org.jooq
    			jooq-meta
    			3.8.0
    		
    		
    			org.jooq
    			jooq-codegen
    			3.8.0
    		
    		
    			mysql
    			mysql-connector-java
    			5.1.38
    		
    		
    			com.alibaba
    			druid
    			1.0.18
    		
    	
    	
    	
    		
    			
    				org.apache.maven.plugins
    				maven-compiler-plugin
    				3.5.1
    				
    					1.8
    					1.8
    				
    			
    		
    	
    

    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资源包下:

    
    
    	
    	
    		com.mysql.jdbc.Driver
    		jdbc:mysql://localhost:3306/test
    		root
    		root
    	
    	
    		
    		org.jooq.util.JavaGenerator
    		
    			
    			org.jooq.util.mysql.MySQLDatabase
    			
    			test
    			
    			.*
    			
    			
    		
    		
    			
    			org.test.jooq.generated
    			
    			src/main/java/
    		
    	
    

    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 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 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();
            }
    
        }
    }
    

    项目结构如图:JOOQ简单使用_第1张图片

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

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

转载于:https://my.oschina.net/u/935814/blog/674777

你可能感兴趣的:(JOOQ简单使用)