java (281)手写SORM之总体架构图解
来源:互联网 发布:mac 图标不放大 编辑:程序博客网 时间:2024/06/08 10:59
一:
二:
三
具体的代码如下,由于代码量多,所以只选取了部分,
如果想要全码的,请在此文回复我,留给我联系方式,我会发你
ColumnInfo
package com.imust.sorm.bean;/** * 封装了表中一个字段的信息 * @author Zachary (为上帝所心仪的人) * @date 2017年10月2日 * @project zzfSORM * @package com.imust.sorm.bean */public class ColumnInfo { /** * 字段名称 */ private String name; /** * 字段的数据类型 */ private String dataType; /** * 字段的键类型 */ private int keyType; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDataType() { return dataType; } public void setDataType(String dataType) { this.dataType = dataType; } public int getKeyType() { return keyType; } public void setKeyType(int keyType) { this.keyType = keyType; } public ColumnInfo(String name, String dataType, int keyType) { super(); this.name = name; this.dataType = dataType; this.keyType = keyType; } public ColumnInfo() { super(); }}
Configuration
package com.imust.sorm.bean;/** * 管理配置信息 * @author Zachary (为上帝所心仪的人) * @date 2017年10月2日 * @project zzfSORM * @package com.imust.sorm.bean */public class Configuration { /** * 驱动类 */ private String driver; /** * jdbc的url */ private String url; /** * 数据库的用户名 */ private String user; /** * 数据库的密码 */ private String pwd; /** * 正在使用哪个数据库 */ private String usingDB; /** * 项目的源码路径 */ private String srcPath; /** * 扫描生成java类的包(po的意思是Persistence object 持久化对象) */ private String poPackage; public String getDriver() { return driver; } public void setDriver(String driver) { this.driver = driver; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getUsingDB() { return usingDB; } public void setUsingDB(String usingDB) { this.usingDB = usingDB; } public String getSrcPath() { return srcPath; } public void setSrcPath(String srcPath) { this.srcPath = srcPath; } public String getPoPackage() { return poPackage; } public void setPoPackage(String poPackage) { this.poPackage = poPackage; } public Configuration(String driver, String url, String user, String pwd, String usingDB, String srcPath, String poPackage) { super(); this.driver = driver; this.url = url; this.user = user; this.pwd = pwd; this.usingDB = usingDB; this.srcPath = srcPath; this.poPackage = poPackage; } public Configuration() { super(); }}
JavaFieldGetSet
package com.imust.sorm.bean;/** * 封装了java属性和get,set方法的源代码 * @author Zachary (为上帝所心仪的人) * @date 2017年10月2日 * @project zzfSORM * @package com.imust.sorm.bean */public class JavaFieldGetSet { /** * 属性的源码信息 如 private int userId */ private String fieldInfo; /** * get方法的源码信息 如 public int getUserId(){} */ private String getInfo; /** * set方法的源码信息 如: public void setUserId(){} * */ private String setInfo; public String getFieldInfo() { return fieldInfo; } public void setFieldInfo(String fieldInfo) { this.fieldInfo = fieldInfo; } public String getGetInfo() { return getInfo; } public void setGetInfo(String getInfo) { this.getInfo = getInfo; } public String getSetInfo() { return setInfo; } public void setSetInfo(String setInfo) { this.setInfo = setInfo; } public JavaFieldGetSet(String fieldInfo, String getInfo, String setInfo) { super(); this.fieldInfo = fieldInfo; this.getInfo = getInfo; this.setInfo = setInfo; } public JavaFieldGetSet() { super(); } @Override public String toString() { System.out.println(fieldInfo); System.out.println(getInfo); return super.toString(); }}
TableInfo
package com.imust.sorm.bean;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 存储表结构的信息 * @author Zachary (为上帝所心仪的人) * @date 2017年10月2日 * @project zzfSORM * @package com.imust.sorm.bean */public class TableInfo { /** * 表名 */ private String tname; /** * 封装了所有字段的信息 */ private Map<String, ColumnInfo> columns; /** * 唯一主键(目前我们只能处理表中有且只有一个主键的情况) */ private ColumnInfo onlyPriKey; //联合主键 private List<ColumnInfo> priKeys; public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } public Map<String, ColumnInfo> getColumns() { return columns; } public void setColumns(Map<String, ColumnInfo> columns) { this.columns = columns; } public ColumnInfo getOnlyPriKey() { return onlyPriKey; } public void setOnlyPriKey(ColumnInfo onlyPriKey) { this.onlyPriKey = onlyPriKey; } public List<ColumnInfo> getPriKeys() { return priKeys; } public void setPriKeys(List<ColumnInfo> priKeys) { this.priKeys = priKeys; } public TableInfo() { super(); } public TableInfo(String tname, Map<String, ColumnInfo> columns, ColumnInfo onlyPriKey, List<ColumnInfo> priKeys) { super(); this.tname = tname; this.columns = columns; this.onlyPriKey = onlyPriKey; this.priKeys = priKeys; } public TableInfo(String tname, ColumnInfo onlyPriKey, List<ColumnInfo> priKeys) { super(); this.tname = tname; this.onlyPriKey = onlyPriKey; this.priKeys = priKeys; } public TableInfo(String tableName, ArrayList<ColumnInfo> arrayList, HashMap<String, ColumnInfo> hashMap) { }}
DBManager
package com.imust.sorm.core;import java.io.IOException;import java.util.Properties;import com.imust.sorm.bean.Configuration;/** * 根据配置信息,维持链接对象的管理(增加连接功能) * @author Zachary (为上帝所心仪的人) * @date 2017年10月2日 * @project zzfSORM * @package com.imust.sorm.core */public class DBManager { private static Configuration conf; static{ Properties pros = new Properties(); try { pros.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties")); } catch (IOException e) { e.printStackTrace(); } conf = new Configuration(); conf.setDriver(pros.getProperty("driver")); conf.setPoPackage(pros.getProperty("poPackage")); conf.setPwd(pros.getProperty("pwd")); conf.setSrcPath(pros.getProperty("srcPath")); conf.setUrl(pros.getProperty("url")); conf.setUser(pros.getProperty("user")); conf.setUsingDB(pros.getProperty("usingDB")); } public static Configuration getConf() { return conf; }}
Query
package com.imust.sorm.core;import java.util.List;/** * 负责查询(对外提供服务的一个类) * @author Zachary (为上帝所心仪的人) * @date 2017年10月2日 * @project zzfSORM * @package com.imust.sorm.core */@SuppressWarnings("all")public interface Query { /** * 直接执行一个DML语句 * @param sql SQL语句 * @param params 参数 * @return 执行sql语句后影响记录的行数 */ public int executeDML(String sql,Object[] params); /** * 将一个对象存储到数据库中 * @param obj 要存储的对象 */ public void insert(Object obj); /** * 删除clazz表示类对应表中的记录(指定id主键值的记录) * @param clazz 跟表对应的类的clazz * @param id * @return */ public void delete(Class clazz,Object id);//delete from user where id = 2 /** * 删除对象在数据库中对应的记录(对象所在的类对应到表,对象的主键值对应到记录) * @param obj */ public void delete(Object obj); /** * 更新对象对应的记录,并且只更新指定的字段的值 * @param obj 所要跟新的对象 * @param fieldNames 更新的属性列表 * @return */ public int udpate(Object obj,String[] fieldNames); /** * 查询返回多行记录,并将每行记录封装到clazz指定的类对象中 * @param sql 查询的语句 * @param clazz 封装数据的javabean类的Class对象 * @param params sql的参数 * @return 查询的结果 */ public List queryRows(String sql,Class clazz,Object[] params); /** * 查询返回一行记录,并将该记录封装到clazz指定的类对象中 * @param sql 查询的语句 * @param params sql的参数 * @return 查询的结果 */ public Object queryUniqueRows(String sql,Object[] params); /** * 查询返回一个值(一行一列),并将该值返回 * @param sql 查询的语句 * @param params sql的参数 * @return 查询的结果 */ public Object queryValue(String sql,Object[] params); /** * 查询返回一个数字(一行一列),并将该值返回 * @param sql 查询的语句 * @param params sql的参数 * @return 查询的结果 */ public Number queryNumber(String sql,Object[] params);}
如需源码,请留下联系方式!如对你有帮助,请点个赞!!哈哈
阅读全文
0 0
- java (281)手写SORM之总体架构图解
- java(280)手写sorm之jdbcUtil工具类的实现
- 【手写SORM框架】_思想介绍_架构介绍JAVA280
- 一个实际项目Java架构设计之总体设计
- 一个实际项目Java架构设计之总体设计
- 一个实际项目Java架构设计之总体设计
- s2sh架构之总体概述
- Lucene初探之总体架构
- Activiti之《总体架构分析》
- java集合01--总体架构
- java集合01--总体架构
- Apache Log4j 架构之二 总体架构
- 项目一:SORM基本框架之基本思路
- jQuery源码学习之总体架构
- jquery源码分析之总体架构
- 总体架构
- Java集合之总体框架
- 第一章:高性能Web宏观架构之总体架构图
- 详解Python中的下划线
- 1047. 编程团体赛(20)
- clique的挖矿的信任节点
- 深度解剖~ FreeRtos阅读笔记3 freertos调度器启动、中断优先级管理、中断优先级分组
- TypeError: a bytes-like object is required, not 'str'
- java (281)手写SORM之总体架构图解
- 高性能计算库
- iostat -dmx输出的解释
- java中length,length(),size()区别
- poj 2456 Aggressive cows
- Codeforces Round #435 (Div. 2) 题解
- 使用 pyenv 管理多个python版本
- Aggressive cows
- D