zoukankan      html  css  js  c++  java
  • 利用反射+自定义特性实现简单ORM(二),“无SQL”的数据库增删改查

    d上一次写了简单的实现,还是基于写SQL的情况下,这次可以实现基本的单表的简单条件的(复杂条件构想中)数据增删改查,通过特性标识来完成实体与数据表的映射。
    有朋友上次提出多表间的关系映射,暂时还是通过(多实体类-视图)的映射实现,虽然写起来可能会麻烦些,不过应该也符合面向对象嘛!

    代码:
    实体插入:
    Code

    使用相应实体类需要三个特性:
    [DataTbName("People")] 表名,类唯一
    [DataField("Name",IsPrimaryKey=true)] 字段,主键可以加上IsPrimaryKey不参与Insert
    [DataInsert()] 参加Insert操作的字段必须添加此特性
    例:
    Code

    使用示例:

    People people = new People();
                people.PName 
    = "杨春来";
                people.PSex 
    = "";
                people.PAge 
    = 21;
                ExecuteEntity.InsertEntity
    <People>(people);
    实体删除操作,主要就是跟据主键了,多条件的正在想一个好的解决方案,例:
    Code

    实体类需要两个特性:
    [DataTbName("People")] 标识表名
    [DataField("Name",IsPrimaryKey=true)] 字段名和一个主键,根据主键删除
    使用示例:
    People people=new People();
                people.SysNo
    =sysNo;
    ExecuteEntity.DeleteEntity
    <People>(people);

    更新一个实体:
    Code

    需要特性:
    [DataTbName("People")] 表名
    [DataField("Name",IsPrimaryKey=true)] 字段名和一个主键
    [DataUpdate()] 参与更新的字段必须实现此特性

    例:
    Code

    使用示例:
    Code


    大至就是这样,还未完。实现更灵活的主法。
    PS:有很多人说反射性能很差很差,这个先保留意见下!
  • 相关阅读:
    Centos系统通过tar.gz包安装MySQL5.7
    性能优化之MySQL优化(慕课)
    高性能可扩展MySQL数据库设计及架构优化 电商项目(慕课)第2章 电商实例数据库结构设计
    高性能可扩展MySQL数据库设计及架构优化 电商项目(慕课)第1章 数据库开发规范的制定
    道路交通实时流量监控预测系统(大讲台)
    Deepgreen DB 是什么(含Deepgreen和Greenplum下载地址)
    Linux常用命令-----------------磁盘挂载命令
    一站式学习Redis 从入门到高可用分布式实践(慕课)第十一章 Redis云平台Cachecloud
    一站式学习Redis 从入门到高可用分布式实践(慕课)第十章 缓存设计与优化
    一站式学习Redis 从入门到高可用分布式实践(慕课)第九章 Redis Cluster利用redis-trib.rb快速搭建集群
  • 原文地址:https://www.cnblogs.com/assion/p/1531694.html
Copyright © 2011-2022 走看看