JOOQ快速上手(基于springboot 和 postgresql)
2018-06-17 20:09:00来源:未知 阅读 ()
是什么
- 全称Java Object Oriented Querying,基于java开发出来的工具包,主要用于访问关系型数据库。
为什么用
- Hibernate对SQL的操作太抽象
- JDBC使用太过繁琐
- JOOQ希望在上面两者中找到一个平衡。
基本过程
- 准备数据库中的表以及数据
- 使用JOOQ生成表结构代码文件
- 将代码文件加载到项目中调用
怎么用
- 在postgresql中准备数据
- database 为 report
- schema 为 site_issue
- table 为 issue_detail
1 CREATE TABLE site_issue.issue_detail 2 ( 3 site_id integer, 4 issue_key text COLLATE pg_catalog."default", 5 alert_type text COLLATE pg_catalog."default", 6 "alert_resolution " text COLLATE pg_catalog."default", 7 "duration_start " date, 8 "duration_end " date, 9 org_id integer 10 )
- 插入表数据
INSERT INTO site_issue.issue_detail( site_id, issue_key, alert_type, "alert_resolution ", "duration_start ", "duration_end ", org_id) VALUES (12,"23","error","asd",now(),now(),2323);
- 从https://start.spring.io/定制并下载Maven工程
- 从spring tool suite 加载report工程
- 配置pom.xml
<profiles> <profile> <id>postgresql</id> <build> <plugins> <plugin> <groupId>org.jooq</groupId> <artifactId>jooq-codegen-maven</artifactId> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.2</version> </dependency> </dependencies> <configuration> <jdbc> <driver>org.postgresql.Driver</driver> <url>jdbc:postgresql://localhost:5432/report</url> <user>postgres</user> <password>citrix</password> </jdbc> <generator> <name>org.jooq.util.DefaultGenerator</name> <database> <name>org.jooq.util.postgres.PostgresDatabase</name> <includes>.*</includes> <excludes /> <inputSchema>site_issue</inputSchema> </database> <target> <packageName>com.citrix.nanjing.report.jooq</packageName> <directory>gensrc/main/java</directory> </target> </generator> </configuration> </plugin> </plugins> </build> </profile> </profiles>
- 进入到代码根目录下执行 mvn clean install -P postgresql 执行完成之后你就可以看到gensrc/main/java 下面有对应的表结构代码
- 再配置pom.xml将代码加入到工程中
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>gensrc/main/java</source> </sources> </configuration> </execution> </executions> </plugin> </plugins> </build>
- 右键项目选择Maven–>update projects
- 代码中调用表结构数据
package priv.darrenqiao.nanjing.report.controller; 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 org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import priv.darrenqiao.nanjing.report.jooq.tables.*; @RestController @RequestMapping("/screport/") public class ReportController { @RequestMapping("test") public String testdada() {
//1. 指定 url 数据库用户名 密码 String userName = "postgres"; String password = "citrix"; String url = "jdbc:postgresql://localhost:5432/report"; //2. 创建连接 try (Connection conn = DriverManager.getConnection(url, userName, password)) { //3. 将连接和具体的数据库类型绑定 DSLContext create = DSL.using(conn, SQLDialect.POSTGRES);
//4. 执行查询 Result<Record> result = create.select().from(IssueDetail.ISSUE_DETAIL).fetch(); String re = null; for (Record r : result) { re = r.getValue(IssueDetail.ISSUE_DETAIL.ISSUE_KEY); } return re; } // For the sake of this tutorial, let's keep exception handling simple catch (Exception e) { e.printStackTrace(); } return "test"; } }
- 启动 访问 http://localhost:8080/screport/test 就能看到 23
问题记录
- Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.
- 修改注解 为 @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
- Unable to load the mojo 'resources'
- 右键菜单,Maven–>Update Projects.问题消失
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 经验分享:零基础如何快速入门Python?(菜鸟必看篇) 2019-07-24
- 知乎Python后端面试总结 2019-07-24
- python算法与数据结构-快速排序算法(36) 2019-07-24
- 8年开发经验程序员告诉你,零基础如何快速学习好python? 2019-05-22
- sklearn 快速入门教程 2019-05-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash