版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/zhangdaiscott/article/details/27068645

  开发指南专题十四:JEECG微云高速开发平台MiniDao 介绍

13.MiniDao 介绍

13.1.  MiniDao简单介绍及特征

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

  • 1.O/R mapping不用设置xml,零配置便于维护

  • 2.不须要了解JDBC的知识

  • 3.SQL语句和java代码的分离

  • 4.能够自己主动生成SQL语句

  • 5.接口和实现分离,不用写持久层代码。用户仅仅需写接口,以及某些接口方法相应的sql
    它会通过AOP自己主动生成实现类

  • 6.支持自己主动事务处理和手动事务处理

  • 7.支持与hibernate轻量级无缝集成

  • 8.MiniDao整合了Hibernate+mybatis的两大优势,支持实体维护和SQL分离

  • 9.SQL支持脚本语言

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

13.2.  接口和SQL文件相应文件夹

第一步:接口定义[EmployeeDao.java]

@MiniDao

public interface EmployeeDao {

 @Arguments("employee")

 public List<Map>getAllEmployees(Employee employee);

 @Arguments("empno")

 Employee getEmployee(String empno);

 @Arguments({"empno","name"})

 MapgetMap(String empno,String name);

 @Sql("SELECT count(*) FROMemployee")

 Integer getCount();

     
@Arguments("employee")

 intupdate(Employee employee);

  @Arguments("employee")

 voidinsert(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>

  13.3.  MiniDao接口配置

<!--
注冊MiniDao接口 -->

<bean class="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">

<propertyname="packagesToScan">

<list>

<value>examples.dao.*</value>

</list>

</property>

</bean>

13.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();

   List<Map> list = employeeDao.getAllEmployees(employee);

   
for(Mapmp: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"));

   
}

}

}

13.5. 
环境搭建

环境:Spring3.X,Hibernate 3以上

MiniDao依赖:org.jeecgframework.minidao-1.2.1.jar

     
13.5.1. MiniDao与Spring集成

第一步:新建MiniDao的spring配置文件

文件名称:spring-minidao.xml(能够自己定义),仅仅要让spring扫描到这个文件就可以。

扫描方法一:

在web.xml中的spring监听器中扫描规则中包括spring-minidao.xml。

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring-*.xml</param-value>

</context-param>

扫描方法二:

在spring的配置文件里引入spring-minidao.xml。

<import resource="classpath*:spring-minidao.xml" />

 


MiniDao配置具体解释

MiniDao对springJdbc的支持(MiniDao的核心基础配置)

 

<!-- MiniDao动态代理类
-->

        
<bean id="miniDaoHandler" class="org.jeecgframework.minidao.aop.MiniDaoHandler">

<!--
springjdbc
,必须依赖 -->

                  
<property name="jdbcTemplate" ref="jdbcTemplate"></property>

        
</bean>

 

<!--
注冊MiniDao接口 -->

        
<bean class="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">

                  
<property name="packagesToScan">

                           
<list>

<!--
能够以包名注冊,自己主动扫描包以下的Dao接口 -->

                                    
<value>jeecg.cgreport.dao.*</value>

                                    
<value>jeecg.cgform.dao.*</value>

                           
</list>

                  
</property>

        
</bean>

 

 

 

    13.5.2. MiniDao与Hibernate集成

 前提是Hibernate已经由Spring容器管理,在MiniDao的配置文件里直接增加Hibernate支持就可以。

<!-- Hibernate MiniDao -->

        
<bean id="genericBaseCommonDao"

<!--
对hibernate实体通用操作的实现类 -->
        
class="org.jeecgframework.minidao.hibernate.dao.impl.GenericBaseCommonDao">

<!--
hibernate
的sessionFactory -->    

                  
<property name="sessionFactory">

                           
<ref bean="sessionFactory" />

                  
</property>

        
</bean>



开发指南专题十四:JEECG微云高速开发平台MiniDao 介绍的更多相关文章

  1. 开发指南专题八:JEECG微云高速开发平台数据字典

       开发指南专题八:JEECG微云高速开发平台数据字典的使用 1.标签中使用数据字典 数据字典为系统中可能用到的字典类型数据提供了使用的便利性和可维护性.下面拉框标签<t:dictSele ...

  2. 开发指南专题六:JEECG微云高速开发平台代码生成

    开发指南专题六:JEECG微云高速开发平台代码生 1.1. 代码生成扫描路径配置 用代码生成器生成代码后.须要进行相关配置配置,扫描注入control.service.entity等; 具体操作过程例 ...

  3. 开发指南专题五:JEECG微云高速开发平台代码生成器

    开发指南专题五:JEECG微云高速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,须要先配置好本机的maven环境,并在eclipse中安装好m2ecl ...

  4. 开发指南专题二:JEECG微云高速开发平台JEECG框架初探

    开发指南专题二:JEECG微云高速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境界址:http://demo.jeecg.org:8090/能够看 ...

  5. 开发指南专题十一:JEECG微云高速开发平台--基础用户权限

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/26580037     开发指南专题 ...

  6. 专题开发十二:JEECG微云高速开发平台-基础用户权限

      专题开发十二:JEECG微云高速开发平台-基础用户权限 11.3.4自己定义button权限 Jeecg中.眼下button权限设置,是通过对平台自己封装的button标签(<t:dgFun ...

  7. 专题开发十三:JEECG微云高速开发平台-附录

    专题开发十三:JEECG微云高速开发平台-附录 12.1UI库经常使用控件參考演示样例 序号 控件 解决方式 參考演示样例 1 datagrid数据列表.字段採用数据字典显示文本 <t:dgCo ...

  8. 开发指南专题4:JEECG高速微云开发平台--JEECG开发环境的搭建

    开发指南专题4:JEECG微云高速开发平台开发环境搭建 1. JEECG开发环境搭建 JEECG推荐的开发环境为Myeclipse8.5/Eclipse3.7+JDK1.6+Tomcat6.0 1.1 ...

  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重

    为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...

随机推荐

  1. android 日期控件 DatePicker

    DatePicker的缺陷 提供的API太少,没办法个性化定制.比如,不能指定某部分的颜色,不能控制显示的部分等. xml中提供的属性太少,同样影响定制化. 兼容性问题太多,在4.x,5.x和6.0+ ...

  2. LinkedBlockQueue生产消费源码解析

    LinkedBlockQueue自JDK1.5以后提供的一种阻塞队列,遵循生产者消费者模式,实现了BlockQueue接口,如图 从它的名字可以了解到它是采用链表的方式实现了阻塞队列,并且定义了“节点 ...

  3. Java多线程--锁的优化

    Java多线程--锁的优化 提高锁的性能 减少锁的持有时间 一个线程如果持有锁太长时间,其他线程就必须等待相应的时间,如果有多个线程都在等待该资源,整体性能必然下降.所有有必要减少单个线程持有锁的时间 ...

  4. 【公众号转载】MyBatis拦截器原理探究

    MyBatis拦截器介绍 MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能.那么拦截器拦截MyBatis中的哪些内容呢? 我们进入官网看一看: MyBatis 允 ...

  5. 脚本执行错误---/bin/sh^M:损坏的解释器 没有那个文件或目录

    在执行脚本时,弹出错误提示: 这是由于脚本文件在保存时使用了DOS文件格式造成的,可以用vim打开文件,然后执行下列操作:

  6. 前端SEO

    一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果.深究其背后的故事,搜索引擎做了很多事情. 在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关 ...

  7. javascript经典面试题之for循环click

    经典重现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...

  8. ScheduledExecutorService的两种方法

    开发中,往往遇到另起线程执行其他代码的情况,用java定时任务接口ScheduledExecutorService来实现. ScheduledExecutorService是基于线程池设计的定时任务类 ...

  9. HDU3359(SummerTrainingDay05-I 高斯消元)

    Kind of a Blur Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  10. Django-url反向解析和命名空间

    一.urls硬编码 在反向解析和命名空间之前我们先来说说URLS硬编码,用django 开发应用的时候,可以完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRed ...