简单的web三层架构系统【第三版】
2024-09-01 12:00:24
今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨。
昨天偶然间看到别人写的三层架构中,竟然没有在方法中传递单个参数,而是直接声明了一个对象整体的当传参。最后上网查,发现原来是在系统里多加了一层,叫做模型层,就是用来在系统的各层之间传递数据的,这样就避免了为一个方法传递多个参数现象。
具体深入的模型层使用还在学习当中,今天就用学到的一点简单的模型层知识,对代码进行再一次优化。
首相先建立一个模型层(Model)在里面创建一个实体类(person):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Model
{
public class person
{
//员工编号
public string id; public string Id
{
get { return id; }
set { id = value; }
} //员工姓名
public string name; public string Name
{
get { return name; }
set { name = value; }
} //员工性别
public string sex; public string Sex
{
get { return sex; }
set { sex = value; }
} //员工工资
public string salary; public string Salary
{
get { return salary; }
set { salary = value; }
} //构造函数,无参
public person()
{ } //构造函数,传入一个参数 id
public person(string id)
{
this.id = id;
} //构造函数,传入三个参数 name, sex, salary
public person(string name, string sex, string salary)
{
this.name = name; this.sex = sex; this.salary = salary;
} //构造函数,传入四个参数 id, name, sex, salary
public person(string id, string name, string sex, string salary)
{
this.id = id; this.name = name; this.sex = sex; this.salary = salary;
}
}
}
然后对之前的代码进行简单的修改,在这里就不发出全部方法的更改了,其它方法类似:
先引入模型层(Model):
using Model;
default.aspx.cs代码:
//更改员工信息
protected void update_Click(object sender, EventArgs e)
{
string id = this.update_id.Text.Trim(); string name = this.update_name.Text.Trim(); string sex = this.update_sex.Text.Trim(); string salary = this.update_salary.Text.Trim(); person p = new person(id, name, sex, salary); if (pd.update(p))
{
this.lbl_3.Text = " * 更改成功!";
}
}
personDAO类:
public bool update(person p)
{
bool flag = false; SqlParameter[] paras = new SqlParameter[]//创建参数数组
{
new SqlParameter("@id", p.id),
new SqlParameter("@name", p.name),
new SqlParameter("@sex", p.sex),
new SqlParameter("@salary", p.salary)
}; //使用参数数组里的值
string sql = "update person set [name] = @id, sex = @name, salary = @sex where id = salary"; if (sq.ExecuteNonQuery(sql, paras) > )
{
flag = true;
} return flag;
}
SQLHelper类(不改变):
/// <summary>
/// 执行带参数的增删改SQL语句
/// </summary>
/// <param name="sql">要执行的SQL语句</param>
/// <param name="paras">传入的参数</param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string sql, SqlParameter[] paras)
{
int res; cmd = new SqlCommand(sql, getcon()); cmd.Parameters.AddRange(paras); res = cmd.ExecuteNonQuery(); return res;
}
*实体类的使用,在小项目里效果不明显,因此有很多人说,实体类可有可无,但是真正到了大型项目里面,实体类的使用使得整个系统变得更加流畅,紧密,逻辑性也更好。
最新文章
- Anliven - 一碗毒鸡汤
- 深入理解javascript原型和闭包(8)——简述【执行上下文】上
- lucene 分词实现
- C语言程序设计第十一次作业
- XUtils 3 使用
- SoapUI接口测试之实战运用操作(五)
- CentOS 7下关于systemd的一些唠叨话二:systemd服务脚本的编写
- C#简易播放器(基于开源VLC)
- 使用DataAnnotations实现数据验证
- Facebook React完全解析
- Hibernate应用SQL查询返回实体类型
- css(四)-- 盒子模型和定位
- oracle创建数据库到2%不动问题
- Java基础学习笔记十八 异常处理
- vue项目使用webpack构建的本地服务环境,在手机上访问调试
- 为什么很多应用都安装在/usr/local目录下?
- SQL 事务隔离级别
- 为laravel队列安装supervisor并配置
- 第三个Sprint冲刺第二天(燃尽图)
- Oracle 11g快速收集全库统计信息