MiniDao简介及特征
MiniDao是J2EE持久化解决方案,摆脱了hibernate笨重和Mybatis的繁琐,同时具备了实体维护和SQL分离的两大优点,拟补了mybatis和hibernate的不足。 主要具有以下特征:
- O/R mapping不用设置xml,零配置便于维护
- 不需要了解JDBC的知识
- SQL语句和java代码的分离
- 可以自动生成SQL语句
- 接口和实现分离,不用写持久层代码,用户只需写接口,以及某些接口方法对应的sql 它会通过AOP自动生成实现类
- 支持自动事务处理和手动事务处理
- 支持与hibernate轻量级无缝集成
- MiniDao 吸收了Hibernate+mybatis的两大优势,支持实体维护和SQL分离
- SQL支持脚本语言
详细地址:http://zhangdaiscott.github.io/MiniDao/
源码下载地址: http://zhangdaiscott.github.io/MiniDao/
MiniDao VS mybatis : http://blog.csdn.net/zhangdaiscott/article/details/11489885
※ 实体的增删改查不需要写sql,支持SQL自动生成
————————————————————————————————————————
version: minidao-framework-1.3.0
date: 2013-11-26
作者: 张代浩
联系邮箱: scott@jeecg.com
————————————————————————————————————————
新版本改进包括:
- 项目切换为maven工程
- 返回的key大小参数设置,SQL格式化参数
- 添加sql数据参数,支持sql批处理
- dao接口支持扫描自动加载
- 防止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); }
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
13 楼 youarestupid 2013-11-27 09:26
推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?
推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。
况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。
请问“自定义逻辑表达式标签”具体是怎么做的?
请参考MyBatis的<where> ... </where>
12 楼 asialee 2013-11-26 21:49
11 楼 asialee 2013-11-26 18:41
10 楼 zhangdaiscott 2013-11-26 18:34
请问“自定义逻辑表达式标签”具体是怎么做的?
采用的模板语言
9 楼 yuanxido 2013-11-26 17:35
推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?
推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。
况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。
请问“自定义逻辑表达式标签”具体是怎么做的?
8 楼 andyhan 2013-11-26 16:14
7 楼 ctrlc 2013-11-26 16:10
6 楼 zhangdaiscott 2013-11-26 15:45
看了一下你的项目源码,代码写得还不错,不像有些人代码写得乱七八糟还拿出来推广。
你的源码还算干净整洁,不过说到特色或者创新,恕我直言,我看不到什么创新的地方。
特点有两点:
1、拟补了hibernate对于复杂sql,实现不了sql分离的问题;
2、解决了mybatis不能对实体,实现自动生成sql功能
5 楼 youarestupid 2013-11-26 15:42
推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?
推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。
况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。
看了一下你的项目源码,代码写得还不错,不像有些人代码写得乱七八糟还拿出来推广。
你的源码还算干净整洁,不过说到特色或者创新,恕我直言,我看不到什么创新的地方。
4 楼 zhangdaiscott 2013-11-26 15:42
3 楼 hellostory 2013-11-26 15:40
推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?
推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。
我怎么看都像是在描述Mybatis3.2版的,只是这个版本很多人还不太熟悉。
Mybatis的XML文件早支持velocity模板语言了,只是很多人还不知道而已!
证据在此:https://github.com/mybatis/velocity-scripting
2 楼 youarestupid 2013-11-26 15:37
推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?
推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。
况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。
1 楼 youarestupid 2013-11-26 15:34
推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?
推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。