首页 > 代码库 > 手写SORM(simple object relation mapping)框架2—接口设计
手写SORM(simple object relation mapping)框架2—接口设计
首先在工程下建立3个包,分别是:core,utils,bean
core:
Query接口
package com.yf.sorm.core; import java.util.List; /** * 负责查询(对外提供服务的核心类) * @author yangf * */ 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 跟表对应的类的class对象 * @param id 主键的值 */ public void delete(Class<?> clazz, int id); /** * 输出对象在数据库中对应的记录(对象所在的类对应表,对象的主键值对应记录) * @param obj 对象 */ public void delete(Object obj); /** * 更新对象对应的记录,并且只更新指定的字段的值 * @param obj 所要更新的对象 * @param field 更新的属性列表 * @return 执行sql语句后影响记录的行数 */ public int update(Object obj, String[] field); /** * 查询返回多行记录,并将每行记录封装到clazz指定的类的对象中 * @param sql 查询语句 * @param clazz 封装数据的javabean类的class对象 * @param params sql的参数 * @return 查询到的结果 */ public <T> List<T> queryRows(String sql, Class<?> clazz, Object[] params); /** * 查询返回一行记录,并将该记录封装到clazz指定的类的对象中 * @param sql 查询语句 * @param clazz 封装数据的javabean类的class对象 * @param params sql的参数 * @return 查询到的结果 */ public <T> T queryUniqueRow(String sql, Class<?> clazz, Object[] params); /** * 查询返回一个值(一行一列),并将该值返回 * @param sql 查询语句 * @param params sql参数 * @return 查询到的结果 */ public <T> T queryValue(String sql, Object[] params); /** * 查询返回一个数字(一行一列),并将该值返回 * @param sql 查询语句 * @param params sql的参数 * @return 查询到的数字 */ public Number queryNumber(String sql, Object[] params); }
TypeConvertor接口
package com.yf.sorm.core; /** * 负责java数据类型和数据库数据类型的相互转换 * @author yangf * */ public interface TypeConvertor { /** * 将数据库数据类型转化为java的数据类型 * @param columnType 数据库字段的数据类型 * @return java的数据类型 */ public String databaseTypeToJavaType(String columnType); /** * 将java数据类型转化为数据库数据类型 * @param javaDataType java数据类型 * @return 数据库数据类型 */ public String javaTypeTodatabaseType(String javaDataType); }
bean:
ColumnInfo类
package com.yf.sorm.bean; /** * 封装表中一个字段的信息 * @author yangf * */ public class ColumnInfo { /** * 字段名称 */ private String name; /** * 字段的数据类型 */ private String dataType; /** * 字段的键类型(0:普通键,1:主键,2:外键) */ private int keyType; /** * 空构造器 */ public ColumnInfo() { } /** * 构造器 * @param name 字段名称 * @param dataType 字段的数据类型 * @param keyType 字段的键类型 */ public ColumnInfo(String name, String dataType, int keyType) { super(); this.name = name; this.dataType = dataType; this.keyType = keyType; } /** * 返回字段名称 * @return 字段名称 */ public String getName() { return name; } /** * 设定字段名称 * @param name 字段名称 */ public void setName(String name) { this.name = name; } /** * 返回字段的数据类型 * @return 字段的数据类型 */ public String getDataType() { return dataType; } /** * 设定字段的数据类型 * @param dataType 字段的数据类型 */ public void setDataType(String dataType) { this.dataType = dataType; } /** * 返回字段的键类型 * @return 字段的键类型 */ public int getKeyType() { return keyType; } /** * 设定字段的键类型 * @param keyType 字段的键类型 */ public void setKeyType(int keyType) { this.keyType = keyType; } }
TableInfo:
package com.yf.sorm.bean; import java.util.Map; /** * 存储表结构的信息 * @author yangf * */ public class TableInfo { /** * 表名 */ private String Tname; /** * 所有字段的信息 key:字段名称 */ private Map<String, ColumnInfo> colums; /** * 唯一主键,本框架只支持表中有且只有一个主键的情况 */ private ColumnInfo onlyPriKey; /** * 空构造器 */ public TableInfo() { } /** * 构造器 * @param tname 表名 * @param colums 所有字段的信息 * @param onlyPriKey 唯一主键 */ public TableInfo(String tname, Map<String, ColumnInfo> colums, ColumnInfo onlyPriKey) { super(); Tname = tname; this.colums = colums; this.onlyPriKey = onlyPriKey; } /** * 返回表名 * @return 表名 */ public String getTname() { return Tname; } /** * 设定表名 * @param tname 表名 */ public void setTname(String tname) { Tname = tname; } /** * 返回所有字段的信息 * @return 所有字段的信息 */ public Map<String, ColumnInfo> getColums() { return colums; } /** * 设定所有字段的信息 * @param colums 所有字段的信息 */ public void setColums(Map<String, ColumnInfo> colums) { this.colums = colums; } /** * 返回唯一主键 * @return 唯一主键 */ public ColumnInfo getOnlyPriKey() { return onlyPriKey; } /** * 设定唯一主键 * @param onlyPriKey 唯一主键 */ public void setOnlyPriKey(ColumnInfo onlyPriKey) { this.onlyPriKey = onlyPriKey; } }
手写SORM(simple object relation mapping)框架2—接口设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。