項目介紹
MiniDao 是一款輕量級JAVA持久層框架唉锌,基于 SpringJdbc + freemarker 實現(xiàn)隅肥,具備Mybatis一樣的SQL分離和邏輯標簽能力。Minidao產(chǎn)生的初衷是為了解決Hibernate項目袄简,在復雜SQL具備Mybatis一樣的靈活能力腥放,同時支持事務(wù)同步。
當前版本:v1.9.0 | 2022-09-02
升級日志
- 升級依賴版本號與jeecgboot版本號一致绿语,重點升級jsqlparser重構(gòu)了不兼容方法
- 升級springframework依賴到5.3.18 秃症,與jeecgboot同步
- 升級spring-boot-starter依賴到2.6.6 ,與jeecgboot同步
- 升級javassist依賴到 3.25.0-GA
- 升級jsqlparser依賴到 4.3
- 升級ognl版本號解決報錯問題
- 不支持SqlServer分頁問題
- 支持用戶自定義數(shù)據(jù)源
- SqlServer2012(derby用到)吕粹、PostgreSql种柑、神通、Hsql匹耕、mysql分頁優(yōu)化莹规,有分頁關(guān)鍵詞就用select包裹起來
- 反射打破方法沒必要寫,去掉fields[j].setAccessible(true)
- SQL Server表名關(guān)鍵字查詢失敗
技術(shù)文檔
- 技術(shù)官網(wǎng): http://www.jeecg.com
- 技術(shù)文檔: https://minidao.mydoc.io
- 如何快速集成minidao
MiniDao特征
An powerful enhanced toolkit of SpringJdbc for simplify development
具有以下特征:
- O/R mapping不用設(shè)置xml泌神,零配置便于維護
- 不需要了解JDBC的知識
- SQL語句和java代碼的分離
- 只需接口定義,無需接口實現(xiàn)
- SQL支持腳本語言(強大腳本語言,freemarker語法)
- 支持與hibernate輕量級無縫集成
- 支持自動事務(wù)處理和手動事務(wù)處理
- 性能優(yōu)于Mybatis
- 比Mybatis更簡單易用
- SQL 支持注解方式
- SQL 支持獨立文件方式,SQL文件的命名規(guī)則: 類名_方法名; SQL文件更容易定位稼跳,方便后期維護态鳖,項目越大此優(yōu)勢越明顯
- 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文件對應目錄
[圖片上傳失敗...(image-eb6db0-1662370219887)]
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);
//調(diào)用minidao方法插入
employeeDao.insert(employee);
}
}