文档章节

MiniDao原理笔记

THEONE1
 THEONE1
发布于 2014/06/14 19:23
字数 519
阅读 142
收藏 1

MiniDao原理笔记

1、  通过在spring容器中的注解注册minidao的接口,当程序启动时自动扫描examples.dao.*下的所有有关minidao注解的类,由org.jeecgframework.minidao.factory.MiniDaoBeanFactory进行解析,该类需要继承BeanFactoryPostProcessor,实现其抽象方法postProcessBeanFactory,方法中具体实现:

  1. 在该类中循环传入的minidao配置项,解析配置项查出该配置项对应文件夹下的所有class文件并进行加载

  2. 循环这些class文件类,判断是否是以MiniDao为注解方式,如果是则单独加载一个接口的代理类,将spring容器传入改代理类,并将miniDaoHandler作为拦截器传入,将对应的类注入给spring代理工厂管理,也就是说当这些类的方法在被调用的时候,都会去动态加载miniDaoHandler中的invoke方法。

2、  当运行时,调用了被动态代理过的DAO中的方法时,执行miniDaoHandler中的invoke方法.

  1. 判断被执行的method是否是抽象方法,如果是抽象方法,则不执行MiniDao拦截器;

  2. 如果不是,则继续判断该方法是否是hibernate实体维护的方法,如果是执行hibernate方式维护实体。

  3. 如果不是,则获取该方法的自定义注解(Arguments,进行对应SQL模板的装载,这里需要注意的是,判断装载SQL模板的两种方式,一种是SQL注解方式,一种是Arguments执行对应参数或者对象。

  4. 解析上一步得到的SQL模板,如果上一步获得的SQL模板是null,则说明不是以SQL注解方式装载,那么需要根据 [接口名_方法名.sql] 的格式获取SQL模板的路径,然后用Freemarker模板引擎解析该SQL模板。

  5. 组装占位符参数;因为SQL模板中是以 [:参数名] 为规则,这里需要将注解传递的参数替换到对应的占位符中

  6. 通过Spring封装好的JDBC方式执行执行SQL,返回结果


© 著作权归作者所有

共有 人打赏支持
THEONE1
粉丝 0
博文 1
码字总数 519
作品 0
东城
MiniDao 1.6.4 版本发布,轻量级 Java 持久化框架

MiniDao1.6.4 版本发布,MiniDao是轻量级Java持久化框架,也是Hibernate项目辅助利器。 MiniDao 简介及特征 MiniDao 是一款超轻量的JAVA持久层框架,具备Mybatis一样的SQL能力: 支持SQL分离...

Jeecg
06/04
0
0
Java 微服务框架 Jeecg-P3 1.0.0 重构版本发布

Jeecg-P3 微服务插件开发框架,业务组件以JAR方式提供,松耦合可插拔支持独立部署,也可无缝集成Jeecg平台。 当前版本:v1.0.0(重构版)| 2018-05-31 项目介绍: Jeecg-P3是一个微服务框架,...

Jeecg
05/31
0
0
欢迎广大技术爱好者参与JEECG开源项目

=========================================================================== 欢迎广大技术爱好者参与JEECG开源项目 JEECG开源项目 是一款基于代码生成器的智能开发平台。在不断的摸索中吸...

Jeecg
2013/09/09
0
0
JEECG 3.7.8 版本发布,Java 快速开发平台

JEECG 3.7.8 版本发布了,此版本主要目标是努力消灭BUG,让大家既有鱼丸也有粗面,多样化话主题UI满足你不同的需求,新增加5套Bootstrap风格代码生成器模板,极大提升美感和代码可控性,降低...

Jeecg
08/06
0
0
jeecg-framework-3.3.2-RELEASE 最新版本发布

平台介绍 JEECG(J2EE CodeGeneration)是一款基于代码生成器的智能开发平台,引领新开发模式(OnlineCoding模式->代码生成器模式->手工MERGE智能开发),可以帮助解决Java项目60%的重复工作,...

Jeecg
2013/09/02
0
1

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部