zoukankan      html  css  js  c++  java
  • 简单的web三层架构系统【第三版】

    今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨。

    昨天偶然间看到别人写的三层架构中,竟然没有在方法中传递单个参数,而是直接声明了一个对象整体的当传参。最后上网查,发现原来是在系统里多加了一层,叫做模型层,就是用来在系统的各层之间传递数据的,这样就避免了为一个方法传递多个参数现象。

    具体深入的模型层使用还在学习当中,今天就用学到的一点简单的模型层知识,对代码进行再一次优化。

    首相先建立一个模型层(Model)在里面创建一个实体类(person):

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace Model
     8 {
     9     public class person
    10     {
    11         //员工编号
    12         public string id;
    13 
    14         public string Id
    15         {
    16             get { return id; }
    17             set { id = value; }
    18         }
    19 
    20         //员工姓名
    21         public string name;
    22 
    23         public string Name
    24         {
    25             get { return name; }
    26             set { name = value; }
    27         }
    28 
    29         //员工性别
    30         public string sex;
    31 
    32         public string Sex
    33         {
    34             get { return sex; }
    35             set { sex = value; }
    36         }
    37 
    38         //员工工资
    39         public string salary;
    40 
    41         public string Salary
    42         {
    43             get { return salary; }
    44             set { salary = value; }
    45         }
    46 
    47         //构造函数,无参
    48         public person()
    49         {
    50  
    51         }
    52 
    53         //构造函数,传入一个参数 id
    54         public person(string id)
    55         {
    56             this.id = id;
    57         }
    58 
    59         //构造函数,传入三个参数 name, sex, salary
    60         public person(string name, string sex, string salary)
    61         {
    62             this.name = name;
    63 
    64             this.sex = sex;
    65 
    66             this.salary = salary;
    67         }
    68 
    69         //构造函数,传入四个参数 id, name, sex, salary
    70         public person(string id, string name, string sex, string salary)
    71         {
    72             this.id = id;
    73 
    74             this.name = name;
    75 
    76             this.sex = sex;
    77 
    78             this.salary = salary;
    79         }
    80     }
    81 }

    然后对之前的代码进行简单的修改,在这里就不发出全部方法的更改了,其它方法类似:

    先引入模型层(Model):

    using Model;

    default.aspx.cs代码:

     1     //更改员工信息
     2     protected void update_Click(object sender, EventArgs e)
     3     {
     4         string id = this.update_id.Text.Trim();
     5 
     6         string name = this.update_name.Text.Trim();
     7 
     8         string sex = this.update_sex.Text.Trim();
     9 
    10         string salary = this.update_salary.Text.Trim();
    11 
    12         person p = new person(id, name, sex, salary);
    13 
    14         if (pd.update(p))
    15         {
    16             this.lbl_3.Text = " * 更改成功!";
    17         }
    18     }

    personDAO类:

     1         public bool update(person p)
     2         {
     3             bool flag = false;
     4 
     5             SqlParameter[] paras = new SqlParameter[]//创建参数数组
     6             {
     7                 new SqlParameter("@id", p.id),
     8                 new SqlParameter("@name", p.name),
     9                 new SqlParameter("@sex", p.sex),
    10                 new SqlParameter("@salary", p.salary)
    11             };
    12 
    13             //使用参数数组里的值
    14             string sql = "update person set [name] = @id, sex = @name, salary = @sex where id = salary";
    15 
    16             if (sq.ExecuteNonQuery(sql, paras) > 0)
    17             {
    18                 flag = true;
    19             }
    20 
    21             return flag;
    22         }

    SQLHelper类(不改变):

     1         /// <summary>
     2         /// 执行带参数的增删改SQL语句
     3         /// </summary>
     4         /// <param name="sql">要执行的SQL语句</param>
     5         /// <param name="paras">传入的参数</param>
     6         /// <returns>返回受影响的行数</returns>
     7         public int ExecuteNonQuery(string sql, SqlParameter[] paras)
     8         {
     9             int res;
    10 
    11             cmd = new SqlCommand(sql, getcon());
    12 
    13             cmd.Parameters.AddRange(paras);
    16 
    17             res = cmd.ExecuteNonQuery();
    18 
    19             return res;
    20         }

    *实体类的使用,在小项目里效果不明显,因此有很多人说,实体类可有可无,但是真正到了大型项目里面,实体类的使用使得整个系统变得更加流畅,紧密,逻辑性也更好。

  • 相关阅读:
    避免Eclipse经常出现Out Of Memory
    java 判断类和实例的关系(instanceof,isInstance,isAssignableFrom)
    Tuscany SCA Core实现的SPI机制
    ubuntu下压缩和解压缩的命令用法
    eclipse 中引用其他项目及项目打包
    Tuscany 源码学习(1)
    Eclipse快捷键大全(转载)
    zz linux下用 SCP 命令进行网络传输
    HZNUACM寒假集训Day5小结 线段树 树状数组
    HZNUACM寒假集训Day1小结 STL 并查集
  • 原文地址:https://www.cnblogs.com/KTblog/p/4190968.html
Copyright © 2011-2022 走看看