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

技术交流

  • 文 档: https://minidao.mydoc.io
  • 论 坛: www.jeecg.org
  • QQ交流群: 362385436

代码体验

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);
}
}

MiniDao (轻量级JAVA持久层,Hibernate完美助手)相关推荐

  1. 轻量级Java持久化框架,Hibernate完美助手,Minidao 1.6.2版本发布

    Minidao 1.6.2 版本发布,轻量级Java持久化框架(Hibernate完美助手) Minidao产生初衷? 采用Hibernate的J2EE项目都有一个痛病,针对复杂业务SQL,hiber ...

  2. 轻量级J2EE持久层解决方案,MiniDao-PE版 1.5.4【版本发布】

    MiniDao-PE精简版(轻量级持久层) MiniDao-PE是一种轻量级J2EE持久层解决方案,类似mybatis持久层的SQL方式,可以轻松集成Hibernate项目,事务统一管理,解决了Hib ...

  3. Java 持久层概述

    JDBC Java Database Connectivity 是一系列接口规范.Java 程序都是通过 JDBC 连接数据库的.然后通过其执行SQL.对数据库进行操作. DBC 只是 Sun 公司定 ...

  4. 轻量级数据持久层Seaking.PL简介及建议征集

    引言 Seaking.PL(以下简称PL)是我刚刚完成的一个轻量级数据持久层,在众多的数据持久层产品中,PL或许显得有些稚嫩,甚至有点难登大雅之堂,但是我相信,至于对于一部分应用,PL可能会是一个简易 ...

  5. java持久层用文件_Java持久层框架MyBatis简单实例

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .本文 ...

  6. mybatis(java持久层框架)

    mybatis java持久层框架 (对JDBC进行封装,并自动完成ORM操作) ORM框架是对象关系映射,一个对象与表中的一行数据一一对应,把对象持久化到数据库中. 我将会一步一步详细的创建一个完整 ...

  7. java hibernate的使用_《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》

    章节目标 使用JPA EntityManagerFactory 使用注解提供映射信息 使用 JPA 接口 本教程可在 entitymanger/ 路径下下载 4.1. persistence.xml ...

  8. Java持久层框架之mybatis使用

    一.什么是框架,框架从何而来,为什么使用框架? 框架(framework): 1.是一系列jar包,其本质是对JDK功能的拓展.(jar包,jar:class文件的压缩包) 2.框架是一组程序的集合, ...

  9. java持久层框架mybatis如何防止sql注入

    2019独角兽企业重金招聘Python工程师标准>>> sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如"or ...

最新文章

  1. mysql sql decode函数用法_oracle中的decode的使用介绍
  2. php中的elseif和else if
  3. 分布式session之token解决方案实现
  4. 为了故意刁难AI,科学家们制造了这1200个问题,超强AI被“打回原形”
  5. phpStorm 2016.1 最新版激活方法
  6. mysql 添加时间戳列
  7. 获取3的倍数_获取和设置pdf目录
  8. 通过命令解锁Oracle,在命令行下进行Oracle用户解锁
  9. 为何说国内云桌面已经步入成熟期
  10. 网管,待遇为何如此差劲?
  11. 不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_Excel基础—文件菜单之设置信息...
  12. 《CCNA无线640-722认证考试指南》——5.4节其他无线拓扑
  13. 用更少的钱看更清晰的视频——详谈阿里云窄带高清
  14. 清华大学计算机期末试题,清华大学计算机系C++期末考试题及答案.doc
  15. 数据分列将数字转换成文本格式
  16. tomcat Failed creating java C:\Program Files\Java\jre6\bin\client\jvm.dll %1 不是有效的 Win32 应用程序。...
  17. 计算机扫盲教案,对号入座教案
  18. 管理故事:孙权的用人哲学
  19. 网络连接不正常是什么原因
  20. uniapp 微信小程序授权获取手机并绑定登录

热门文章

  1. 识别产品外观的合格软件_机器视觉产品外观质量检测分析系统
  2. 端口映射指导 ----- 配置文件方式
  3. Stagger HDR
  4. 一个中间继电器引发的损失
  5. 职位-CIO:CIO
  6. Oracle APEX 系列文章11:全站启用 HTTPS,让你的 APEX 更安全
  7. window中文输入英文符号
  8. excel自TXT中获取数据
  9. 近期使用的几个流量卡小结
  10. 天风非银: 券商结算基金的现状和潜力