【Java ORM】手写ORM框架:源代码、jar、生成JavaDoc文档

SORMSourceCode

把这个手写框架取名为SORM。

(1)源代码(Eclipse项目文件):GitHub地址

(2)jar包、源代码、JavaDoc文档、使用说明:Github地址

一个简单的手写SORM框架,Java+MySQL,增删改查,根据表信息自动生成JavaBean。

使用时,需要配置src下的db.properties文件,改成自己的数据库名称、路径。配置示例:

driver=com.mysql.cj.jdbc.Driver                               //数据库驱动
url=jdbc\:mysql\://localhost\:3306/sorm?serverTimezone=UTC    //数据库url
user=root                                                     //用户名
pwd=123456                                                    //密码
usingDB=mysql                                                 //mysq(能用)还是oracle(未测试)
srcPath=C:/Users/Bug/eclipse-workspace3/SORMSourceCode/src    //项目路径 用于根据数据库表名称生成javabrean
poPackage=com.bjsxt.po                                        //自动生成的javabean保存的包(若不存在,则自动创建)
queryClass=com.bjsxt.sorm.core.MySqlQuery					  //执行查询的类名称(不一定是mysql,可能是其他数据库,其他数据库需要自己实现类)
poolMinSize=10												  //连接池的最小连接数
poolMaxSize=100												  //连接池的最大连接数

注意

  1. 在src下建立db.properties,填写相关内容。
  2. 第一次使用时,先运行JavaFileUtils.java,根据数据库表信息生成java文件,才能正常做一些测试。
  3. 每张表目前仅支持一个主键。不能处理多个主键的情况。
  4. po尽量使用包装类,不要使用基本数据类型。

几乎每个.java文件都有自己的main测试方法,文件名见名知意,比如MySQLQuery是用来执行SQL语句的。就不多解释啦。


如何生成JavaDoc

【Java ORM】手写ORM框架:源代码、jar、生成JavaDoc文档_第1张图片
然后一路next即可。
【Java ORM】手写ORM框架:源代码、jar、生成JavaDoc文档_第2张图片
如果遇到字符集的问题报错,使用:
-encoding utf-8 -charset utf-8

【Java ORM】手写ORM框架:源代码、jar、生成JavaDoc文档_第3张图片


使用方式Demo

(1)创建项目,添加两个要用的jar包,按照自己的数据库修改properties信息
【Java ORM】手写ORM框架:源代码、jar、生成JavaDoc文档_第4张图片
(2)手动运行一下TableContext.updateJavaPOFile();,自动生成po类

package cn.hanquan.test;

import com.bjsxt.sorm.core.TableContext;

public class Test {
	public static void main(String[] args) {
		// 首先通过这个方法生成po类
		TableContext.updateJavaPOFile();
	}
}

运行结果示例

加载class com.bjsxt.sorm.core.TableContext
初始化池,池中连接数:1
初始化池,池中连接数:2
初始化池,池中连接数:3
初始化池,池中连接数:4
初始化池,池中连接数:5
初始化池,池中连接数:6
初始化池,池中连接数:7
初始化池,池中连接数:8
初始化池,池中连接数:9
初始化池,池中连接数:10
建立表emp对应的java类:C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Emp.java
编译成功为0:0 C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Emp.java
.........C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po
---C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Emp.class
>>>C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po/Emp.class
建立表dept对应的java类:C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Dept.java
编译成功为0:0 C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Dept.java
.........C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po
---C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Dept.class
>>>C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po/Dept.class
TableContext完成加载,已根据表结构生成java文件
建立表emp对应的java类:C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Emp.java
编译成功为0:0 C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Emp.java
.........C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po
---C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Emp.class
>>>C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po/Emp.class
建立表dept对应的java类:C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Dept.java
编译成功为0:0 C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Dept.java
.........C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po
---C:\Users\Bug\eclipse-workspace3\SORM_Test\src\com\bjsxt\po/Dept.class
>>>C:\Users\Bug\eclipse-workspace3\SORM_Test\bin\com\bjsxt\po/Dept.class

看到生成了这个包
【Java ORM】手写ORM框架:源代码、jar、生成JavaDoc文档_第5张图片

增删改查:使用示例

package cn.hanquan.test;

import java.util.ArrayList;
import java.util.List;

import com.bjsxt.po.Emp;
import com.bjsxt.sorm.core.Query;
import com.bjsxt.sorm.core.QueryFactory;
import com.bjsxt.sorm.core.TableContext;

@SuppressWarnings("all")
public class Test {
	public static void main(String[] args) {
		// 首先通过这个方法生成po类
		TableContext.updateJavaPOFile();

		//add01();
		//delete01();
		//update01();
		select02();
	}

	// 增
	public static void add01() {
		Emp e = new Emp();
		e.setAge(18);
		e.setEmpname("大萝卜");
		e.setSalary(500000);

		Query q = QueryFactory.createQuery();
		q.insert(e);
	}

	// 删
	public static void delete01() {
		Query q = QueryFactory.createQuery();
		Emp e = new Emp();
		e.setId(5);
		q.delete(e);
	}

	// 改
	public static void update01() {
		Query q = QueryFactory.createQuery();
		Emp e = new Emp();
		e.setId(11);
		e.setEmpname("参天大萝卜");
		q.update(e, new String[] { "empname" });
	}

	// 查
	public static void select01() {
		Query q = QueryFactory.createQuery();
		List<Emp> list = new ArrayList<Emp>();
		list = q.queryRows("select * from emp where age>? and salary>?", Emp.class, new Object[] { 20, 5000 });
		for (Emp e : list) {
			System.out.println(e.toString());
		}
	}
	
	public static void select02() {
		Query q = QueryFactory.createQuery();
		List<Emp> list = new ArrayList<Emp>();
		System.out.println(q.queryUniqueRow("select * from emp where id>?", Emp.class, new Object[] { 2 }));
	}
}

你可能感兴趣的:(Java,MySQL)