CodeSmith 生成代码解读 V1 (20130311)(二)

2014-11-24 07:30:30 · 作者: · 浏览: 2
strSql.Append(" ");
strSql.Append(" WHERE ID="+this._Id);
return strSql.ToString();
}
//*******************************************************delete
//默认的删除都是逻辑删除,所以数据库在设计的时候需要增加字段"是否删除" "删除时间",示例STUDENT没有这些字段
//还要设计插入时间 插入用户 更新时间 更新用户 这样才正规
public string GetDeleteSql(string strIdList)
{
StringBuilder strSql=new StringBuilder();
strSql.Append(" UPDATE STUDENT SET");
strSql.Append(" IS_DELETED=1");
strSql.Append(" DELETE_TIME=SYSDATE");
strSql.Append(" ");
strSql.Append(" WHERE ID IN("+ strIdList +")");
//通常的删除ID是从列表的多选按钮的到ID,
//strIdList内容是通过web层 ICallBackEventHandler.RaiseCallbackEvent(string eventArg)
//方法的到参数,得到的机制与CODESMITH无关
}
//*******************************************************insert
public string GetInsertSql()
{
StringBuilder strSql=new StringBuilder();
strSql.Append(" INSERT INTO STUDENT(");
strSql.Append(" ID");
strSql.Append(" ,NAME");
strSql.Append(" ) VALUES (");
strSql.Append(" "+this._Id);
strSql.Append(" ,"+BaseTool.SqlQ(this._Name));
strSql.Append(" )");
return strSql.ToString();
}
2.数据访问层
增、删、改、查、分页查询、单条记录查询 六个默认方法
2.1.增--
2.1.1)注意DL层中的方法都是静态static的,方便BL层调用
2.1.2)增、改、查 都会将 EntityData作为参数传递,(实体作为参数传递的优势很大,就不细说了)
public static int InsertData(Student_EntityData obj)
{
string strSql=obj.GetInsertSql();
int intReturn=0;
intReturn= OracleHelper.ExecuteNonQuery(strSql);
return intReturn;
}
2.2 删
2.2.1 注意穿参数格式 ***,***,***
public static int DeleteData(string strIdList)
{
Student_EntityData obj=new Student();
string strSql=obj.GetDeleteSql(string strIdList);
int intReturn=0;
intReturn =OracleHelper.ExecuteNonQuery(strSql);
return intReturn;
}
2.3 改
2.3.1
public static int UpdateData(Student_EntityData obj)
{
string strSql=obj.GetUpdateSql();
int intReturn=0;
intReturn=OracleHelper.ExecuteNonQuery(strSql);
return intReeturn;
}
2.4 查
2.4.1
public static DataTable GetSelectList(Student_EntityData obj)
{
string strSql=obj.GetSelectSql();
return OracleHelper.FillDataTable(strSql);
}
2.4 分页查询
2.4.1 此方法的执行依赖OracleHelper中的RunPagerProcedure方法与数据库中的GETPAGEDATA存储过程的配合,不单独分析
2.4.2 输入参数 EntityData PageIndex PageSize
2.4.3 返回值 RowCount dtList
2.4.4
public static bool GetSelectListWithPageIndex(Student_EntityData obj,
int intPageIndex,
int intPageSize,
ref int intRowCount,
ref DataTable dtList)
{
string strSql=obj.GetSelectSql();
bool bSuccess=OracleHelper.RunPageProcedure(strSql,intPageIndex,intPageSize,ref intRowCount,ref dtList);
return bSuccess;
}
2.4 单条记录
2.4.1 单条记录方法返回值是自定义实体,不是 系统默认类string ,int 等
2.4.2 此方法参数是ID 不是实体 需根据ID 调用 查询方法(得到table) 转化为实体(LoadData方法)
public static Student_EntityData GetSingelData(int intId)
{
Student_EntityData obj =new Student_EntityData();
obj._Id=intId;
DataTable dt=GetSelectList(obj); //调用本层的查询方法
if(dt!=null && dt.Rows.Count>0)
{
obj.LoadData(dt.Rows[0]);
}