一、资料部分
iBATIS主页: http://www.mybatis.org/
Anders Cui博客园iBATIS.NET小组:http://space.cnblogs.com/group/ibatis/
入门资料:http://blog.csdn.net/fangxinggood/archive/2010/03/15/5383644.aspx
http://blog.csdn.net/aspgreener/archive/2008/07/18/2670278.aspx
二、iBATIS部署
iBATIS.NET作为.net组件无需安装,从主页下载后,可直接引用其DLL。
其核心DLL为:
IBatisNet.Common.dll
IBatisNet.DataMapper.dll
三、实战
1. 数据准备工作(数据库使用SQL Server2005 express版)
建立数据库Test及将要用到的Person表,表规则如下:
列名 数据类型
PersonID int
PersonName varchar(50)
PersonAddress varchar(250)
CreateDate datetime
测试并保证在VS2008下能顺利连接到数据库。
期间,碰到如下问题——错误消息为:Unable to open connection to "Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0".
a. 无法正确连接到数据库,错误消息为:用户sa登录失败,该用户与可信sql server连接无关联
参照以下博客解决:http://hi.baidu.com/try_and_trying/blog/item/a281bb127ddade2bdd5401ac.html
具体为:开启“SQL SERVER和WINDOWS身份验证模式”;
启动tcp/ip连接;
保证登录用户有相应权限(改为‘db-owner’和‘public’)
b. 无法添加数据表记录,错误消息为:不能将值 NULL 插入列 'PersonID',列不允许有空值。INSERT 失败。
解决方案:http://hi.baidu.com/zlku/blog/item/ff3f81031775ba074afb51d6.html/cmtid/e9f70fd6b8472bd6a044df24
具体为:设置PersonID列标识规范为“是”
2. iBATIS.NET配置
iBATIS.NET配置文件主要有两个(在源文件夹下有样例,可拷贝至解决方案进行适当调整):
SqlMap.config (配置SQL文件的存放位置方式,对应的DB类型,连接字符串)
providers.config(低层数据提供程序的DLL,不用特别关心)
关于详细配置,可参阅:http://www.cnblogs.com/guyuehuanhuan/archive/2010/12/10/1901752.html
3. 编码实现
a. iBATIS.NET部分
修改SqlMap.config下的database结点,使其指向SqlServer数据库。
修改provider.config,将SqlMap.config中指定的连接标识(sqlServer2.0)激活(enabled="true",iBATIS.NET似乎是大小写敏感的,此处换为TRUE无法通过)
为数据库表Person添加对应的SQL查询配置文件(Person.xml)
b. C#部分
通过配置文件初始化实例
ISqlMapper Map = builder.Configure( " SqlMap.config " );
查询所有记录:
追加新记录:
newPerson.PersonName = txtName.Text;
newPerson.PersonAddress = txtAddress.Text;
newPerson.CreateDate = DateTime.Now;
m_Map.Insert( " InsertPerson " , newPerson);