快速操作数据层框架:FastQuery

移动开发
FastQuery 基于Java语言.他的使命是:简化Java操作数据层.做为一个开发者,仅仅只需要设计编写DAO接口即可,其内部采用ASM动态生成实现,执行快. 因此,代码简洁而优雅.从而,大幅度提升开发效率.

FastQuery 快速操作数据层框架

FastQuery 基于Java语言.他的使命是:简化Java操作数据层.做为一个开发者,仅仅只需要设计编写DAO接口即可,其内部采用ASM动态生成实现,执行快. 因此,代码简洁而优雅.从而,大幅度提升开发效率.

FastQuery 主要特性如下:

  1. 设计优雅,配置简单,简易上手.
  2. 采用ASM动态生成字节码,因此支持编译前预处理,可***限度减少运行期的错误.显著提升程序的强壮性.
  3. 支持安全查询,防止SQL注入.
  4. 支持与主流连接池框架集成,如集成c3p0,dbcp等等
  5. 支持 @Query 查询,使用 @Condition ,可实现动态 where 条件查询.
  6. 查询结果集支持JSON类型
  7. 支持AOP,注入拦截只需简单几个注解,如: @Before , @After

运行环境要求

jdk1.8+

配置文件

jdbc-config.xml

用来配置支持jdbc. 注意:如果采用连接池,该配置文件可以不要.

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <jdbc-config>    
  3.         <!-- 配置***个数据源 --> 
  4.         <named-config name="xk_db">    
  5.         <property name="driverClass">com.mysql.jdbc.Driver</property>    
  6.         <property name="url">jdbc:mysql://192.168.1.1:3306/xk?user=xk&password=abc123</property> 
  7.         </named-config> 
  8.  
  9.         <!-- 配置第二个数据源 --> 
  10.         <named-config name="shtest_db">    
  11.         <property name="driverClass">com.mysql.jdbc.Driver</property>  <!-- jdbc 驱动 --> 
  12.         <property name="databaseName">dbname</property>  <!-- 数据库的名称 --> 
  13.         <property name="user">username</property>  <!-- 数据库用户名称 --> 
  14.         <property name="password">userpasswd</property>  <!-- 数据库用户的密码 -->   
  15.         <property name="portNumber">3306</property>   <!-- 端口 --> 
  16.         <property name="serverName">192.168.1.1</property> <!-- 数据库主机地址 --> 
  17.     </named-config> 
  18. </jdbc-config> 

c3p0-config.xml

支持c3p0配置,详情配置请参照c3p0官网的说明: http://www.mchange.com/projects/c3p0/ .

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <c3p0-config>    
  3.     <!--  
  4.     <default-config>    
  5.         <property name="driverClass">com.mysql.jdbc.Driver</property>    
  6.         <property name="jdbcUrl">jdbc:mysql://...</property> 
  7.         <property name="user">root</property>    
  8.         <property name="password">123***</property>    
  9.         <property name="initialPoolSize">10</property>    
  10.         <property name="maxIdleTime">30</property>    
  11.         <property name="maxPoolSize">20</property>    
  12.         <property name="minPoolSize">5</property>    
  13.         <property name="maxStatements">200</property>    
  14.     </default-config>   
  15. -->     
  16.     <named-config name="xk-c3p0">    
  17.         <property name="driverClass">com.mysql.jdbc.Driver</property>    
  18.         <property name="jdbcUrl">jdbc:mysql://192.168.1.1:3306/xk</property>    
  19.         <property name="user">xk</property>    
  20.         <property name="password">abc123</property>    
  21.         <property name="acquireIncrement">50</property>    
  22.         <property name="initialPoolSize">100</property>    
  23.         <property name="minPoolSize">50</property>    
  24.         <property name="maxPoolSize">1000</property> 
  25.         <property name="maxStatements">0</property>    
  26.         <property name="maxStatementsPerConnection">5</property>       
  27.         </named-config>   
  28. </c3p0-config> 

fastquery.json

配置数据源的作用范围 

  1. // @author xixifeng (fastquery@126.com)  
  2. // 配置必须遵循标准的json语法.  
  3. [  
  4.     // config目前支持的可选值有"jdbc","c3p0"  
  5.     {  
  6.         "config": "c3p0",            // 表示由c3p0负责提供数据源  
  7.         "dataSourceName": "xk-c3p0", // 数据源的名称  
  8.         "basePackages": [            // 该数据源的作用范围  
  9.             "org.fastquery.example.StudentDBService"  
  10.         ]  
  11.     },  
  12.  
  13.     /*  
  14.      再配置一个数据源作用域  
  15.     */  
  16.     {  
  17.         "config" : "jdbc",            // 表示由jdbc驱动负责提供数据源  
  18.         "dataSourceName": "shtest_db",  
  19.         "basePackages": [ // 该数据源的作用范围  
  20.             "org.fastquery.example.DataAcquireDbService"  
  21.         ]  
  22.     }  

一个完整的入门例子

  • 准备一个实体 
  1. public class Student  
  2. {  
  3.   private String no;  
  4.   private String name;  
  5.   private String sex;  
  6.   private Integer age;  
  7.   private String dept;  
  8.   // getter /setter 省略...  
  • DAO接口
  1. public interface StudentDBService extends QueryRepository {  
  2. @Query("select * from student")  
  3. JSONArray findAll();  
  4. @Query("select * from student")  
  5. Student[] find();        
  • 使用DAO接口. 
  1. StudentDBService studentDBService = FQuery.getRepository(StudentDBService.class);  
  2. JSONArray jsonArray = studentDBService.findAll();  
  3. Student[] students = studentDBService.find(); 

 

责任编辑:陈琳 来源: 码云
相关推荐

2011-07-01 13:42:24

QT 数据库

2009-12-28 16:57:40

ADO .NET 类

2009-09-15 09:50:07

Linq操作数据库

2020-11-16 08:56:02

Python

2011-07-05 10:27:06

MySQL数据库检索排序

2011-04-19 10:20:09

数据库

2023-09-27 07:49:23

2009-09-03 09:52:26

C# treeview

2009-08-24 16:46:04

C# 泛型

2023-12-27 13:44:00

数据库系统分布式

2010-06-21 08:52:12

数字证书.NET

2023-12-14 15:07:31

多线程数据库代码

2020-03-11 20:11:06

电脑骚操作AMD

2009-07-07 09:24:37

LINQ检索

2020-12-08 10:40:45

数据中心远程操作托管数据中心

2023-08-08 07:47:55

编程语言MongoDB

2009-08-04 14:52:33

Visual Web ASP.NET

2023-06-15 15:21:43

2023-04-27 09:36:43

2023-05-23 16:25:48

MyBatisSQL数据库
点赞
收藏

51CTO技术栈公众号