数据层使用DBHelper.dll来减少工作量

目前在需求确定了以后进行开发的步骤一般是这样的:建立数据表,建立model,构建数据操作层,最后在页面中进行调用。关于数据操作层,因为大量的操作都集中在增加、更新、删除等简易操作,而我之前的写法是每次建立model的时候就写一遍这样的方法,并且为Model中的字段赋值,而这花费了我大量的精力,于是我想找个方法,有没有能够在建立model以后自动识别数据库字段而进行增加、更新、删除等这些常用的基本方法呢?于是我找到了DBHelper.dll。目前这个组件在百度都可以进行下载。

首先先看一下我先前进行的数据库操作方法:

 public int Add(wymodel.WY_WapChannel model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into wy_wapchannel (");
            strSql.Append("title,wapid,state,orderid)");
            strSql.Append(" values(");
            strSql.Append("@title,@wapid,@state,@orderid)");
            strSql.Append(";select scope_identity();");
            SqlParameter[] parameters ={
                        new SqlParameter("@title",SqlDbType.VarChar,200),
                        new SqlParameter("@wapid",SqlDbType.Int),
                        new SqlParameter("@state",SqlDbType.Int),
                        new SqlParameter("@orderid",SqlDbType.Int)
                                      };
            parameters[0].Value = model.Title;
            parameters[1].Value = model.WapId;
            parameters[2].Value = model.State;
            parameters[3].Value = model.OrderId;

            object obj = SQLHelper.GetSingle(strSql.ToString(), parameters);
            if (obj == null)
                return 0;
            else
                return Convert.ToInt32(obj);
        }

  以上是我的插入语句,在这里我需要将model进行数据操作,进行赋值。而一旦我数据库中新增一个字段或者删除一个字段,这些语句和参数都需要进行修改,并且不仅插入语句需要修改,更新等其他语句都可能需要修改,灵活性不高。

现在,我引入了DBHelper.dll组件,并使用其自带方法进行数据库连接:

public static class DBF
    {
        public static readonly DBHelper.DBFactory dbWeiyun;

        static DBF()
        {
            dbWeiyun = new DBHelper.DBFactory(System.Configuration.ConfigurationManager.ConnectionStrings["WyConn"].ConnectionString);
        }
    }

  这里"WyConn"是在我的webconfig配置页面里面进行数据库连接的一个参数,通过此组件自带的DBFactory方法可以便利的进行不同数据库的连接操作。

完成了这一步以后,我就要将建好的model跟数据库进行映射了:

public class TableMappings
    {
        static TableMappings()
        {
            InitWeiyun();
        }
        public static DBHelper.TableMapping WY_BusinessActivity { get; private set; }
        public static DBHelper.TableMapping WY_ShopGoods { get; private set; }
        public static DBHelper.TableMapping WY_GoodsComment { get; private set; }
        private static void InitWeiyun()
        {
            WY_BusinessActivity = new DBHelper.TableMapping(DBF.dbWeiyun, "[WY_BusinessActivity]");
            WY_ShopGoods = new DBHelper.TableMapping(DBF.dbWeiyun, "[WY_ShopGoods]");
            WY_GoodsComment = new DBHelper.TableMapping(DBF.dbWeiyun, "[WY_GoodsComment]");
        }
    }

  这里“[WY_BusinessActivity]”等均是数据库中的数据表。

映射完成以后,我需要进行插入操作只需要将参数传入即可,直接调用组件中的insert方法。

 public bool insertComment(wymodel.WY_GoodsComment model)
        {
           return  wydal.TableMappings.WY_GoodsComment.Insert(model);
        }

  这里需要注意一点的就是,如果在Model里出现了数据库中没有的字段,要在字段前加上[ModelProperty(true)]来避免映射:

public int goodsId { set; get; }
        public int star { set; get; }
        public string Comment { set; get; }
        public string openID { set; get; }
        public DateTime intime { set; get; }
        /// <summary>
        /// 0商品评论,1活动评论,2跳蚤市场,3兼职
        /// </summary>
        public int Ctype { set; get; }
        /// <summary>
        /// 非数据库数据 头像
        /// </summary>
        [ModelProperty(true)]
        public string headimgurl { get; set; }
        /// <summary>
        /// 非数据库数据 昵称
        /// </summary>
        [ModelProperty(true)]
        public string nickname { get; set; }

  总之,这个组件能够帮助我们对数据库的操作进行简化,而不必浪费大量的精力进行重复的操作。

时间: 2024-11-10 14:25:59

数据层使用DBHelper.dll来减少工作量的相关文章

【类库】私房干货.Net数据层方法的封装

[类库]私房干货.Net数据层方法的封装 作者:白宁超 时间:2016年3月5日22:51:47 摘要:继上篇<Oracle手边常用70则脚本知识汇总>文章的发表,引起很多朋友关注.便促使笔者收集整理此文.本文主要针是对微软技术对数据库(下文案例采用的)操作时,调用执行方法的封装,这也是数年逐渐学习.吸收.实践.完成的一个类库.其中不免有不合理之处,亦或是不符合个别读者的使用习惯.在此,共享此文,权当互相学习.(本文原创,转载注明出处:私房干货.Net数据层方法的封装) 1 概述 本文分以下几

EF通用数据层封装类(支持读写分离,一主多从)

浅谈orm 记得四年前在学校第一次接触到 Ling to Sql,那时候瞬间发现不用手写sql语句是多么的方便,后面慢慢的接触了许多orm框架,像 EF,Dapper,Hibernate,ServiceStack.OrmLite 等.当然每种orm都有各自的优势,也有不足的地方.园子里也有很多大神开源了他们写的orm,如SqlSugar,Chloe.ORM,CYQ.Data 等.先不说这些开源的orm使用度怎么样,我觉得起码从开源的精神上就很可嘉了,我也曾下载过这几位大神的源码进行学习. 所有o

业务层和数据层

业务层和数据层父类及接口-T4模板 在上一篇中,我们已经把项目的基本框架搭起来了,这一篇我们就来实现业务层和数据层的父接口及父类. 1.我们先来定义一个业务层父接口IBaseBLL.cs using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Text;using System.Threading.Tasks; namespace IBLL

spring mvc 的jpa JpaRepository数据层 访问方式汇总

spring mvc 的jpa JpaRepository数据层 访问方式汇总 博客分类: spring jpa springjpaJpaRepository 本文转载至:http://perfy315.iteye.com/blog/1460226 AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,下面就对Spring Data相关知识作一个较为详细的描述. 1.Spring Data所解决的问题 Spring Data :提供了一整套数据访问层(DA

主程的晋升攻略(8):数据层的演进(上)

我们用一个做手游的故事来聊聊数据层不断优化提升的演进过程. 10:简单设计 有一天,老板突然说做个山寨版的糖果传奇手游,你接到任务后,分析出游戏的交互频率不大,都是点查询,用mysql能简单搞定.对游戏来说,你非常少有机会用orcale这样的上流货.mysql是物美价廉的选择.建个表,设好主键和索引.你轻松搞定数据库设计,满意的泡了杯茶边喝边写程序. 这里说的"点查询",是指基于指定主键的查询,比如查询指定用户的信息,由于是基于指定主键.查询结果有限且较少.点查询的效率很高. 还有一种

数据层优化-jdbc连接池简述、druid简介

终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化去写,本篇是一个开始.本文会介绍连接池技术并对比目前比较流行的java连接池技术,之后,会把druid整合到项目中来,将技术方案落地,实际整合到项目中,让技术能为我所用. 使用连接池的原因 jdbc的demo //第一步,注册驱动程序 //com.MySQL.jdbc.Driver Class.fo

【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现

〇.前言 上篇 的数据层设计中,我们主要设计了数据对对外开放的 实体基类EntityBase<TKey>,单元操作接口IUnitOfWork 和 数据仓储接口IRepository<TEntity, TKey>,下面我们来解说怎样来使用 EntityFramework 对这些数据访问需求进行实现.EntityFramework 的实现中,我们不仅要实现以上设计的两个接口,还要做以下几件事: 设计一个与 业务实体解耦的 EntityFramework数据上下文类 设计 实体加载方案,

ssh下:系统初始化实现ServletContextListener接口时,获取spring中数据层对象无效的问题

想要实现的功能:SSH环境下,数据层都交由Spring管理:在服务启动时,将数据库中的一些数据加载到ServletContext中缓存起来. 系统初始化类需要实现两个接口: ServletContextListener,系统初始化时调用contextInitialized方法缓存数据: ApplicationContextAware,获取Spring的ApplicationContext对象,以获取spring容器管理的service对象. 系统初始化类如下: 1 package com.liz

手把手封装数据层之DButil数据库连接的封装

最近这段时间一直在用SSM框架做增删改查,突然想把以前还不会用框架的时候,综合百度和各种资料结合API文档抄袭而来的数据层的封装分享给大家.这边先封装一个DButil. 我这个封装就是烂大街的那种,没什么特别. //DButil.java package com.yck.database; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;