IBatis.Net框架封装,快速开发

本文介绍了作者在项目中使用IBatis.Net框架的经验,指出其轻量级和简单配置的优势。在新的项目中,为了提高开发效率,作者决定进行IBatis的封装,以避免重复的增删改查操作。由于未能找到合适的现成解决方案,作者自行实现了IBaseDao接口,封装了包括添加、删除、修改、查询和分页排序在内的通用方法。详细讲述了分页查询排序的实现思路,以及针对不同字段类型的条件设置。
摘要由CSDN通过智能技术生成

之前做了一个项目,项目中使用了IBatis for .net框架,感觉IBatis使用起来还是比较方便,且较之NHibernate配置比较简单,属于轻量级ORM框架。最近又有一个项目需要开动,我琢磨着还是使用IBatis吧,毕竟前面项目使用过,大家都比较熟悉,而且构建起来也比较方便。但是在构建的时候,感觉在做重复劳动,每个实体都有增删改查几个共用的操作,写完这些也需要不少时间,而且无意义,最多只能增加对IBatis使用熟练度,相对于花下去的成本还是不值得的。百度、google想找一些封装好的通用类,类似于NHibernate的IBaseDao,然而并没有找到合适的。那只能自己动手写了,参考了NHibernate的IBaseDao封装,主要封装了以下几个方法(添加一个实体,添加多个实体,删除一个实体,删除多个实体,修改一个实体,获取一个实体,获取所有实体,分页,分页排序查询)。

IBaseDao接口

      /// <summary>
    /// 基础操作
    /// </summary>
    /// <typeparam name="TEntity">实体对象</typeparam>
    /// <typeparam name="TPk">主键类型</typeparam>
    public interface IBaseDao<TEntity, TPk>
    {
        /// <summary>
        /// 添加一个实体,返回主键
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        TPk Add(TEntity entity);


        /// <summary>
        /// 添加多个实体,返回主键列表
        /// </summary>
        /// <param name="entities"></param>
        /// <returns></returns>
        IList<TPk> Add(IEnumerable<TEntity> entities);


        /// <summary>
        /// 通过主键删除实体
        /// </summary>
        /// <param name="id"></param>
        void Delete(TPk id);


        /// <summary>
        /// 通过id集合删除实体
        /// </summary>
        /// <param name="ids"></param>
        void Delete(IEnumerable<TPk> ids);


        /// <summary>
        /// 更新实体,为null则不操作
        /// </summary>
        /// <param name="entity"></param>
        void Update(TEntity entity);


        /// <summary>
        /// 通过主键获取实体
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        TEntity Get(TPk id);


        /// <summary>
        /// 通过主键获取实体
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        IList<TEntity> Get(IEnumerable<TPk> ids);


        /// <summary>
        /// 获取所有实体
        /// </summary>
        /// <returns></returns>
        IList<TEntity> GetAll();


        /// <summary>
        /// 分页
        /// </summary>
        /// <typeparam name="TSearchSortCriteria"></typeparam>
        /// <param name="currentPage"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageData<TEntity> GetPageDate<TSearchSortCriteria>(int currentPage, int pageSize) where TSearchSortCriteria : SearchSortPageEntity, new();


        /// <summary>
        /// 分页查询排序
        /// </summary>
        /// <typeparam name="TSearchSortCriteria"></typeparam>
        /// <param name="currentPage"></param>
        /// <param name="pageSize"></param>
        /// <param name="searchSortCriteria"></param>
        /// <returns></returns>
        PageData<TEntity> GetPageDate<TSearchSortCriteria>(int currentPage, int pageSize, TSearchSortCriteria searchSortCriteria) where TSearchSortCriteria : SearchSortPageEntity, new();
    }

IBaseDao的实现

    public class BaseDao<TEntity, TPk> : IBaseDao<TEntity, TPk>
    {
        public ISqlMapper RealMapper = Mapper.GetMaper;
        private readonly string _className = typeof(TEntity).Name;

        public TPk Add(TEntity entity)
        {
            string command = "Add" + _className;
            var obj = RealMapper.Insert(command, entity);
            return (TPk)obj;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值