【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 //连接池的最大连接数
注意
- 在src下建立db.properties,填写相关内容。
- 第一次使用时,先运行JavaFileUtils.java,根据数据库表信息生成java文件,才能正常做一些测试。
- 每张表目前仅支持一个主键。不能处理多个主键的情况。
- po尽量使用包装类,不要使用基本数据类型。
几乎每个.java文件都有自己的main测试方法,文件名见名知意,比如MySQLQuery是用来执行SQL语句的。就不多解释啦。
如何生成JavaDoc
然后一路next即可。
如果遇到字符集的问题报错,使用:
-encoding utf-8 -charset utf-8
使用方式Demo
(1)创建项目,添加两个要用的jar包,按照自己的数据库修改properties信息
(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
看到生成了这个包
增删改查:使用示例
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 ORM】手写ORM框架:源代码、jar、生成JavaDoc文档相关推荐
- java计算机毕业设计汽车租赁管理系统源代码+数据库+系统+lw文档
java计算机毕业设计汽车租赁管理系统源代码+数据库+系统+lw文档 java计算机毕业设计汽车租赁管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- java计算机毕业设计汽车客运站票务管理系统源代码+数据库+系统+lw文档
java计算机毕业设计汽车客运站票务管理系统源代码+数据库+系统+lw文档 java计算机毕业设计汽车客运站票务管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档
java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档 java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- java计算机毕业设计网上购物商城源代码+数据库+系统+lw文档
java计算机毕业设计网上购物商城源代码+数据库+系统+lw文档 java计算机毕业设计网上购物商城源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...
- java计算机毕业设计网络课程考试源代码+数据库+系统+lw文档
java计算机毕业设计网络课程考试源代码+数据库+系统+lw文档 java计算机毕业设计网络课程考试源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...
- java计算机毕业设计汽车维修服务系统源代码+数据库+系统+lw文档
java计算机毕业设计汽车维修服务系统源代码+数据库+系统+lw文档 java计算机毕业设计汽车维修服务系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- java计算机毕业设计网上书店管理系统源代码+数据库+系统+lw文档
java计算机毕业设计网上书店管理系统源代码+数据库+系统+lw文档 java计算机毕业设计网上书店管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- java计算机毕业设计水质监测数据采集系统源代码+数据库+系统+lw文档
java计算机毕业设计水质监测数据采集系统源代码+数据库+系统+lw文档 java计算机毕业设计水质监测数据采集系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- java计算机毕业设计网上租房管理源代码+数据库+系统+lw文档
java计算机毕业设计网上租房管理源代码+数据库+系统+lw文档 java计算机毕业设计网上租房管理源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...
- java计算机毕业设计旅游信息管理系统源代码+数据库+系统+lw文档
java计算机毕业设计旅游信息管理系统源代码+数据库+系统+lw文档 java计算机毕业设计旅游信息管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
最新文章
- 开发者关心的十个数据库技术问题
- 读入一组文本行,打印最长的文本行
- GridView 序号 排序 正序 倒序
- Python 越来越火,为什么?
- SAP Spartacus 支持 Vue 吗?
- 科学家公布“寿命计算器”,快算一下你能活多久?
- 事件触发控制_SystemVerilog线程控制与通信
- 王者荣耀总决赛因天气原因延期 玩家获得皮肤碎片等补偿
- 随机获取图片的api接口
- php5.1 0day,关于phpwind 5.01-5.3 0day的分析
- 机器学习- 吴恩达Andrew Ng Week1 知识总结 Introduciton
- 《现代操作系统第四版》第一章课后答案
- excel筛选和排序
- APP支付(微信、支付宝)
- 人工智能导论(数据挖掘)
- Hololens拍照,录像,保存到本地,读取图片和视频
- 【数据结构C语言】二叉树的遍历
- 2023年2月《中国数据库行业分析报告》正式发布(含精彩内容概览)
- 本征半导体的导电机制 空穴的概念
- JQuery中的id选择器含有特殊字符时,不能选中dom元素的解决方法