MiniDao (輕量級JAVA持久層,Hibernate完美助手)

MiniDao (輕量級JAVA持久層,Hibernate完美助手)

當前最新版本: 1.6.4 (發佈日期:20180604)

MiniDao產生的初衷?

採用Hibernate的J2EE項目都有一個痛病,針對複雜業務SQL,hibernate能力不足,SQL不好優化和也無法分離。 這個時候大家就想到集成mybatis,但是一個項目既用hibernate又用mybatis,顯得很重事務也不好控制。大家常規的做法是採用springjdbc來實現原生SQL編寫,但是也同樣存在問題,SQL無法分離也沒有邏輯標籤能力。 所以爲了解決這個痛病,Jeecg針對springjdbc+freemarker做了封裝,出了這麼一個輕量級持久層,可以讓Hiberate擁有mybatis一樣SQL靈活能力,同時支持事務統一、SQL標籤能力。

MiniDao 簡介及特徵

MiniDao 是一款輕量級JAVA持久層框架,基於 SpringJdbc + freemarker 實現,具備Mybatis一樣的SQL分離和邏輯標籤能力。Minidao產生的初衷是爲了解決Hibernate項目,在複雜SQL具備Mybatis一樣的靈活能力,同時支持事務同步。

具有以下特徵:

  • O/R mapping不用設置xml,零配置便於維護
  • 不需要了解JDBC的知識
  • SQL語句和java代碼的分離
  • 只需接口定義,無需接口實現
  • SQL支持腳本語言(強大腳本語言,freemarker語法)
  • 支持與hibernate輕量級無縫集成
  • 支持自動事務處理和手動事務處理
  • 性能優於Mybatis
  • 比Mybatis更簡單易用
  • SQL 支持註解方式
  • SQL 支持獨立文件方式,SQL文件的命名規則: 類名_方法名; SQL文件更容易定位,方便後期維護,項目越大此優勢越明顯
  • SQL標籤採用Freemarker的基本語法

如何快速集成minidao?

方式一:springmvc與minidao集成

https://minidao.mydoc.io/?t=293634

方式二:springboot2與minidao集成

https://minidao.mydoc.io/?t=336070

技術交流

代碼體驗

1. 接口定義[EmployeeDao.java]

@MiniDao
public interface EmployeeDao {

 @Arguments({ "employee"})
 @Sql("select * from employee")
 List<Map<String,Object>> getAll(Employee employee);

 @Sql("select * from employee where id = :id")
 Employee get(@Param("id") String id);

 @Sql("select * from employee where empno = :empno and  name = :name")
 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);
 
 @ResultType(Employee.class)
 public MiniDaoPage<Employee> getAll(@Param("employee") Employee employee,@Param("page")  int page,@Param("rows") int rows);

}

2. SQL文件[EmployeeDao_getAllEmployees.sql]

SELECT * FROM employee where 1=1 
<#if employee.age ?exists>
and age = :employee.age
</#if>
<#if employee.name ?exists>
and name = :employee.name
</#if>
<#if employee.empno ?exists>
and empno = :employee.empno
</#if>

3. 接口和SQL文件對應目錄

 

 

 

4. 測試代碼

public class Client {
public static void main(String args[]) {
	BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
 		
	EmployeeDao employeeDao = (EmployeeDao) factory.getBean("employeeDao");
	Employee employee = new Employee();
	String id = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
	employee.setId(id);
	employee.setEmpno("A001");
	employee.setSalary(new BigDecimal(5000));
	employee.setBirthday(new Date());
	employee.setName("scott");
	employee.setAge(25);
	//調用minidao方法插入
	employeeDao.insert(employee);
}
}
發佈了142 篇原創文章 · 獲贊 51 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章