仿mybatis,手写自己的ORM框架

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

 

 

仿mybatis,手写自己的ORM框架_第1张图片

 

具体先对每个包的作用来个基本介绍,config包中的类保存的是配置信息,excutor的作用与mybatis的excutor类用于执行sql语句,mapper包中保存着mapper映射文件的信息,session提供统一操作借口,support包则提供对JDBC底层的访问支持,由于类有些多 在这里也不上代码了,有兴趣的同学可以去我的主页下载 https://download.csdn.net/download/qq_32459653/10616932

当然遇到不懂得可以私信我,欢迎骚扰。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(mybatis)