有高手自己写数据库访问层吗?进来讨论下好吗
最近都没怎么用JAVA了,一直写C#,原来写JAVA也不常用Hibernate和spring这类框架,多数都是jsp + javabean 或者Ejb了。
写C#时发现C#几乎没有成熟度较高的框架,多数C#的程序员们好像也不太爱考虑系统框架的问题。所以没事儿时,就用C#写了一个免配置的DB访问组件。
基本结构是这样的
----------------------------------------------
public interface IDBEngine
{
/// 保存数据
int insert(Object pojo) ;
/// 更新数据
int update(Object pojo);
/// 删除数据
int delete(Object pojo);
/// 提取结果集
ArrayList select(Object pojo);
/// 提取结果集到DataTable
DataTable selectIntoDataTable(Object pojo);
/// 提取结果集
ArrayList select(Object pojo, Pagination pagination);
/// 提取连接
OleDbConnection getConnection();
/// 打开事务
void beginTrans();
/// 提交
void commit();
/// 回滚
void rollback();
/// 执行单条SQL
void executeSQL(String SQL);
/// 带返回执行存储过程语句
ArrayList executeProcedureCall(String SQL, Object[] param, Object voclass);
/// 不带返回执行存储过程语句
void executeProcedureCall(String SQL, Object[] param);
int getInt(string SQL);
int getColumnMaxValue(string TableName, string ColumnName);
DataTable executeSqlProcedureCall(String SQL, object[] param);
/// 执行一条SQL语句,将返回记录集放入POJO并返回POJO列表
ArrayList SelectFromSQL(string SQL, object pojo);
/// 执行一条SQL语句,将返回记录集放入POJO并返回POJO列表,同时分页
ArrayList SelectFromSQL(string SQL, object pojo, Pagination pagination);
/// 注销对象
void Release();
/// 得到当前事务状态
int getTransStates();
/// 得到数据库类型
string getDBType();
/// 得到数据库当前时间
string getDBDateTime();
----------------------------------
所有的实体bean都要与对应的数据库表同名,字段名列名就是加get\set
并且必须要继承以下类
public class BasePojo
{
//设置查询条件
public void setCondtion(Condtion c)
//获取查询条件
public Condtion getCondtion()
//设置排序
public void setOrderBy_DESC(string FiledName)
public void setOrderBy_ASC(string FiledName)
public string getOrderBy()
-----------------------------------
我在写这个之前看了speedframework的结构,也没有太仔细看,糊里糊涂的就写了
这个组件目前我看到的缺点:
1、没有自主的分页功能,要依靠数据库里的一个分页存储过程(我自己也感觉这样比较垃圾,而且我只写了oracle和mssql下的分页存储过程)
2、没有cache
3、没有connection pool,主要是因为MS的驱动里自带了。
4、实体类完全反映了数据库中的表或视图的结构。
------------------------
以下有我调用时的一些示例
public int CancelAssignedSalePlanCollect(SalePlan.v_SalePlan_Collect sale_plan)
{
Engine db = Engine.getInstance();
try
{
//检查计划是否已经审核