Stories

Detail Return Return

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

項目介紹

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

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

源碼下載

  •  https://github.com/zhangdaiscott/MiniDao
  •  https://gitee.com/jeecg/minidao

升級日誌

  • 數據庫分頁方言重構支持含常規、國產、大數據等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)四種主鍵策略

技術文檔

  • 技術官網: http://www.jeecg.com
  • 技術文檔: https://minidao.mydoc.io
  • 如何快速集成minidao

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);
  }
}
user avatar histry Avatar huikaichedemianbao Avatar mianlengxincidehongjiu Avatar huangxunhui Avatar nianqingyouweidenangua Avatar lslove Avatar huanledeyanjing Avatar apachekylin Avatar youyudetusi Avatar cryptorzz Avatar weixiaodehai_cywv9b Avatar
Favorites 11 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.