zoukankan      html  css  js  c++  java
  • lsjORM ----让开发变得更加快捷(二)

    lsjORM结构

    跟传统三层没有多大区别,这里添加DTO(参数列表)跟PetaPoce(数据库操作),普通的三层我们都喜欢用DBHelper或者SqlHelper来封装sql的辅助方法,PetaPoce更加强大,网上已经有不少资料了,很容易就能学会它

    lsjORM参数列表类(Dtb_Base)

    sql语句很重要的一部分就是where后面的条件,这里的参数列表主要是为了补充sql语句的where部分,而且只用写一次,在所有的地方都可以直接调用,打个比方,我需要查询age > 16 and sex = 1

    的所有学生,这个sql就用到两个参数,比如我要删除age > 16 and sex = 1的所有学生,又需要重复的写where,这是一件麻烦的事,我们可以通过dto很好的解决它.

    DTO的主要作用就是用来给Sql语句追加where后面的参数,常用于表里某个字段 > n, <n, =n, like n, in n

    你可以很方便的定义它,就跟定义model里面的属性一样,并且写上注释,让调用它的人能直接明白意思

    -----------------------------------------------------------------定义DTO--------------------------------------------------------

     1  public partial class Dtb_Users : Dtb_Base
     2     {
     3         /// <summary>
     4         /// 根据组别查询
     5         /// </summary>
     6         public int? Group_id { get; set; }
     7 
     8         /// <summary>
     9         /// 根据mobile查询
    10         /// </summary>
    11         public string Mobile { get; set; }
    12 
    13         private List<string> _inNickName = new List<string>();
    14 
    15         /// <summary>
    16         /// 查找集合里匹配的所有数据
    17         /// </summary>
    18         public List<string> InNickName 
    19         {
    20             get { return _inNickName; }
    21             set { _inNickName = value; }
    22         }
    23     }

    这里我在Dtb_User类里定义了3个参数,分部是Group_id,Mobile,InNickName ,我可以根据这三个参数任意的组合查询条件,比如查询用户表里某个集合用户里面属于某个组的所有用户....你可以根据需求随意的定义它们.

    -----------------------------------------------------------------实现DTO--------------------------------------------------------

     1                     /// <summary>
     2                     /// 重写参数列表
     3                     /// </summary>
     4                     /// <param name="dto"></param>
     5                     /// <returns></returns>
     6                     public override Sql GetWhere(Dtb_Base dto)
     7                     {
     8                         Dtb_Users dto_users = dto as Dtb_Users;
     9                         var sql = new CZDBUtility.PetaPoco.Sql();
    10                         if (dto.id.HasValue)
    11                         {
    12                             sql.Where("id=@0", dto.id);
    13                         }
    14                         if (!string.IsNullOrEmpty(dto_users.Mobile)) 
    15                         {
    16                             sql.Where("mobile=@0", dto_users.Mobile);
    17                         }
    18                         if (dto_users.Group_id.HasValue) 
    19                         {
    20                             sql.Where("Group_id=@0", dto_users.Group_id);
    21                         }
    22                         if (dto_users.InNickName.Count > 0) 
    23                         {
    24                             sql.Where("Nick_name in(@0)", dto_users.InNickName);
    25                         }
    26                         return sql;
    27                     }

    当定义了参数列表后,必须要在对应的B层去实现它,否则无效,可以看到这是一个简单的拼接where条件的方法.

    PS:DTO一个参数列表,用来传递参数的载体

    -----------------------------------------------------------------实现增删改查操作--------------------------------------------------------

     1  public ActionResult Index()
     2         {
     3             //Common.CreateFile cf = new Common.CreateFile();
     4             //cf.CreateEntityAll();
     5 
     6             B_Users b_user = new B_Users();
     7             //============添加一个用户===========================
     8             M_Users m_user = new M_Users();
     9             m_user.User_name = "999999";
    10             m_user.Mobile = "150150150";
    11             m_user.Nick_name = "aabb";
    12             m_user.Password = "123456";
    13             var res = b_user.Add(m_user); //返回添加成功后的id
    14 
    15             //============查询单个用户===========================
    16             m_user = b_user.GetModel(res); //根据id查询单个用户
    17             Dtb_Users dto = new Dtb_Users();
    18             dto.Mobile = "150150150";
    19             m_user = b_user.GetModel(dto); //根据dto查询单个用户,如果出现多条数据,则返回第一条
    20 
    21             //============查询多个用户===========================
    22             List<M_Users> list_user = b_user.GetList(dto); //查询用户集合,不分页
    23             dto.page.Page_Size = 10; //每页条数
    24             dto.page.Current_Page = 1;//页码
    25             dto.page.Order_field = "id desc";//排序方式
    26             dto.page.CentSize = 5; //中间码,给分页控件调用,如果中间页数超过这个数,则用...代替
    27             list_user = b_user.GetList(dto); //查询用户集合,分页,排序
    28             //dto.page.Object_Count  当查询结束后,dto会自动获取总条数
    29             //dto.page.Page_Num      当查询结束后,dto会自动获取总页数
    30 
    31             //============修改用户信息===========================
    32             m_user.Mobile = "123123123";
    33             bool bl = b_user.Edit(m_user);
    34 
    35             //============删除用户===========================
    36             bl = b_user.Del(res); //根据id删除用户
    37 
    38 
    39             ViewData.Add("list_user", list_user);
    40             return View();
    41         }

    非常简单就可以完成这些基本操作,下一章讲解怎么联合查询,实现事务.

    QQ群:567951547

  • 相关阅读:
    Antlr与Regex
    c_str()
    C++ 友元
    C++ 操作符重载
    Remote 'attachhome' failed on nodes:XXX
    RAC安装GI时运行root.sh脚本结果
    clscfg.bin: error while loading shared libraries: libcap.so.1:
    RAC安装重新运行root.sh
    libXext.so.6 libXp.so.6 libXt.so.6 is needed by openmotif21-2.1.30-11.el7.i686
    向数据库中导入AWR数据
  • 原文地址:https://www.cnblogs.com/tibos/p/5750516.html
Copyright © 2011-2022 走看看