採用Hibernate的J2EE項目都有一個痛病,針對複雜業務SQL能力不足,SQL不好優化和也無法分離。 這個時候大家就想到集成mybatis,但是一個項目既用hibernate又用mybatis,顯得很重事務也不好控制。大家常規的做法是採用springjdbc來實現原生SQL編寫,但是同樣也存在問題,SQL無法分離也沒有邏輯標籤能力。
所以Jeecg針對springjdbc+freemarker做了封裝,出了這麼一個輕量級持久層,可以讓Hiberate擁有mybatis一樣SQL靈活能力,同時支持事務統一、SQL標籤能力。
MiniDao 是一款超輕量的JAVA持久層框架,具備Mybatis一樣的SQL能力: 支持SQL分離、支持標籤、支持註解。MiniDao產生的初衷是為了解決Hibernate項目對複雜SQL支持能力,具備Mybatis一樣的靈活性,同時支持事務同步。
O/R mapping不用設置xml,零配置便於維護
不需要了解JDBC的知識
SQL語句和java代碼的分離
只需接口定義,無需接口實現
SQL支持腳本語言(強大腳本語言,freemarker語法)
支持與hibernate輕量級無縫集成
支持自動事務處理和手動事務處理
性能優於Mybatis
比Mybatis更簡單易用
SQL 支持註解方式
SQL 支持獨立文件方式,SQL文件的命名規則: 類名_方法名; SQL文件更容易定位,項目越大優勢越明顯
SQL標籤採用Freemarker的基本語法
1. 簡化pom.xml配置,刪掉不需要的依賴
2. 日誌重寫,統一採用接口實現
3. 升級freemarker版本
4. 提供事務demo,註解方式
5. 規範化代碼,日誌打印規範化,提高效率和通用性
@MiniDao
public interface EmployeeDao {
public List getAllEmployees(@Param("employee") Employee employee);
Employee getEmployee(@Param("empno") String empno);
Map getMap(@Param("empno")String empno,@Param("name")String name);
@Sql("SELECT count(*) FROM employee")
Integer getCount();
int update(@Param("employee") Employee employee);
void insert(@Param("employee") Employee employee);
}
SELECT * FROM employee where 1=1
and age = :employee.age
and name = :employee.name
and empno = :employee.empno