(新)自己动手写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 练习的 ...
随机推荐
- jQuery实现复选框 全选、反选、全不选
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- JavaScript-dom3 json_str dom元素控制 模拟百度搜索
访问关系-封装代码 html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 2017浙江省赛 A - Cooking Competition ZOJ - 3958
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3958 题目: "Miss Kobayashi's Drag ...
- Eclipse安装Activiti插件(流程设计器)
Eclipse安装Activiti插件(流程设计器) 一.安装步骤: 1,打开Eclipse的 Help -> Install New Software,填上插件地址: Name:Activit ...
- vsftpd基于mysql的认证方式
安装epel源: cd /etc/yum.repos.d wget http://mirrors.neusoft.edu.cn/epel/epel-release-latest-6.noarch.rp ...
- markdown工作随笔总结
1. 锚点 (使用方法和链接很像) ## 目录 1. [命名](#命名) ....... **[返回顶部](#目录)** ## 命名 ###命名原则 可以从返回顶部回到目录,也可以点击目录的命名跳到命 ...
- bzoj 3657 斐波那契数列(fib.cpp/pas/c/in/out)
空间 512M 时限2s [题目描述] 有n个大于1的正整数a1,a2,…,an,我们知道斐波那契数列的递推式是f(i)=f(i-1)+f(i-2),现在我们修改这个递推式变为f(i)=f(i-1) ...
- 如何使用curl进行网页授权
答:使用curl的-u选项,使用方法如下 curl -u username URL (会提示输入密码)
- Mybatis 一对多 简单映射配置
只需在一对多的 “一” Model中定义一个list集合: public class SelectQuestion{ // 主键ID private Integer id; private Strin ...
- RDB
在运行情况下, Redis 以数据结构的形式将数据维持在内存中, 为了让这些数据在 Redis 重启之后仍然可用, Redis 分别提供了 RDB 和 AOF 两种持久化模式. 在 Redis 运行时 ...