文档章节

MiniDao原理笔记

THEONE1
 THEONE1
发布于 2014/06/14 19:23
字数 519
阅读 139
收藏 1
点赞 0
评论 0

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-framework-3.3.2-RELEASE 最新版本发布

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

Jeecg
2013/09/02
0
1
Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板

JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+BootstrapTable列表 ElementUI列表表单)...

Jeecg
07/16
0
0
JEECG 3.7.7 发布,增加多套主流 UI 代码生成器模板

JEECG 3.7.7闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板 ⊙表单UI深度优化,平台UI风格升级一个级别 ⊙灵活通用代码...

Jeecg
07/16
0
0
500 G JAVA视频网盘分享(Jeecg社区)

500 G JAVA视频网盘分享(Jeecg社区) [涵盖从java入门到深入架构,Linux、云计算、分布式、大数据Hadoop、ios、Android、互联网技术应有尽有] Jeecg社区秉承开源宗旨,分享社区Java架构学习视...

Jeecg
2015/11/13
0
0
MiniDao-PE版 1.5.4 发布,轻量级J2EE持久化解决方案

MiniDao-PE精简版(轻量级持久层) MiniDao-PE是一种轻量级J2EE持久层解决方案,类似mybatis持久层的SQL方式,可以轻松集成Hibernate项目,事务统一管理,解决了Hibernate项目支持类mybaits...

Jeecg
2016/01/19
1K
1
轻量级J2EE持久层解决方案,MiniDao-PE版 1.5.4【版本发布】

MiniDao-PE精简版(轻量级持久层) MiniDao-PE是一种轻量级J2EE持久层解决方案,类似mybatis持久层的SQL方式,可以轻松集成Hibernate项目,事务统一管理,解决了Hibernate项目支持类mybaits...

Jeecg
2016/01/19
86
0
MiniDao 1.5.1 发布,J2EE 持久化解决方案

为什么需要MiniDao? MiniDao是什么,不知道的朋友可以看看这里: http://zhangdaiscott.github.io/MiniDao Mybatis的灵活,Hibernate的简便。Hibernate的项目随着业务复杂度增高,逐渐遇到瓶颈...

Jeecg
2015/06/23
6.6K
9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
54分钟前
0
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
56分钟前
0
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
0
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
10
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
2
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部