阅读更多
MiniDao简介及特征

MiniDao是Jeecg自己的持久化解决方案,集成了Hibernate实体维护和Mybaits SQL分离的两大优势。 具有以下特征:

  • O/R mapping不用设置xml,零配置便于维护
  • 不需要了解JDBC的知识
  • SQL语句和java代码的分离
  • 可以自动生成SQL语句
  • 接口和实现分离,不用写持久层代码,用户只需写接口,以及某些接口方法对应的sql 它会通过AOP自动生成实现类
  • 支持自动事务处理和手动事务处理
  • 支持与hibernate轻量级无缝集成
  • MiniDao整合了Hibernate+mybatis的两大优势,支持实体维护和SQL分离
  • SQL支持脚本语言
详细地址:http://zhangdaiscott.github.io/MiniDao/
源码下载地址:http://code.google.com/p/jeecg/downloads/list

※向下兼容Hibernate实体维护方式,实体的增删改查SQL自动生成

接口和SQL文件对应目录



接口定义[EmployeeDao.java]

public interface EmployeeDao {
@Arguments("employee")
public List<Map> getAllEmployees(Employee employee);

@Arguments("empno")
Employee getEmployee(String empno);

@Arguments({"empno","name"})
Map getMap(String empno,String name);

@Sql("SELECT count(*) FROM employee")
Integer getCount();

@Arguments("employee")
int update(Employee employee);

@Arguments("employee")
void insert(Employee employee);
}


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>


测试代码

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();
    List<Map> list =  employeeDao.getAllEmployees(employee);
    for(Map mp:list){
        System.out.println(mp.get("id"));
        System.out.println(mp.get("name"));
        System.out.println(mp.get("empno"));
        System.out.println(mp.get("age"));
        System.out.println(mp.get("birthday"));
        System.out.println(mp.get("salary"));
    }
}
}


技术交流

  • 作者: 张代浩
  • 技术论坛:www.jeecg.org
  • 邮箱: zhangdaiscott@163.com
  • 大小: 27.1 KB
6
7
评论 共 24 条 请登录后发表评论
24 楼 hwy1782 2013-09-08 16:13
楼主代码丢到git上去把。。。嘿嘿
23 楼 zhangdaiscott1 2013-09-06 20:26
享受生活 写道
根据贴图,没发现跟mybatis有什么区别:
配置文件换个形式而已,一个xml,一个sql;
jdbc知识跟框架无关;
用配置文件,sql、代码铁定都是分离的;
mybatis一样只需要写dao接口,不需要写实现,可运行时生成;
事务处理都是支持的;

疑问:
自动生成sql的功能在哪
一条语句一个sql文件,明显导致文件数量会过多,像mybatis将同类的语句封装到一个xml明显要好。

结论:创新还不够。

以上言论只是探讨,人身攻击的勿扰。


感谢交流,支持像Hibernate方式实体维护,配置JPA系统,可以实现增删改查,不需要写SQL
22 楼 MrLee23 2013-09-06 18:24
精神可嘉,代码一般。
不懂瞎说的,别生气。
21 楼 youarestupid 2013-09-06 17:09
享受生活 写道
根据贴图,没发现跟mybatis有什么区别:
配置文件换个形式而已,一个xml,一个sql;
jdbc知识跟框架无关;
用配置文件,sql、代码铁定都是分离的;
mybatis一样只需要写dao接口,不需要写实现,可运行时生成;
事务处理都是支持的;

疑问:
自动生成sql的功能在哪
一条语句一个sql文件,明显导致文件数量会过多,像mybatis将同类的语句封装到一个xml明显要好。

结论:创新还不够。

以上言论只是探讨,人身攻击的勿扰。

顶你,这不算人身攻击吧?
20 楼 享受生活 2013-09-06 17:03
根据贴图,没发现跟mybatis有什么区别:
配置文件换个形式而已,一个xml,一个sql;
jdbc知识跟框架无关;
用配置文件,sql、代码铁定都是分离的;
mybatis一样只需要写dao接口,不需要写实现,可运行时生成;
事务处理都是支持的;

疑问:
自动生成sql的功能在哪
一条语句一个sql文件,明显导致文件数量会过多,像mybatis将同类的语句封装到一个xml明显要好。

结论:创新还不够。

以上言论只是探讨,人身攻击的勿扰。
19 楼 quitgame 2013-09-06 16:54
quitgame 写道
使用 Spring-Mybatis 不就实现了吗?


看这里:http://mybatis.github.io/spring/zh/
18 楼 quitgame 2013-09-06 16:53
使用 Spring-Mybatis 不就实现了吗?
17 楼 qq122343779 2013-09-06 08:43
支持下,支持国产开源项目!
16 楼 zhangdaiscott1 2013-09-05 17:33
hopestar 写道
建议楼主采用maven来管理jar包

好的
15 楼 hopestar 2013-09-05 14:38
建议楼主采用maven来管理jar包
14 楼 flownclouds 2013-09-05 08:32
包容理解的心态支持能有耐心研究的同志
13 楼 youarestupid 2013-09-04 11:50
dsjt 写道
引用
不用设置xml,零配置便于维护

换个配置文件的格式而已。

你的眼睛为什么这么亮?
12 楼 dsjt 2013-09-04 11:28
引用
不用设置xml,零配置便于维护

换个配置文件的格式而已。
11 楼 tanyuangen 2013-09-03 17:59
ufopw 写道
jdbctemplate飘过

同样飘过
10 楼 harborgang 2013-09-03 13:40
拜读了源码 整体结构很不错 AOP的思想运用的很不错。对于spring jdbc查询时,sql语句 参数限定的比较死,mybatis 可以动态生成sql。MiniDAO  sql模板 目前还比较限制。不过相当不错了。对于hibernate的项目,如果需要调优sql,可以选择MiniDAO sql模板方式。
9 楼 ufopw 2013-09-03 12:13
jdbctemplate飘过
8 楼 fjjiaboming 2013-09-03 07:27
软文...吹牛逼..
7 楼 山风小子 2013-09-02 21:36
不错,可惜存在性能隐患
6 楼 osacar 2013-09-02 18:45
用来用去,我觉得spring jdbc就够我折腾的了。
5 楼 fykyx521 2013-09-02 18:31
JPA 对应的JDO 不 也不错么

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • MiniDao:轻量级JAVA持久层,Hibernate辅助神器!可无缝集成Hibernate项目,立即拥有Mybatis一样的轻量级SQL能力。(项目产生初衷:因为项目已采用hibernate,但又想像mybatis一样写sql,所以自己手工写了这个小型持久层,不逊色于mybatis,与hibernate集成也非常方便)曾经想过同时集成hibernate和mybatis,但是太重,事务也不好控制。

    MiniDao是一种轻量级JAVA持久层框架,基于SpringJdbc + freemarker实现,具有Mybatis一样SQL分离和逻辑标签能力。Minidao产生的初衷是为了解决Hibernate项目,在复杂SQL上与Mybatis一样的灵活能力,同时支持事务同步...

  • MiniDao 比Mybatis还灵活实用的J2EE 持久层轻量级解决方案

    MiniDao 比Mybatis还灵活实用的J2EE 持久层轻量级解决方案

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

    MiniDao-PE版 1.5.4 发布,轻量级J2EE持久化解决方案

  • MiniDao (轻量级JAVA持久层,Hibernate完美助手)

    MiniDao (轻量级JAVA持久层,Hibernate完美助手) 当前最新版本: 1.6.4 (发布日期:20180604) MiniDao产生的初衷? 采用Hibernate的J2EE项目都有一个痛病,针对复杂业务SQL,hibernate能力不足,SQL不好优化...

  • MiniDao持久层 Vs Mybatis

    MiniDao持久层 Vs Mybatis

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

    MiniDao 是一款轻量级 JAVA 持久层框架,基于 SpringJdbc + freemarker 实现,具备 Mybatis 一样的 SQL 分离和逻辑标签能力。

  • 基于SpringJdbc+freemarker实现,具备Mybatis一样的SQL分离和逻辑标签能力的轻量级JAVA持久层框架

    MiniDao 是一款轻量级JAVA持久层框架,基于 SpringJdbc + freemarker 实现,具备Mybatis一样的SQL分离和逻辑标签能力。Minidao产生的初衷是为了解决Hibernate项目,在复杂SQL具备Mybatis一样的灵活能力,同时支持...

  • MiniDao_1.6.4 版本发布,轻量级Java持久化框架,Hibernate项目辅助利器

    MiniDao 简介及特征 MiniDao 是一款超轻量的JAVA持久层框架,具备Mybatis一样的SQL能力: 支持SQL分离、支持标签、支持注解。MiniDao产生的初衷是为了解决Hibernate项目对复杂SQL支持能力,具备Mybatis一样的灵活性...

  • MiniDao_1.6-SNAPSHOT 版本发布,轻量级Java持久化框架

    MiniDao-PE 简介 MiniDao-PE 是一种持久化解决方案,类似mybatis的持久层解决方案,可以轻松集成Hibernate工程,事务统一管理,解决了Hibernate工程想支持mybaits的功能问题。Hibernate的最佳辅助方案,轻松集成,...

  • MiniDao Framework 1.3.0 发布,J2EE持久化解决方案

    MiniDao Framework 1.3.0 发布,J2EE持久化解决方案

  • 图书馆管理系统项目源码.zip

    Java项目web的课程设计,包含源码+数据库+论文

  • 独轮车控制器方案详解:从Bin文件到量产的全面解析

    内容概要:本文详细介绍了独轮车控制器的设计与量产方案,涵盖了bin文件、PCB设计、原件清单及量产测试等多个方面。首先,bin文件作为控制器的核心代码,实现了速度控制等功能;其次,PCB设计强调了合理的布局以减少干扰并提高稳定性;再者,原件清单明确了所需的各类元件及其选型要点;最后,量产方案涉及生产工艺、成本控制和质量检测等环节,确保大规模生产的顺利进行。 适合人群:电子工程技术人员、独轮车制造商及相关领域的研发人员。 使用场景及目标:适用于独轮车控制器的研发和量产过程中,帮助相关人员理解和掌握控制器设计的关键技术和注意事项,确保产品质量和生产效率。 其他说明:文中提供了多个实用的技术细节和实践经验,如MOSFET选型、电流采样电阻的选择、传感器校准方法等,有助于解决实际生产中的常见问题。

  • (源码)基于Qt5.9.9框架的不围棋(Nogo)游戏项目.zip

    # 基于Qt5.9.9框架的不围棋(Nogo)游戏项目 ## 项目简介 这是一个基于Qt5.9.9框架开发的不围棋(Nogo)游戏项目。游戏支持PVP和PVE两种模式,并提供了丰富的功能,如AI对战、局势评估、音效和背景音乐等。 ## 项目的主要特性和功能 PVP和PVE模式支持玩家对玩家(PVP)和玩家对AI(PVE)两种游戏模式。 AI算法采用minimax算法配合alphabeta剪枝,以及MCTS(蒙特卡洛树搜索)算法。 局势评估提供局势评估功能,以折线图形式呈现当前棋局的评估值。 音效和背景音乐支持游戏音效和背景音乐的播放。 Botzone平台支持提供在Botzone平台上的代码,用于测试和部署AI算法。 ## 安装使用步骤 1. 下载源码从项目仓库下载源码文件。 2. 安装Qt5.9.9确保已安装Qt5.9.9开发环境。 3. 打开项目使用Qt Creator打开项目文件。

  • 欧姆龙PLC数据读写工具:基于FinsTCP协议的高效通信解决方案

    内容概要:本文介绍了一款基于FinsTCP协议的欧姆龙PLC数据读写工具,详细讲解了其特性和应用场景。该工具支持CS/CJ系列PLC,通过简单的配置即可实现寄存器数据的读写操作。文中不仅提供了详细的C#源码示例,还解释了PLC、FinsTCP协议以及寄存器的基本概念。此外,作者分享了一些常见的调试技巧和注意事项,如字节序转换、地址编码规则、超时设置等。通过这款工具,用户可以在本地环境中模拟PLC操作,极大地方便了学习和开发。 适合人群:PLC初学者、工业自动化领域的工程师和技术人员,尤其是那些希望深入了解PLC数据读写操作的人群。 使用场景及目标:①帮助用户快速掌握PLC数据读写的操作流程;②提供一个灵活的开发平台,便于二次开发和定制;③适用于单点数据调试和个人学习,提高工作效率。 其他说明:文中提到的工具和代码示例均已在VS2010环境下测试通过,用户可根据自身需求进行调整和优化。同时,作者强调了安全操作的重要性,提醒用户在实际操作中注意权限管理和数据验证。

  • S7-200恒温控制系统:基于PID算法的温度控制与触摸屏交互设计

    内容概要:本文详细介绍了基于西门子S7-200 PLC的恒温控制系统的设计与实现。系统采用PT100传感器采集温度信号,通过模拟量输入模块传输至CPU进行处理。核心部分包括温度输入模拟量处理程序、PID程序、温度模拟量输出程序和触摸屏控制程序。温度输入模拟量处理程序负责将传感器信号转换为实际温度值;PID程序则通过比例、积分、微分运算精确控制三组加热器的工作;温度模拟量输出程序用于驱动加热器并实现数据共享;触摸屏控制程序提供人机交互界面,支持参数设置、状态监控和报警提示等功能。此外,文中还附有完整的CAD图纸和PDF图纸,便于理解和实施系统布线及维护。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和温控系统感兴趣的读者。 使用场景及目标:适用于需要高精度温度控制的工业环境,如化工、制药等行业。主要目标是帮助读者理解S7-200 PLC在温控系统中的应用,掌握PID算法的具体实现方法,提高系统的稳定性和可靠性。 其他说明:文中提供的完整程序代码和详细的调试笔记有助于快速上手实践,而丰富的图纸资料则为实际部署提供了有力支持。

  • 基于java的聊天系统的设计于实现(系统+论文).zip

    Java项目课程设计,包含源码+数据库+论文

  • Java swing mysql(Oracle)实现的飞机订票系统项目源码.zip

    Java项目基于swing的课程设计,包含源码+数据库+论文

  • 工业自动化中基于MD204L与Modbus RTU协议的变频器控制与监控方案

    内容概要:本文详细介绍了一种利用MD204L文本显示器和Modbus RTU协议来实现变频器控制与监控的方法。文中不仅涵盖了基础知识如MD204L的功能介绍、Modbus RTU协议的工作原理,还深入探讨了具体的实现步骤,包括硬件接线、变频器参数设置、Python和Lua编程实例以及常见问题解决技巧。此外,提供了丰富的辅助材料,如详细的文本说明书、程序代码、接线图、寄存器映射表和视频教程,帮助用户更好地理解和应用这一低成本高效率的解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些希望降低系统复杂度和成本的专业人士。 使用场景及目标:适用于需要对变频器进行远程控制和监控的小型生产线或工厂。主要目标是通过简单的硬件连接和有效的通信协议,实现对变频器的基本操作(如正反转、停止及频率设定),从而提高生产效率并减少维护难度。 其他说明:文中强调了实际操作中的注意事项,例如正确设置波特率、处理CRC校验等,这些都是确保系统稳定运行的重要因素。同时,提供的视频教程和故障排除指南有助于初学者更快地上手。

  • (源码)基于 React 框架的后台管理系统.zip

    # 基于 React 框架的后台管理系统 ## 项目简介 本项目是一个基于 React 框架构建的后台管理系统,前端使用 React 进行界面开发,结合 Ant Design 组件库优化界面展示,采用 React Router 实现路由管理,借助 Redux 进行状态管理。后端使用 MongoDB 作为数据库,为系统提供数据支持。系统实现了用户登录、商品管理、角色管理、用户管理等功能,并对表单数据进行前台验证,同时解决了开发过程中的跨域问题。 ## 项目的主要特性和功能 1. 用户登录具备表单数据收集和前台验证功能,支持自动登录,登录成功后保存用户信息到本地或内存,并跳转至后台管理界面。 2. 后台管理界面 导航菜单包括 LeftNav 组件和 Header 组件,LeftNav 可根据配置数据动态生成多级菜单,支持刷新时选中对应菜单项和打开子菜单Header 显示登录用户名称、当前时间、天气预报和当前导航项标题,还提供退出登录功能。

  • (源码)基于Arduino开发的婴儿保育箱孵化项目.zip

    # 基于Arduino开发的婴儿保育箱孵化项目 ## 项目简介 该项目旨在设计和实现一个现代化的婴儿保育箱孵化项目,包含了从电路设计到软件开发的所有关键环节。除了提供基础保温与通风功能外,该项目还集成了移动应用控制功能,包括实时监测、设置温度与湿度、警报系统以及为婴儿提供白噪音等特色功能。同时,该项目也强调了材料选择的重要性,旨在确保婴儿的安全与健康。 ## 项目的主要特性和功能 1. 基础保温与通风功能确保婴儿在舒适的环境中成长。 2. 移动应用控制通过友好的用户界面进行实时温度与湿度监控、设置和调整。 3. 警报系统当环境参数超出设定范围时,系统将发出警报。 4. 白噪音功能为婴儿提供舒适的休息环境,通过播放白噪音来安抚婴儿。 ## 安装使用步骤 1. 硬件组装按照提供的图纸和设计,组装婴儿保育箱的各个部分,包括箱体、电路和控制模块等。 2. 软件配置使用Arduino IDE配置控制模块,确保其与移动应用正常通信。

Global site tag (gtag.js) - Google Analytics