(新)自己动手写ORM框架(1)-增删查改的使用
之前写过一个系列文章自己动手写ORM框架,经过在多个项目的中的使用,对这套代码进行了许多改进,下面是使用方法:
新增学员信息代码预览:
DBHelper db = DBHelper.getInstance();
Student stu = new Student();
stu.Name = "张三";
stu.Gender = "男";
stu.Age = ;
stu.Address = "上海市徐汇区";
int count = db.Save<Student>(stu);
if (count > )
{
MessageBox.Show("新增成功!");
}
修改学员信息:
stu.UserID = ;
stu.Name = "李四";
stu.Age = ;
db.Update<Student>(stu);
删除学员信息:
Student student = m_stuList[i]; //对象删除
db.Remove<Student>(student); //ID删除
db.Remove<Student>(student.UserID);
查询:
//查询所有学员信息
List<Student> list = DB.FindAll<Student>(); //根据ID查询
Student student = DB.FindById<Student>(); //自定义SQL查询
List<Student> list1 = DB.FindBySql<Student>("SELECT * FROM U_Student WHERE U_Age < 28"); //按某个列查询
List<Student> list2 = DB.FindByProperty<Student>("U_Name", "张三"); //按精确条件查询,这里是SELECT xxx FROM U_Student WHERE U_Name LIKE '%张%' OR U_Age < 28
DbCondition cond1 = new DbCondition().Where().Like("U_Name", "张").OrLessThan("U_Age", );
List<Student> list3 = DB.Find<Student>(cond1); //关联查询,这个不用多说了,会SQL的都知道,查询条件是 WHERE U_Name LIKE '张%'
DbCondition cond2 = new DbCondition("SELECT s.*,c.teacher,c.className FROM U_Student s INNER JOIN U_Class c ON s.classID = c.ID").Where().RightLike("U_Name", "张");
List<Student> list4 = DB.Find<Student>(cond2); //这里是查询 SELECT count(0) FROM U_Student WHERE U_Name = '张三' AND U_Age = 28
DbCondition cond3 = new DbCondition().Where("U_Name", "张三").And("U_Age", );
int count = DB.FindCount<Student>(cond3);
实体类配置:
namespace Entiry
{
[Serializable]
[Table(Name = "U_Student")]
public class Student
{
//主键 INDENTITY自动增长标识
[Id(Name = "UserID", Strategy = GenerationType.INDENTITY)]
public int UserID { get; set; } //对应数据库中的名字为U_Name
[Column(Name = "U_Name")]
public string Name { get; set; } [Column(Name = "U_Age")] // int? 允许int为NULL时不会报错
public int? Age { get; set; } [Column(Name = "U_Gender")]
public string Gender { get; set; } [Column(Name = "U_Address")]
public string Address { get; set; } [Column(Name = "U_CreateTime")]
public DateTime? CreateTime { get; set; } [Column(Name = "ClassID")]
public int? ClassID { get; set; } //下面2列 ClassName和Teacher字段是属于班级表中的班级名称和班主任
//但是因为是外键表,关联的班级编号:ClassID,所以做关联查询可以加这2个属性
//但是修改和插入则不需要这2列,只做查询,所以加上IsInsert=false,IsUpdate=false
[Column(Name = "ClassName",IsInsert=false,IsUpdate=false)]
public string ClassName { get; set; } [Column(Name = "Teacher", IsInsert = false, IsUpdate = false)]
public string Teacher { get; set; }
}
}
最后是配置文件:
<configuration>
<appSettings>
<add key="DbType" value="sqlserver"/>
<add key="connectionString" value="Data Source=.;Initial Catalog=OrmDB;User ID=test;Password=test;Trusted_Connection=no;Min Pool Size=10;Max Pool Size=100;"/>
</appSettings>
只需加连接字符串和数据库类型,因为支持这里可以支持多种数据库。
源码托管在github上,需要的可以去下载。
点击下载:https://github.com/wangwei123/easy4net
(新)自己动手写ORM框架(1)-增删查改的使用的更多相关文章
- 自己动手写ORM框架
提起ORM框架,大家都很熟悉,网上流行的ORM框架有很多,其中出名的有一些,不出名的更是数不胜数. 下面是自己实现的一个简单的ORM框架,实现了常用的增删查改功能,供大家研究ORM实现原理. 功能描述 ...
- backbonejs mvc框架的增删查改实例
一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...
- Yii框架基础增删查改
返回一条数据 Country::find()->one(); 返回所有数据 Country::find()->all(); 返回记录的数量 $country =Country::find( ...
- 自己动手写Spring框架--IOC、MVC
对于一名Java开发人员,我相信没有人不知道 Spring 框架,而且也能够轻松就说出 Spring 的特性-- IOC.MVC.AOP.ORM(batis). 下面我想简单介绍一下我写的轻量级的 S ...
- 自己动手写ORM的感受
之前看到奋斗前辈和时不我待前辈的自己动手写ORM系列博客,感觉讲解的通俗易懂,清晰透彻.作为一个菜鸟,闲来也想着自己写一个ORM,一来加深自己对 ORM的理解,以求对EF,NHibernate等ROM ...
- 重学 Java 设计模式:实战中介者模式「按照Mybaits原理手写ORM框架,给JDBC方式操作数据库增加中介者场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 同龄人的差距是从什么时候拉开的 同样的幼儿园.同样的小学.一样 ...
- SSH框架的多表查询和增删查改 (方法一)中
原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>http://www.cnblogs.com/zhu520/p/7774144.html 这边文章是接的刚刚前一遍的基础上敲的 ...
- 一套手写ajax加一般处理程序的增删查改
倾述下感受:8天16次驳回.这个惨不忍睹. 好了不说了,说多了都是泪. 直接上代码 : 这个里面的字段我是用动软生成的,感觉自己手写哪些字段太浪费时间了,说多了都是泪 ajax.model层的代码: ...
- SSH框架的多表查询和增删查改 (方法一)上
原创作品,允许转载,转载时请务必标明作者信息和声明本文章==> http://www.cnblogs.com/zhu520/p/7772823.html 因为最近在做Android 练习的 ...
随机推荐
- kettle中的karaf设置
Spoon.sh设置-Dpentaho.karaf.root.copy.dest.folder=$PENTAHO_KARAF_ROOT -Dpentaho.karaf.root.transient=f ...
- 转:centos彻底删除文件夹、文件命令
转自:http://www.cnblogs.com/kluan/p/4458296.html centos彻底删除文件夹.文件命令(centos 新建.删除.移动.复制等命令: 1.新建文件夹 mkd ...
- mysql 及练习题
if() 函数的用法 IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false, mysql,'女','男') as sex fr ...
- 如何注册iClap账号?
iClap是一个以产品为基础,集成员工日常所需工具,打通项目工作流程,实现员工自我工作管理.项目管理和企业管理三个体系协同的管理规范系统. 工具/原料 iPhone/Android/浏览器 Teamb ...
- Android4.0 Surface机制分析
1. java层面的Surface 对于Surface我们的认识主要是android的类Surface, android的文档描述Surface是"Handle onto a raw ...
- 在VMware中使用Nat方式设置静态IP
为了在公司和家中不改变ip,所以采用vm的NAT模式来设置静态ip 1.vm采用NAT模式联网 2.编辑vm虚拟机设置 3.查看该网段的网关 可以看出网关为192.168.44.2,然后开始设置静态i ...
- Linux安全基线检查脚本
基线检查内容: 一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在配置要求:1.系统需按照实际用户分配账号; 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享.操作指南 ...
- Java学习第二周学习笔记
20145307<Java程序设计>第二周学习总结 教材学习内容总结 Java语言中的很多基本语法都和C语言类似,以下Java中的基本语法 标识符 标识符是程序中自定义的一些名称. 由26 ...
- SVN添加忽略目录
项目:Thinkphp 目录结构: Thinkphp |-- Common |-- Runtime |-- Home 忽略目标: Runtime 文件夹及下面所有文件 首先,需要忽略的目录必须没有加入 ...
- 学习记录:交叉编译环境配置(buildroot and gdb&gdbserver)【转】
本文转载自:https://blog.csdn.net/zhy025907/article/details/52332528 1,背景 因为参加公司的路由器逆向培训,首先需要的就是环境的配置准备工作, ...