orm框架,说白了就是帮助用户对jdbc进行封装,底层还是操作jdbc,前几天了解了一下mybatis的原理,于是想手写一个自己的半自动orm框架,加深对orm的使用和理解,顺便记录下自己的学习历程。
本篇博客的orm框架开发环境为Spring4.3.0.RELEASE+jdk1.8,基于注解的形式开发,目前提供的功能较为简单,暂未开发出参数转换器,首先介绍对开发中涉及到的注解,做一个简要的介绍,注解共有五种,分别为标志着,增,删,改,查,和mapper类的注解,具体如下
package anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by zoujianglin
* 2018/8/19 0019.
*/
/**
* 类似于mybatis中的delete注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface ORMDelete {
String value();
}
package anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by zoujianglin
* 2018/8/19 0019.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface ORMInsert {
String value();
}
package anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by zoujianglin
* 2018/8/19 0019.
*/
/**
* 类似于mybatis中的select注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface ORMSelect {
String value();
}
package anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by zoujianglin
* 2018/8/19 0019.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface ORMUpdate {
//sql语句
String value();
}
package anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by zoujianglin
* 2018/8/19 0019.
*/
/**
* 用于Mapper注解,相当于mybatis中的mapper,标志着mapper类
* 需要自己显示生明
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface ORMMapper {
//操作所对应的model的路径
String value();
}
具体先对每个包的作用来个基本介绍,config包中的类保存的是配置信息,excutor的作用与mybatis的excutor类用于执行sql语句,mapper包中保存着mapper映射文件的信息,session提供统一操作借口,support包则提供对JDBC底层的访问支持,由于类有些多 在这里也不上代码了,有兴趣的同学可以去我的主页下载 https://download.csdn.net/download/qq_32459653/10616932
当然遇到不懂得可以私信我,欢迎骚扰。