`

JFinal+JOOQ 简单整合

 
阅读更多

本文来自: fair-jm.iteye.com 转截请注明出处

 

JFinal 介绍自行移步到其官网:

http://www.jfinal.com/

 

简单来说JFinal的定位是接近全栈的 所以我这边硬生生把JOOQ拉进来有点违背他的用意

这篇文章也就当作一个记录好了 以免以后忘记什么东西

 

环境使用:

  • JDK1.8
  • Tomcat8
  • JFinal 1.8(1.9已经出了 但maven仓库里还没有 我就偷懒用了1.8)
  • JOOQ 3.4.4 

JOOQ的codegen使用很简单 可以参考官网手册

http://www.jooq.org/doc/3.4/manual-pdf/jOOQ-manual-3.4.pdf

这里不再累述

 

首先是maven的依赖项:

 

	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.33</version>
		</dependency>
		<dependency>
			<groupId>org.jooq</groupId>
			<artifactId>jooq-meta</artifactId>
			<version>3.4.4</version>
		</dependency>
		<dependency>
			<groupId>com.jfinal</groupId>
			<artifactId>jfinal</artifactId>
			<version>1.8</version>
		</dependency>
		<dependency>
			<groupId>org.jooq</groupId>
			<artifactId>jooq</artifactId>
			<version>3.4.4</version>
		</dependency>
		<dependency>
			<groupId>org.jooq</groupId>
			<artifactId>jooq-codegen</artifactId>
			<version>3.4.4</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>1.1.2</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-access</artifactId>
			<version>1.1.2</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.2</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.9</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>XX</finalName>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.2</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

 

 

logback的配置:

 

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
		</encoder>
	</appender>

	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>logs/application.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- Daily rollover with compression -->
			<fileNamePattern>application-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
			<!-- keep 30 days worth of history -->
			<maxHistory>30</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
		</encoder>
	</appender>
	
	<!-- ingore log -->
	<logger name="org.jooq.Constants" level="OFF" />
	<logger name="com.alibaba.druid.pool.DruidDataSource" level="OFF" />

	<root level="INFO">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>

</configuration>

 

 

web-inf.xml的配置:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
	<filter>
		<filter-name>jfinal</filter-name>
		<filter-class>com.jfinal.core.JFinalFilter</filter-class>
		<init-param>
			<param-name>configClass</param-name>
			<param-value>com.cc.xx.config.Config</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>jfinal</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<display-name>Archetype Created Web Application</display-name>
</web-app>

 

 

Config.java内容:

 

package com.cc.xx.config;
... ...
public class Config extends JFinalConfig {

    @Override
    public void afterJFinalStart() {
        super.afterJFinalStart();
        DBTool.shutDown();
    }

    @Override
    public void beforeJFinalStop() {
        super.beforeJFinalStop();
        DBTool.getDataSource();
    }

    @Override
    public void configConstant(Constants me) {
        me.setDevMode(true);
        me.setViewType(ViewType.FREE_MARKER);
    }

    @Override
    public void configRoute(Routes me) {
        me.add("/test", Test.class);
    }
 ... ...

}

   

 

数据库属性配置:

 

db.url=jdbc:mysql://localhost:3306/xx
db.name=root
db.password=
ds.initialSize=1
ds.maxActive=20
ds.minIdle=10
ds.maxIdle=15
ds.maxWait=60000
ds.validationQuery=SELECT 'x'

 

 

连接池配置:

 

package com.cc.xx.db;

... ...
public class DBTool {

    private static Logger LOG = LoggerFactory.getLogger(DBTool.class);
    private volatile static DruidDataSource dataSource;

    public static DataSource getDataSource() {
        if (dataSource == null) {
            synchronized (DBTool.class) {
                if (dataSource == null) {
                    Properties prop = new Properties();
                    try {
                        prop.load(DBTool.class.getResourceAsStream("/db.properties"));
                    } catch (IOException e) {
                        LOG.error("getDataSource", e);
                    }
                    dataSource = new DruidDataSource();
                    dataSource.setUrl((String) prop.get("db.url"));
                    dataSource.setUsername((String) prop.get("db.name"));
                    dataSource.setPassword((String) prop.get("db.password"));
                    dataSource.setInitialSize(Integer.valueOf((String) prop.get("ds.initialSize")));
                    dataSource.setMinIdle(Integer.valueOf((String) prop.get("ds.minIdle")));
                    dataSource.setMaxActive(Integer.valueOf((String) prop.get("ds.maxActive")));
                    dataSource.setMaxWait(Long.valueOf((String) prop.get("ds.maxWait")));
                    dataSource.setValidationQuery((String) prop.get("ds.validationQuery"));
                }
            }
        }
        return dataSource;
    }

    public static void shutDown() {
        if (dataSource != null) {
            dataSource.close();
        }
    }

}

 

 

测试代码:

 

package com.cc.xx.controller;
... ...
public class Test extends Controller {

    public void index() {
        List<String> s = DSL.using(DBTool.getDataSource(), SQLDialect.MYSQL).select(FACTORY.ID).from(FACTORY).limit(0, 10)
                .fetch(r -> r.getValue(FACTORY.ID));
        renderJson(s);
    }
}

 

这样就好了

可以看到这和我在play2和slick2整合一样 是单独使用了连接池 类似一种外挂的形式放到原有框架中去

不过也就是简单的整合 具体使用以后会再补充

 

 

本文来自: fair-jm.iteye.com 转截请注明出处

0
0
分享到:
评论

相关推荐

    基于jfinal+element ui+vue的开源商城管理系统.zip

    基于jfinal+element ui+vue的开源商城管理系统 基于jfinal+element ui+vue的开源商城管理系统 基于jfinal+element ui+vue的开源商城管理系统 基于jfinal+element ui+vue的开源商城管理系统 基于jfinal+element ...

    基于jfinal+vue+ElementUI的前后端分离CRM系统.zip

    基于jfinal+vue+ElementUI的前后端分离CRM系统 主要技术栈 核心框架:jfinal3.8 缓存:redis caffeine 数据库连接池:Druid 工具类:hutool,fastjson,poi-ooxml 定时任务:jfinal-cron 项目构建工具:maven ...

    maven整合jfinal+mysql

    在IT行业中,构建Java Web应用是一项常见的任务,而"Maven整合JFinal+MySQL"就是这样的一个实践案例。这里我们将深入探讨这个主题,了解如何利用Maven构建工具、JFinal轻量级框架以及MySQL数据库来创建一个高效且...

    JFinal+layui极速开发企业应用管理系统,是以JFinal+layui为核心的企业应用项目架构

    让开发更简单高效,即使你不会layui,也能轻松掌握使用。该项目的核心功能有:登录、功能管理、角色管理(包含了权限管理)、用户管理、部门管理、系统日志、业务字典,报表管理、代码生成器、通用的附件上传、下载...

    Jfinal+Layui +sql文件 整合Demo1.0版本

    1. **Jfinal框架**:Jfinal是一个基于Java的轻量级Web开发框架,它以"简单、高效"为核心,提供了丰富的插件支持和灵活的API设计。在本Demo中,Jfinal被用作后端的主要开发工具,负责处理HTTP请求,提供数据访问层...

    JFinal+视频+资源

    JFinal 是一款基于 Java 语言的轻量级 Web 开发框架,它以“简单、高效”为核心,致力于提供快速开发能力,使得开发者能够更专注于业务逻辑的实现,而不是繁琐的底层代码。JFinal 的设计目标是打造国内最好的 MVC ...

    jfinal+shiro简单的整合

    《JFinal与Shiro的简单整合详解》 在Web开发领域,JFinal和Apache Shiro是两个备受开发者青睐的工具。JFinal是一个基于Java的轻量级MVC框架,以其简洁、高效的特性受到广泛欢迎。而Apache Shiro则是一个强大且易用...

    jfinal+shiro整合的一个例子

    JFinal是一个基于Java的轻量级MVC框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级且易于扩展。而Apache Shiro则是一个强大的安全框架,它提供了认证、授权、加密以及会话管理等功能,使得...

    基于JFinal+Hadoop+mysql的云盘管理系统.rar

    基于JFinal+Hadoop+mysql的云盘管理系统 源代码和sql文件都在里面 参考以下吧,大家! 详情咨询博客地址: http://blog.csdn.net/cptcpt123/article/details/20581339 【实例截图】 【核心代码】 JFinalHadoopmysql...

    JFinal + Redis 实现action的数据缓存

    JFinal + Redis 实现action的数据缓存 在Controller的public void 方法上写上 @Before(RedisCacheInterceptor.class) 即可实现redis缓存 需要在Appconfig中configPlugin代码进行插件加入 RedisPlugin appRedis = ...

    JFinal + shiro+freemarker +bootstrap3 后台基础管理

    JFinal + shiro+freemarker +bootstrap3 后台基础管理 开发说明 1.导入 doc/jfinal-base-admin.sql 2.修改数据库配置文件 src/main/resources/development下example.db.properties文件名为 db.properties 并填写对应...

    JFinal+Maven+FreeMarker入门实例

    JFinal的轻量级特性使得项目启动快速,Maven的依赖管理让项目构建变得简单,而FreeMarker则提供了灵活的视图渲染机制。通过这个入门实例,开发者可以快速上手并理解这三者如何协同工作,为后续的项目开发打下坚实...

    悟空CRM-基于jfinal+vue+ElementUI的前后端分离CRM系统

    悟空CRM-基于jfinal+vue+ElementUI的前后端分离CRM系统。悟空CRM云服务完全免费,且不限人数。悟空云正式上线,包含客户关系管理系统(CRM)人力资源管理系统(CRM)、财务管理系统(FS)、无代码平台、SCRM。悟空...

    idea+jfinal+lucene

    本项目“idea+jfinal+lucene”就聚焦于这个领域,结合了IntelliJ IDEA(一个强大的Java开发集成环境)、JFinal(一个轻量级的Java Web框架)以及Lucene(一个高性能的全文搜索引擎库),来实现一个完整的全文检索...

    基于JFinal+Hadoop+mysql的云盘管理系统

    基于JFinal+Hadoop+mysql的云盘管理系统 源代码和sql文件都在里面 参考以下吧,大家! 详情咨询博客地址: http://blog.csdn.net/cptcpt123/article/details/20581339

    基于jfinal+shiro+layui+freemarker等框架和技术结合maven多模块方式构建开发的一款通用内容发布系统

    Shiro的简单API使得安全功能的集成变得容易,同时提供了一套完整的安全管理解决方案。 layui是一款优秀的前端UI框架,其设计理念在于轻量、模块化。layui提供了丰富的组件,如表格、表单、按钮、弹层、导航等,可以...

    CRM前后端分离项目( jfinal + vue + ElementUI)

    CRM(客户关系管理系统)采用jfinal + vue + ElementUI的前后端分离架构,是一种现代且高效的软件开发方式。以下是对该系统的详细介绍: 一、系统架构 该系统基于前后端分离的设计模式,前端使用Vue.js框架结合...

    JFinal+freemarker+maven demo实例

    1. **路由配置**:JFinal通过简单的`@Action`注解进行URL路由配置,使得代码结构清晰,易于维护。 2. **模型映射**:JFinal的Model类提供了数据库操作的便利,直接映射到数据库表,无需编写SQL语句。 3. **插件化**...

    JFinal+mysql增删改查实例

    在这个"JFinal+mysql增删改查实例"中,我们将深入探讨如何使用Java的轻量级框架JFinal与MySQL数据库进行交互,实现数据的增、删、改、查操作。这是一项基础但至关重要的技能,对于任何Java Web开发者来说都是必须...

Global site tag (gtag.js) - Google Analytics