当前位置: 首页 > 科技观察

MiniDao1.8.3版本发布,轻量级Java持久化框架

时间:2023-03-12 00:34:07 科技观察

项目介绍MiniDao是一个轻量级的JAVA持久化层框架,基于SpringJdbc+freemarker实现,具有与Mybatis相同的SQL分离和逻辑标签能力。Minidao的初衷是为了解决Hibernate项目,在复杂的SQL上有和Mybatis一样的灵活性,支持事务同步。当前版本:v1.8.3|2021-08-09源码下载https://github.com/zhangdaiscott/MiniDaohttps://gitee.com/jeecg/minidao升级日志数据库分页方言重构支持常规、国内、大数据等28种数据库实现自动适配,无需手动配置DB类型,解决上一版本重构后SqlServer分页问题,??debug模式下处理Object_toString.sqlnotfoundID错误支持主键策略自动生成@TableId(type=IdType.UUID)@TableId支持uuid(默认)\AUTO(自增)\ID_WORKER(雪花ID)\ID_SEQ(sequenceseq,seqName必须配置)四种主键策略技术文档官网:http://万维网。jeecg.com技术文档:https://minidao.mydoc.io如何快速集成minidaoMiniDao特性SpringJdbc强大的简化开发增强工具包,具有以下特性:O/Rmapping无需设置xml,零配置轻松维护,无需懂JDBC知识SQL语句与java代码分离,只需要接口定义,无需接口实现SQL支持脚本语言(强大的脚本语言,freemarker语法)支持轻量级与hibernate无缝集成支持自动事务处理和手动事务处理性能优于MybatisMybatis更简单易用。SQL支持注解。SQL支持独立文件。SQL文件的命名规则是:类名_方法名;SQL文件更容易定位,便于后期维护。项目越大,这种优势就越明显。SQL标签使用Freemarker语法基础代码经验1.接口定义@MiniDaopublicinterfaceEmployeeDao{@Arguments({"employee"})@Sql("select*fromemployee")List>getAll(Employeeemployee);@Sql("select*fromemployeewhereid=:id")Employeeget(@Param("id")Stringid);@Sql("select*fromemployeewhereempno=:empnoandname=:name")MapgetMap(@Param("empno")Stringempno,@Param("name")Stringname);@Sql("SELECTcount(*)FROMemployee")IntegergetCount();intupdate(@Param("employee")Employeeemployee);voidinsert(@Param("employee")Employeeemployee);@ResultType(Employee.class)publicMiniDaoPagegetAll(@Param("employee")Employeeemployee,@Param("page")intpage,@Param("rows")introws);2。SQL文件SELECT*FROMemployeewhere1=1<#ifemployee.age?exists>andage=:employee.age<#ifemployee.name?exists>andname=:employee.name<#ifemployee.empno?exists>andempno=:employee.empno3.接口和SQL文件映射4。测试代码publicclassClient{publicstaticvoidmain(Stringargs[]){BeanFactoryfactory=newClassPathXmlApplicationContext("applicationContext.xml");EmployeeDaoemployeeDao=(EmployeeDao)factory.getBean("employeeDao");Employeeemployee=newEmployee();Stringid=UUID.randomUUID().toString().replaceAll("-","").toUpperCase();employee.setId(id);employee.setEmpno("A001");employee.setSalary(newBigDecimal(5000));employee.setBirthday(newDate());employee.setName("scott");employee.setAge(25);//调用minidao方法插入employeeDao.insert(employee);}}