一:
二:
三
具体的代码如下,由于代码量多,所以只选取了部分,
如果想要全码的,请在此文回复我,留给我联系方式,我会发你
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);
}
如需源码,请留下联系方式!如对你有帮助,请点个赞!!哈哈