快速操作數(shù)據(jù)層框架:FastQuery
FastQuery 快速操作數(shù)據(jù)層框架
FastQuery 基于Java語言.他的使命是:簡化Java操作數(shù)據(jù)層.做為一個開發(fā)者,僅僅只需要設(shè)計編寫DAO接口即可,其內(nèi)部采用ASM動態(tài)生成實現(xiàn),執(zhí)行快. 因此,代碼簡潔而優(yōu)雅.從而,大幅度提升開發(fā)效率.
FastQuery 主要特性如下:
- 設(shè)計優(yōu)雅,配置簡單,簡易上手.
- 采用ASM動態(tài)生成字節(jié)碼,因此支持編譯前預處理,可***限度減少運行期的錯誤.顯著提升程序的強壯性.
- 支持安全查詢,防止SQL注入.
- 支持與主流連接池框架集成,如集成c3p0,dbcp等等
- 支持 @Query 查詢,使用 @Condition ,可實現(xiàn)動態(tài) where 條件查詢.
- 查詢結(jié)果集支持JSON類型
- 支持AOP,注入攔截只需簡單幾個注解,如: @Before , @After
運行環(huán)境要求
jdk1.8+
配置文件
jdbc-config.xml
用來配置支持jdbc. 注意:如果采用連接池,該配置文件可以不要.
- <?xml version="1.0" encoding="UTF-8"?>
- <jdbc-config>
- <!-- 配置***個數(shù)據(jù)源 -->
- <named-config name="xk_db">
- <property name="driverClass">com.mysql.jdbc.Driver</property>
- <property name="url">jdbc:mysql://192.168.1.1:3306/xk?user=xk&password=abc123</property>
- </named-config>
- <!-- 配置第二個數(shù)據(jù)源 -->
- <named-config name="shtest_db">
- <property name="driverClass">com.mysql.jdbc.Driver</property> <!-- jdbc 驅(qū)動 -->
- <property name="databaseName">dbname</property> <!-- 數(shù)據(jù)庫的名稱 -->
- <property name="user">username</property> <!-- 數(shù)據(jù)庫用戶名稱 -->
- <property name="password">userpasswd</property> <!-- 數(shù)據(jù)庫用戶的密碼 -->
- <property name="portNumber">3306</property> <!-- 端口 -->
- <property name="serverName">192.168.1.1</property> <!-- 數(shù)據(jù)庫主機地址 -->
- </named-config>
- </jdbc-config>
c3p0-config.xml
支持c3p0配置,詳情配置請參照c3p0官網(wǎng)的說明: http://www.mchange.com/projects/c3p0/ .
- <?xml version="1.0" encoding="UTF-8"?>
- <c3p0-config>
- <!--
- <default-config>
- <property name="driverClass">com.mysql.jdbc.Driver</property>
- <property name="jdbcUrl">jdbc:mysql://...</property>
- <property name="user">root</property>
- <property name="password">123***</property>
- <property name="initialPoolSize">10</property>
- <property name="maxIdleTime">30</property>
- <property name="maxPoolSize">20</property>
- <property name="minPoolSize">5</property>
- <property name="maxStatements">200</property>
- </default-config>
- -->
- <named-config name="xk-c3p0">
- <property name="driverClass">com.mysql.jdbc.Driver</property>
- <property name="jdbcUrl">jdbc:mysql://192.168.1.1:3306/xk</property>
- <property name="user">xk</property>
- <property name="password">abc123</property>
- <property name="acquireIncrement">50</property>
- <property name="initialPoolSize">100</property>
- <property name="minPoolSize">50</property>
- <property name="maxPoolSize">1000</property>
- <property name="maxStatements">0</property>
- <property name="maxStatementsPerConnection">5</property>
- </named-config>
- </c3p0-config>
fastquery.json
配置數(shù)據(jù)源的作用范圍
- // @author xixifeng (fastquery@126.com)
- // 配置必須遵循標準的json語法.
- [
- // config目前支持的可選值有"jdbc","c3p0"
- {
- "config": "c3p0", // 表示由c3p0負責提供數(shù)據(jù)源
- "dataSourceName": "xk-c3p0", // 數(shù)據(jù)源的名稱
- "basePackages": [ // 該數(shù)據(jù)源的作用范圍
- "org.fastquery.example.StudentDBService"
- ]
- },
- /*
- 再配置一個數(shù)據(jù)源作用域
- */
- {
- "config" : "jdbc", // 表示由jdbc驅(qū)動負責提供數(shù)據(jù)源
- "dataSourceName": "shtest_db",
- "basePackages": [ // 該數(shù)據(jù)源的作用范圍
- "org.fastquery.example.DataAcquireDbService"
- ]
- }
- ]
一個完整的入門例子
- 準備一個實體
- public class Student
- {
- private String no;
- private String name;
- private String sex;
- private Integer age;
- private String dept;
- // getter /setter 省略...
- }
- DAO接口
- public interface StudentDBService extends QueryRepository {
- @Query("select * from student")
- JSONArray findAll();
- @Query("select * from student")
- Student[] find();
- }
- 使用DAO接口.
- StudentDBService studentDBService = FQuery.getRepository(StudentDBService.class);
- JSONArray jsonArray = studentDBService.findAll();
- Student[] students = studentDBService.find();