MiniDao1.8.3 版本發佈,輕量級Java持久化框架

項目介紹

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

當前版本:v1.8.3 | 2021-08-09

源碼下載

升級日誌

  • 數據庫分頁方言重構支持含常規、國產、大數據等28種數據庫
數據庫 支持
MySQL
Oracle、Oracle9i
SqlServer、SqlServer2012
PostgreSQL
DB2、Informix
MariaDB
SQLite、Hsqldb、Derby、H2
達夢、人大金倉、神通
華爲高斯、虛谷、瀚高數據庫
阿里雲PolarDB、PPAS、HerdDB
Hive、HBase、CouchBase
  • 數據庫實現自動適配不再需要手工配置DB類型
  • 解決上個版本重構後,不支持SqlServer分頁問題
  • debug模式下,解決報錯: Minidao報錯“Template java/lang/Object_toString.sql not found”
  • ID支持主鍵策略自動生成 @TableId(type = IdType.UUID)
  • @TableId 支持uuid(默認)\AUTO(自增)\ID_WORKER(雪花ID)\ID_SEQ(序列seq,必須配置seqName)四種主鍵策略

技術文檔

MiniDao特徵

An powerful enhanced toolkit of SpringJdbc for simplify development

具有以下特徵:

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

代碼體驗

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);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章