java 一个简单的orm框架开发

目录

ORM

作用

好处

一个简单的ORM框架开发

开发环境

项目大致结构如下图

实现具体说明

首先在pom.xml添加依赖包

创建数据库和表

创建一个实体类Student

创建一个反射工具类

创建一个数据库类型枚举类

创建一个操作数据库配置文件的标准接口

创建一个实现操作数据库配置文件标准接口的类

创建数据库配置文件dbconfig.properties写入以下内容

创建一个执行结果的枚举类

创建一个执行结果统一返回标准接口

创建一个实现执行结果统一返回标准接口的类

创建一个创建数据库链接的工厂类

创建一个对数据库进行操作的BaseDao类

创建项目自带的一个App类进行测式代码

源码下载地址


ORM

Object Relational Mapping 对象关系映射

作用

我们可以把数据库里面一行的数据,通过反射映射到java里面一个实体

好处

方便对数据库进行操作

一个简单的ORM框架开发

开发环境

工具:IDEA

JDK:1.8

MySQL:8.0.13

项目类型:Maven

项目大致结构如下图

实现具体说明

首先在pom.xml添加依赖包

    <!--连接数据库驱动包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.13</version>
    </dependency>

创建数据库和表

 #测试用
 #创建一个数据库
 create database test;
 #创建一张表
 create table student(
 	id int auto_increment primary key,
 	name varchar(5) not null,
 	gender bit default 0,
    age tinyint unsigned not null
 )

创建一个实体类Student

package org.Entity;

/**
 * 学生实体类
 */

public class Student {
    private int id;  //学生编号
    private String name;  //学生姓名
    private boolean gender;  //学生性别
    private int age;  //学性年龄

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender=" + gender +
                ", age=" + age +
                '}';
    }
}

创建一个反射工具类

package org.util;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * 反射工具类
 */

public class EntityReflectUtil {

    /**
     *获取一个具类所有属性及属性对应的set方法
     * @param c 反射类对象
     * @param <T> 要反射的具体类
     * @return 具体类的所有属性及属性对应的set方法
     */
    public static <T> Map<String, Method> getEntitySetMethod(Class<T> c) {
        StringBuilder builder = new StringBuilder();
        Map<String, Method> map = new HashMap();
        for(Method m : c.getMethods()) {
            if (builder.length() >0) builder.delete(0, builder.length());
            builder.append(m.getName());
            if(!builder.toString().startsWith("set")) continue;
            map.put(builder.delete(0, 3).toString().substring(0, 1).toLowerCase()
                    + builder.delete(0, 1).toString(), m);
        }
        return map;
    }
}

创建一个数据库类型枚举类

package org.jdbc;

/**
 *数据库类型枚举
 */

public enum DBType {
    MYSQL, SQL_SERVER
}

创建一个操作数据库配置文件的标准接口

package org.jdbc;

/**
 * 获取数据库链接配置文件标准接口
 */

public interface DBConfig {
    /**
     * 获取驱动包
     * @return
     */
    String getDriver();

    /**
     * 获取数据库链接字符串
     * @return
     */
    String getUrl();

    /**
     * 获取链接数据库用户名
     * @return
     */
    String getUserName();

    /**
     * 获取链接数据库的密码
     * @return
     */
    S
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值