FastSQL基于 spring-jdbc 的 ORM 框架
FastSQL一個(gè)基于spring-jdbc 的簡單 ORM 框架,它支持 sql 構(gòu)建、sql 執(zhí)行、命名參數(shù)綁定、查詢結(jié)果自動(dòng)映射和通用 DAO。結(jié)合了 Hibernate/JPA 快速開發(fā)和 Mybatis 高效執(zhí)行的優(yōu)點(diǎn)。
FastSQL 可以完全滿足你控制欲,可以用 Java 代碼清晰又方便地寫出 sql 語句并執(zhí)行。
2.1 安裝
要使用 FastSQL, 只需將 fastsql-1.0.0.jar 文件置于 classpath 中即可。
如果使用 Maven 來構(gòu)建項(xiàng)目,則需將下面的 dependency 代碼置于 pom.xml 文件中:
<dependency> <groupId>top.fastsql</groupId> <artifactId>fastsql</artifactId> <version>1.0.0</version> </dependency>
如果使用 Gradle 來構(gòu)建項(xiàng)目,則需將下面的代碼置于 build.gradle 文件的 dependencies 代碼塊中:
compile 'top.fastsql:fastsql:1.0.0'
2.2 構(gòu)建 SQLFactory
你可以直接從 Java 程序構(gòu)建一個(gè) SQLFactory ,如果使用SQL的執(zhí)行功能,至少需要設(shè)置 DataSource 。
//新建一個(gè)DataSource(這里使用了Spring-Jdbc的SimpleDriverDataSource) DataSource dataSource = new SimpleDriverDataSource([傳入url,username等]); SQLFactory sqlFactory = new SQLFactory(); sqlFactory.setDataSource(dataSource);
2.3 從 SQLFactory 中獲取 SQL
既然有了 SQLFactory ,我們就可以從中獲得 SQL 的實(shí)例了。SQL類完全包含了面向數(shù)據(jù)庫執(zhí)行 sql 命令所需的所有方法。 你可以通過 SQL 實(shí)例來構(gòu)建并直接執(zhí)行 SQL 語句。例如:
SQL sql = sqlFactory.createSQL();
Student student = sql.SELECT("*").FROM("student").WHERE("id=101").queryOne(Student.class);
2.4 作用域(Scope)和生命周期
SQLFactory
SQLFactory 一旦被創(chuàng)建就應(yīng)該在應(yīng)用的運(yùn)行期間一直存在,沒有任何理由對(duì)它進(jìn)行清除或重建。 使用 SQLFactory 的最佳實(shí)踐是在應(yīng)用運(yùn)行期間不要重復(fù)創(chuàng)建多次,多次重建 SQLFactory 被視為一種代碼“壞味道(bad smell)”。 因此 SQLFactory 的最佳作用域是應(yīng)用的作用域。有很多方法可以做到,最簡單的就是使用單例模式或者靜態(tài)單例模式 (如果在Spring環(huán)境中,利用Spring容器的功能,你完全可以把它設(shè)置為一個(gè)單例bean)。
SQL
SQL 實(shí)例是有狀態(tài)的 ,不是線程安全的,是不能被共享的。即使在同一個(gè)線程中每執(zhí)行sql語句一次,都需要重新構(gòu)建一個(gè) SQL 實(shí)例。 絕對(duì)不能將 SQL 實(shí)例的引用放在一個(gè)類的靜態(tài)域,甚至一個(gè)類的實(shí)例變量也不行。
