阅读更多
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 不 也不错么

发表评论

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

相关推荐

Global site tag (gtag.js) - Google Analytics