vb.net配置IBatis.Net说明(连接SQL Server,亲身实践)

时间:2022-09-01 21:41:57

之前做的一个java+iBatis的程序,现在要往vb.net上移形。偶然间得知针对.Net也有iBatis.Net构架,狂喜~~

找来各种配置资料,看了看都是C#的,虽说应该差不多但是心里还是别扭(就没人在vb.net上用这个??)

算了,按照人家的资料来吧。可能是跟人家的水平差距过大,按照人家的我都没配出来,着急还生了场病。。。

今天病好了,也想明白了,终于让我弄出来了。呵呵~~

以下是根据《iBATIS In Action:iBATIS的安装和配置》为基础,外加自己亲身实验得到的小白配置说明:

系统环境:win XP + VS 2008 + SQL Server 2008

一、系统配置:将从官网下载的Schema文件(SqlMap.xsd,SqlMapConfig.xsd,providers.xsd)添加到VS.NET安装目录

注:

①这些Schema文件可以从官网免费下载(Ibatis.DataMapper.1.6.2.bin):http://code.google.com/p/mybatisnet/downloads/list?can=3

②我用的是VS2008,所以安装路径:C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas

 

二、程序配置:

1.在vs中“新建项目”--“windows窗体应用程序”(其实你建一个“类库”也可以,我这不是为了以后程序方便么)

2.在“解决方案资源管理器”中,引入以下文件:iBatisNet.DataMapper.dll,iBatisNet.DataAccess.dll(可选的),iBatisNet.Common.dll,Castle.DynamicProxy.dll

(根据《iBatis In Action》一书中的解释:如果您使用的Mapper单例(singleton),那么唯一需要引用的是DataMapper程序集。IBatisNet.Common和Castle.DynamicProxy在运行时是需要的,但VS.NET会帮您解析这些依赖关系。如果使用Data Access Objects框架,那么还需要添加对DataAccess的引用。)

注:这些dll文件可以从官网免费下载(Ibatis.DataMapper.1.6.2.bin):http://code.google.com/p/mybatisnet/downloads/list?can=3

3.在程序根目录下创建文件夹Maps,将你的SQL文xml放在其中

4.SQL文xml基本格式如下:其中namespace后面的xmlns内容固定,不要修改。

<?xml version="1.0" encoding="UTF-8" ?>

<sqlMap namespace="sql"
 xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <statements >

    <!-- 测试1-->
    <select id="selectAllAccounts" resultClass="int">
      select count(*) from customer
    </select>

  </statements>

</sqlMap>

注:关于SQL文的xml中各个字段的说明,可以参见:

iBatis.net中SQL文xml的说明(转载)

http://hi.baidu.com/bigheadsheep/blog/item/8b9f6c157cc1e29386d6b64a.html

 

5.将从官网下载的Ibatis.DataMapper.1.6.2.bin中的providers.config,SqlMap.config(官网提供的是“sample.SqlMap.config”,咱们用的时候需要改名)放入到程序的 bin\debug 目录中

注:其实放错位置也没事儿,后面程序运行的时候,会报错,告诉你在程序的bin\debug中找不到SqlMap.config (我就是这么试出来的,没办法,谁让咱们是小白呢)

 

6.修改SqlMap.config信息:

<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <!--以上为固定格式,从这里开始以下是用户配置项    -->

  <!-- 指定一个属性源,相当与设置一些属性变量,在SqlMap.config中用"${xxx}"这种形式引用的变量,xxx在该属性源文件中定义   -->
  <!-- <properties resource="properties.config"/> -->
 
  <settings>
    <!-- 当该选项为true时,你在调用指定的映射时你总是必须给出完整的名称例如:queryForObject(“Namespace.statement.Id”);    -->
    <setting useStatementNamespaces="false"/>
    <!-- 该选项指示是否使用缓存,默认为true -->
    <setting cacheModelsEnabled="true"/>
    <!-- 该选项指示配置要不要启示验证映射文件,默认是false-->
    <setting validateSqlMap="false"/>

  </settings>
 
  <!-- 配置数据驱动提供类配置文件的路径和文件名-->
  <providers resource="providers.config"/>
 
 <!-- Database connection information -->
  <!-- 数据库的信息,包括使用哪些数据库驱动和数据连接字符串的配置 -->
 <database>
  <provider name="sqlServer2.0"/>
    <dataSource name="Pharma"  connectionString="data source=CNB;database=Pharma; user id=sa;password=123;"/>

 </database>

  <!--指定映射的文件的位置,注意此处由于SqlMap.config在bin\debug路径下,所以设定resource时需要以根目录为基准设定    -->
  <sqlMaps>
  <sqlMap resource="Maps/sql.xml" />

 </sqlMaps>

</sqlMapConfig>

注:

1.sqlMapConfig 后面的xmlns内容固定,不要修改。

2."providers.config"名称也不要修改。

3.由于我链接的是SQL Server2008,所以使用provider中的"sqlServer2.0".

在provider.config文件中,将"sqlServer2.0"的"enabled"和"default"设定为"true".这一点一定要确认,否则连接数据库时会出错!!

("enabled"只能有一个是"true" !!!)

4.关联SQL的xml文件位置,要在sqlMap resource中设定清楚。一定要注意SqlMap.config的保存目录是bin\debug,所以xml的路径是针对根路径来说的(即:以上内容中的"Maps/sql.xml")

 

7.在form的Form1_Load处理中,追加测试代码:

Imports System
Imports System.Collections.Generic
Imports IBatisNet.DataMapper
Imports IBatisNet.DataMapper.Configuration

 

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim builder As DomSqlMapBuilder = New DomSqlMapBuilder()

        Dim mapper As ISqlMapper
        mapper = builder.Configure
        Dim list1 As IList = mapper.QueryForList("selectAllAccounts", DBNull.Value)

        MsgBox(list1.Count)


    End Sub
End Class

第一次运行注意:

1.第一次运行程序的时候,由于sql.xml不能自动编译,所以一定要将Maps/sql.xml拷贝到bin\Debug目录下,否则会出错