博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IBatis.net初步使用
阅读量:5310 次
发布时间:2019-06-14

本文共 4570 字,大约阅读时间需要 15 分钟。

最近加班比较忙,时间也比较琐碎,蛮久没有写东西了。这次就总结一下自己使用IBatis.net的一些总结吧。

IBatis简介

IBatis.net是一款开源的Orm框架,应该算是从java的IBatis项目演化而来的基于C#的Orm框架。

官方网站:

项目下载地址:

IBatis使用

1)、配置文件:providers.config---数据库提供者的配置文件,主要用于配置使用的数据库类型;SqlMap.config:配置入口文件,用于配置指向的数据提供者文件和各类sql映射文件。配置文件名称可自行设定(SqlMap.Config为默认的配置文件名).

2)、配置文件的初始化:

public class MyMapper    {        public static string DbMapperFile = @"ConfigFile\SqlMap.config"; ///配置文件名        private static object mLock = new object();        private static volatile ISqlMapper _mapper = null;        ///             ///             ///             ///             public static void Configure(object obj)        {            _mapper = null;        }        public static ISqlMapper SqlMapper        {            get            {                if (_mapper == null)                {                    lock (mLock)                    {                        if (_mapper == null)                        {                            ConfigureHandler handler = new ConfigureHandler(Configure);                            DomSqlMapBuilder builder = new DomSqlMapBuilder();                            _mapper = builder.ConfigureAndWatch(DbMapperFile, handler);    //监视配置文件,不监视:builder.Configure();                        }                    }                }                return _mapper;            }        }    }

 初始化一个Dal'操作基类:

///     /// Dal抽象基类    ///     /// 
public abstract class BaseDal
where T : class { protected ISqlMapper sqlMapper = null; public BaseDal() { sqlMapper = HisMapper.SqlMapper; } public BaseDal(string configFile) { MyMapper.DbMapperFile = configFile; sqlMapper = MyMapper.SqlMapper; } ///
/// 新增,底层默认返回Object /// ///
///
///
public object Add(string statement, object parameters) { return sqlMapper.Insert(statement, parameters); } ///
/// 删除 /// ///
///
///
public int Delete(string statement, object parameters) { return sqlMapper.Delete(statement, parameters); } ///
/// 更新 /// ///
///
///
public int Update(string statement, object parameters) { return sqlMapper.Update(statement, parameters); } ///
/// 查询返回集合 /// ///
///
///
public IList
QueryForList(string statement, object parameters) { return sqlMapper.QueryForList
(statement, parameters); } ///
/// 查询返回对象 /// ///
///
///
public object QueryForObj(string statement, object parameters) { return sqlMapper.QueryForObject(statement, parameters); } }

  3)、实体Orm操作实现:

一、创建实体类,包含实体对应字段的定义(略)

二、创建对应的Xml映射文件,例子如下

  分解:

a、<resultMaps>可包含多个resultmap---字段配置映射关系,将查出的字段映射到对应的类的对应字段

b、<statements>可包含多个statement---配置Sql语句,大致为select、insert 、update、delete,其他的没有太过深究。

c、“#FirstName#”其中FirstName为传递的参数,IBatis会自动解析其类型,“'$FirstNamePrefix$%'” 为模糊查询时参数的编写方式,也可以通过参数拼接的方式实现。参数在传递时大小写敏感,这点要注意

d、注意<dymanic>的动态sql实现,主要是写法。

e、每个statement的Id必须为一,不可存在重复,即使是在同一项目的其他的xml配置中也不可存在和当前statement的Id一致的statement,否则会报错。因为在ibatis进行配置读取时,会将各个statement加载,要求statement的id必须为一

f、statement中配置resultMap和resultClass的区别,如果不配置resultMap和resultClass会默认返回object类型,resultMap一般是用于配置到对应的映射配置;resultClass一般用于指向指定的类型,例如string/object等。

g、 <![CDATA[]]>类似于@“”,将语句标识为不转义。

 

总结

 

用Ibatis有一段时间了,基于sql编写的实现感觉上还是不错的。

附上部分帮助文件,例子代码就不上传了,因为是在实现的部分很简单也没有明确的测过。

 

转载于:https://www.cnblogs.com/Joy-et/p/4658350.html

你可能感兴趣的文章
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
判断9X9数组是否是数独的java代码
查看>>
00-自测1. 打印沙漏
查看>>
UNITY在VS中调试
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>
如何改善下面的代码 领导说了很耗资源
查看>>
Quartus II 中常见Warning 原因及解决方法
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>
pip和easy_install使用方式
查看>>
博弈论
查看>>
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>