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--------------------------------------------------------

  public partial class Dtb_Users : Dtb_Base
{
/// <summary>
/// 根据组别查询
/// </summary>
public int? Group_id { get; set; } /// <summary>
/// 根据mobile查询
/// </summary>
public string Mobile { get; set; } private List<string> _inNickName = new List<string>(); /// <summary>
/// 查找集合里匹配的所有数据
/// </summary>
public List<string> InNickName
{
get { return _inNickName; }
set { _inNickName = value; }
}
}

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

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

                     /// <summary>
/// 重写参数列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public override Sql GetWhere(Dtb_Base dto)
{
Dtb_Users dto_users = dto as Dtb_Users;
var sql = new CZDBUtility.PetaPoco.Sql();
if (dto.id.HasValue)
{
sql.Where("id=@0", dto.id);
}
if (!string.IsNullOrEmpty(dto_users.Mobile))
{
sql.Where("mobile=@0", dto_users.Mobile);
}
if (dto_users.Group_id.HasValue)
{
sql.Where("Group_id=@0", dto_users.Group_id);
}
if (dto_users.InNickName.Count > )
{
sql.Where("Nick_name in(@0)", dto_users.InNickName);
}
return sql;
}

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

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

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

  public ActionResult Index()
{
//Common.CreateFile cf = new Common.CreateFile();
//cf.CreateEntityAll(); B_Users b_user = new B_Users();
//============添加一个用户===========================
M_Users m_user = new M_Users();
m_user.User_name = "";
m_user.Mobile = "";
m_user.Nick_name = "aabb";
m_user.Password = "";
var res = b_user.Add(m_user); //返回添加成功后的id //============查询单个用户===========================
m_user = b_user.GetModel(res); //根据id查询单个用户
Dtb_Users dto = new Dtb_Users();
dto.Mobile = "";
m_user = b_user.GetModel(dto); //根据dto查询单个用户,如果出现多条数据,则返回第一条 //============查询多个用户===========================
List<M_Users> list_user = b_user.GetList(dto); //查询用户集合,不分页
dto.page.Page_Size = ; //每页条数
dto.page.Current_Page = ;//页码
dto.page.Order_field = "id desc";//排序方式
dto.page.CentSize = ; //中间码,给分页控件调用,如果中间页数超过这个数,则用...代替
list_user = b_user.GetList(dto); //查询用户集合,分页,排序
//dto.page.Object_Count 当查询结束后,dto会自动获取总条数
//dto.page.Page_Num 当查询结束后,dto会自动获取总页数 //============修改用户信息===========================
m_user.Mobile = "";
bool bl = b_user.Edit(m_user); //============删除用户===========================
bl = b_user.Del(res); //根据id删除用户 ViewData.Add("list_user", list_user);
return View();
}

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

QQ群:567951547

lsjORM ----让开发变得更加快捷(二)的更多相关文章

  1. Android开发艺术探索笔记——View(二)

    Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...

  2. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  3. spring 第一篇(1-1):让java开发变得更简单(下)

    切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...

  4. spring 第一篇(1-1):让java开发变得更简单(下)转

    spring 第一篇(1-1):让java开发变得更简单(下) 这个波主虽然只发了几篇,但是写的很好 上面一篇文章写的很好,其中提及到了Spring的jdbcTemplate,templet方式我之前 ...

  5. Scrum&Kanban在移动开发团队的实践 (二)

    Scrum&Kanban在移动开发团队的实践系列: Scrum&Kanban在移动开发团队的实践 (一) Scrum&Kanban在移动开发团队的实践 (二) 在第一篇分享文章 ...

  6. 基于.net开发chrome核心浏览器【二】

    原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心, ...

  7. PHP微信支付开发之扫描支付(模式二)后如何回调

    其实在写这篇文章的时候感觉自己已经落伍了,不过笔者在百度上搜索"微信支付开发之扫描支付(模式二)后如何回调"寻找答案时,发现依旧有很多朋友没有解决这个问题,所以就把自己的解决思路分 ...

  8. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...

  9. 转载:百为STM32开发板教程之十二——NAND FLASH

    http://bbs.21ic.com/icview-586200-1-1.html 百为STM32开发板教程之十二——NAND FLASH 参考资料:百为stm32开发板光盘V3\百为stm32开发 ...

随机推荐

  1. Read ListViewItem content from another process z

    Normal Windows GUI applications work with messages that are sent to a window or control and the cont ...

  2. xampp 访问出现New XAMPP security concept 或者 新しいXAMPPのセキュリティコンセプト

    出现如下错误: 新しいXAMPPのセキュリティコンセプト: は.要求されたオブジェクトへのアクセスは.ローカルネットワークから入手可能です. この設定は.ファイル"で設定することができますの ...

  3. 2015年9月28日html基础了解学习

    数据库与C#都是在后台运行的逻辑,而html,css,js,jq是在网页前台显示的一些效果.后台要考虑到优化性能效率等等,而前台要吸引到客户,要有更好的客户体验. 通用化,还是效率更高,在做项目中是要 ...

  4. [九度OJ]1431.Sort(寻找前m大数并排序)

    原题链接:http://ac.jobdu.com/problem.php?pid=1431 题目描述: 给你n个整数,请按从大到小的顺序输出其中前m大的数. 输入: 每组测试数据有两行,第一行有两个数 ...

  5. ffmpeg关于aac解码

    ffmpeg从0.11.3版本开始,默认解码aac为AV_SAMPLE_FMT_FLT (float) 0.11.2以前版本解码aac为AV_SAMPLE_FMT_S16 (16位short型)

  6. IE-首页跳转到 q160的问题解决

    IE首页跳转到 q160的问题解决­ 服了又中找了,IE快捷方式被 www.q160.com劫持­ 该死的这个网站什么也没有做,就是做了一个google搜索的连接.­ ­ 进行了一次搜索­ http: ...

  7. SVN eclipse插件错误

    部分文章转载自:http://www.bkjia.com/ASPjc/1015687.html 出现如下问题该怎么做: 1.在Windows--Preferences--Team--SVN--接口换成 ...

  8. jQuer基础

    一.概述 jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more.如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多 ...

  9. java缓存算法【转】

    http://my.oschina.net/u/866190/blog/188712 提到缓存,不得不提就是缓存算法(淘汰算法),常见算法有LRU.LFU和FIFO等算法,每种算法各有各的优势和缺点及 ...

  10. STM32F030 IO口外部中断应用

    //==文件exit.h============================================================ #ifndef __EXIT_H #define __ ...