阅读更多

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

 

来自: www.jeecg.org
4
1
评论 共 13 条 请登录后发表评论
13 楼 youarestupid 2013-11-27 09:26
yuanxido 写道
youarestupid 写道
youarestupid 写道
这个比MyBatis更繁琐,sql配置文件是MyBatis有的(你的EmployeeDao_getAllEmployees.sql就相当于MyBatis的 XXX.mapper.xml配置文件),Mapper接口类也是MyBatis有的(你的EmployeeDao就相当于MyBaties的Mapper接口类),你有什么可以称得上是创新的东西?


推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?

推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。


况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。


请问“自定义逻辑表达式标签”具体是怎么做的?

请参考MyBatis的<where> ... </where>
12 楼 asialee 2013-11-26 21:49
我初步看了下pom.xml,为什么同时依赖spring和hiberante,能不能给一个最小集,不依赖这两个
11 楼 asialee 2013-11-26 18:41
不知道系统中用反射了没有,用的多不,有没有测试过性能,我之前也写过一个相似的轮子,感觉性能没有ibatis好。
10 楼 zhangdaiscott 2013-11-26 18:34
引用

请问“自定义逻辑表达式标签”具体是怎么做的?

采用的模板语言
9 楼 yuanxido 2013-11-26 17:35
youarestupid 写道
youarestupid 写道
这个比MyBatis更繁琐,sql配置文件是MyBatis有的(你的EmployeeDao_getAllEmployees.sql就相当于MyBatis的 XXX.mapper.xml配置文件),Mapper接口类也是MyBatis有的(你的EmployeeDao就相当于MyBaties的Mapper接口类),你有什么可以称得上是创新的东西?


推广自己的东西很正常,但是不要动不动就说“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
youarestupid 写道
youarestupid 写道
这个比MyBatis更繁琐,sql配置文件是MyBatis有的(你的EmployeeDao_getAllEmployees.sql就相当于MyBatis的 XXX.mapper.xml配置文件),Mapper接口类也是MyBatis有的(你的EmployeeDao就相当于MyBaties的Mapper接口类),你有什么可以称得上是创新的东西?


推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?

推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。


况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。


看了一下你的项目源码,代码写得还不错,不像有些人代码写得乱七八糟还拿出来推广。
你的源码还算干净整洁,不过说到特色或者创新,恕我直言,我看不到什么创新的地方。
4 楼 zhangdaiscott 2013-11-26 15:42
底层思想采用的是freemarker语言
3 楼 hellostory 2013-11-26 15:40
youarestupid 写道
这个比MyBatis更繁琐,sql配置文件是MyBatis有的(你的EmployeeDao_getAllEmployees.sql就相当于MyBatis的 XXX.mapper.xml配置文件),Mapper接口类也是MyBatis有的(你的EmployeeDao就相当于MyBaties的Mapper接口类),你有什么可以称得上是创新的东西?


推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?

推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。


我怎么看都像是在描述Mybatis3.2版的,只是这个版本很多人还不太熟悉。

Mybatis的XML文件早支持velocity模板语言了,只是很多人还不知道而已!

证据在此:https://github.com/mybatis/velocity-scripting






2 楼 youarestupid 2013-11-26 15:37
youarestupid 写道
这个比MyBatis更繁琐,sql配置文件是MyBatis有的(你的EmployeeDao_getAllEmployees.sql就相当于MyBatis的 XXX.mapper.xml配置文件),Mapper接口类也是MyBatis有的(你的EmployeeDao就相当于MyBaties的Mapper接口类),你有什么可以称得上是创新的东西?


推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?

推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。


况且你的xxx.sql文件中还有难看的“where 1=1”这样低级的东西,六年前大家就知道在自己的框架中,通过自定义逻辑表达式标签来处理多余的and 、 or了。

1 楼 youarestupid 2013-11-26 15:34
这个比MyBatis更繁琐,sql配置文件是MyBatis有的(你的EmployeeDao_getAllEmployees.sql就相当于MyBatis的 XXX.mapper.xml配置文件),Mapper接口类也是MyBatis有的(你的EmployeeDao就相当于MyBaties的Mapper接口类),你有什么可以称得上是创新的东西?


推广自己的东西很正常,但是不要动不动就说“hibernate笨重和Mybatis的繁琐”,你这套东西我也没看出来哪里精简了啊,该堆的东西一个也没少,凭什么说你比人家不“繁琐”?

推广自己的东西要有自知之明,比如我自己的一堆框架,自认为跟Spring/MyBatis等相比没什么特别的地方,所以根本就拿不出手,更不好意思导出去推广。

发表评论

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

相关推荐

  • AOT/JNI/Vala 的比较

    转自: http://en.wikipedia.org/wiki/AOT_compiler https://wiki.gnome.org/Vala/FAQ#How_does_the_performance_of_Vala_applications_compare_to_other_applications.3F An ahead-of-time (AOT) com

  • 对开源软件领导人的一些想法

    一直对开源软件的倡导着有着非同反响的好感,疯狂的崇拜Richard Stallman(一头大胡子,从一个MIT人工智能实验室的试验员到84年成立GNU,他的一些做法确实值得我们去敬佩他。还有一点不清楚的是到底他不喜欢女人呢?还是怎么回事,居然到现在还不结婚,这点我估计做不到)。我想我从事UNIX系统管理员这个职位很大程度是受他的影响,可以“肆无忌惮”、“疯狂”的使用GNU的软件。工作时间可以研究G...

  • Python提取sitemap.xml文章链接并推送百度

    Python提取sitemap.xml文章链接并推送百度 #coding=utf-8 import urllib import urllib.request import re import requests header_baidu = { 'User-Agent': 'curl/7.12.1', 'Host':'data.zz.baidu.com', 'Content-Type': 'text/plain', 'Content-Length': '83' } url='https://hubaoqu

  • j2EE通用jar包的作用

    hibernate-jpa-2.0-api-1.0.0.Final.jar // Hibernate 持久化 hibernate-search-3.3.0.Final.jar // Hibernate search hibernate3.jar // 核心包 httpclient-4.2.1.jar // httpcore-4.2.1.jar // ...

  • JAVA分布式快速开发基础平台 iBase4J 推荐 国产 J2EE框架

    iBase4J 详细介绍 ... iBase4J项目简介 ...使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。系统包括5个子系统:公共功能、系统管理Service、系统管理Web、业务Service、业务Web。公共功能

  • AOP 技术概览

    而对于日志、安全、持久化等关注点而言,他们却是商业逻辑模块所共同需要的,这些逻辑分布于核心关注点的各处。在AOP中,诸如这些模块,都称为横切关注点。应用AOP的横切技术,关键就是要实现对关注点的识别。 ...

  • Struts2,mybatis,spring三大框架整合

    三大框架整合 使用的工具是j2ee开发工具maven,web项目  以登录为例: 准备工作: 1.jsp页面      账户        密码

  • Mybatis简介以及开发环境搭建

    MyBatis是一个支持定制化普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原

  • AOP技术

    而对于日志、安全、持久化等关注点而言,他们却是商业逻辑模块所共同需要的,这些逻辑分布于核心关注点的各处。在AOP中,诸如这些模块,都称为横切关注点。应用AOP的横切技术,关键就是要实现对关注点的识别。 ...

  • java 常用开源包

    sourceforge http://www.sourceforge.net java.net http://www.java.netwww.eclipse.orgwww.opensource.orgLomboz http://www.objectlearn.com/index.jsp (J2EE plugin for Eclipse) ...XmlBuddy h

  • Springboot实战第 1 章 入门

    入门****1.1 Spring风云再起****1.1.1 重新认识Spring****1.1.2 Spring Boot精要****1.1.3 Spring Boot不是什么****1.2 Spring Boot入门****...Spring Initializr初始化Spring Boot项目****1.3 小结****1.3 小结**...

  • iReport和JasperReport

    iReport和JasperReport 收藏 一、介绍1)它可以PDF,HTML,XML等多种形式产生报表或动态报表,在新版本还支持CSV,...报表的填充过程:先产生报表设计对象-&gt;序列化该对象-&gt;存储在磁盘或网络-&gt;产生XML文件(表格数据)

  • Spring_AOP事务管理

    JPA(Java Persistence API)Java EE 标准之一,为POJO提供持久化标准规范,并规范了持久化开发的统一API,符合 JPA规范的开发可以在不同的JPA框架下运行 JDO(Java Data Object )是Java对象持久化规范,用于存取某种...

  • 常用jar包概述

    见过spring3.0的都知道, spring3把之前的一个万能spring.jar分拆成了20个小jar. 当然你也可以省事的直接把20个都引进来,没问题. 不过如果你不想这么干, 这里是一个简单能在web中... org.springframework.beans-3....

  • SpringMVC+Spring+Mybatis框架集成

    1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业...

  • Spring MVC 学习总结(十一)——IDEA+Maven+多模块实现SSM框架集成

    与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据对象持久化引擎。这样搭配的优点是:轻量、自由...

  • SSM增删改查

    spring +mybatis,是标准的MVC设计模式,将整个系统划分为显示层,Controller层,Service层,DAO层四层 使用Spring MVC负责请求的转发和视图管理 spring实现业务对象管理,mybatis作为数据对象的持久化引擎。...

  • 阿里巴巴技术大牛赏鉴

    UI Recorder是一款零成本的整体自动化测试解决方案,一次自测等于多次测试,测一个浏览器等于测多个浏览器! 以下是本产品的特点: 自测 = 自动化测试:对于开发人员来讲,自测是开发流程中缺一不可的过程,我们要...

  • 中国顶级门户网站架构分析1

     首先声明,下面的内容都是我个人根据一些工具形成的猜想。并不保证和现实中各大门户网站所用的架构一摸一样,不过我认为八九不离十了^_^ 。 整篇文章我想分2个部分来讲:第一部分是分析国内2大顶级门户网站首页和频道的初步的基本构架。第二部分我将自己做的实验文档记录下来。希望每个SA心里都能有这样的架构。 新浪和搜狐在国内的知名度可谓无人不知无人不晓。他们每天的点击率都在千万以上。这样大的访问量对于新浪

Global site tag (gtag.js) - Google Analytics