zoukankan      html  css  js  c++  java
  • Ibatis.Net 入门示例(一)

      新项目用的是Ibatis.Net。哥的感觉是NHibernate才是哥的最爱。没办法,即使重复,也要抽时间学习。努力做好这份工作再说吧。

    一、Ibatis.Net-SQLServer2008

      还是以哥一贯的学习方式,先千方百计拼出一个DEMO,看看效果,然后修改各个参数就可以看你出对DEMO的影响。

      第一次配置Itabis.Net看到这样的错误提示,哥崩溃了,这也算提示?跟没提示有区别吗?

      

      不过经过后来的提示,注意上面是Validate,有可能还会出现loading等,也注意最后的文件名,到底是哪个文件出错。

      经过两个小时候,终于配好了第一个程序,先发上这一个简单的DEMO。然后下一篇文章,再来详细了解下,其他的配置属性。

    1、打开SQLServer 2008,建一个数据库Test,一张表Person,添加入数据如下:

      

    2、新建一个控制台程序如下:

      

      其中,DAO是数据访问层,Domain是实体层。然后Dao层引入这两个文件:

    •       IbatisNet.Common.dll
    •       IbatisNet.DataMapper.dll

      先放上简单的代码吧。

      其中PersonDao的代码如下:

    namespace Ibatis.Net.Dao
    {
        public class PersonDao
        {
            public IList<PersonModel> GetList()
            {
                ISqlMapper mapper = Mapper.Instance();
                IList<PersonModel> ListPerson = mapper.QueryForList<PersonModel>("SelectAllPerson", null);  //这个"SelectAllPerson"就是xml映射文件的Id
                return ListPerson;
            }
        }
    }

      PersonModel代码如下:

    namespace Ibatis.Net.Domain
    {
        public class PersonModel
        {
            public int Id
            {
                get;
                set;
            }
    
            public string Name
            {
                get;
                set;
            }
        }
    }

    3、配置(包括xml映射文件,SqlMap,provider)

      首先当然是最重要的SqlMap了:

    <?xml version="1.0" encoding="utf-8"?>
    <sqlMapConfig
      xmlns="http://ibatis.apache.org/dataMapper"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
      <!--<properties resource="../../../properties.config"/>这个东西是变量用的,这里以最简单的实现说明,因此注释-->
    
      <settings>
        <setting useStatementNamespaces="false"/>
      </settings>
    
      <providers resource="providers.config"/>
    
      <!--数据库连接字符串-->
      <database>
        <provider name="sqlServer2008"/>
        <dataSource name="Test" connectionString="server=KISSDODOG-PC;uid=sa;pwd=123;database=Test"/>
      </database>
    
      <sqlMaps>
        <sqlMap resource="Person.xml" />
        <!--这个是指定映射文件的位置-->
      </sqlMaps>
    
    </sqlMapConfig>

      然后是映射文件Person.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <sqlMap namespace="Ibatis" xmlns="http://ibatis.apache.org/mapping" xmlns:xls="http://www.w3.org/2001/XMLSchema-instance">
      <statements>
        <select id="SelectAllPerson" resultClass="Ibatis.Net.Domain.PersonModel">  <!--这个Id在程序中会用到,resultClass是类所在的程序位置(带命名空间)-->
          select * from person
        </select>
      </statements>
    </sqlMap>

      最后是Provider.config。这个直接复制下载进来的安装包就可以了。把不是你指定的全部删除,然后将enabled="true",.Net版本改成你正在用的,此处发上SQLServer2008的。

    <?xml version="1.0" encoding="utf-8"?>
    <providers
    xmlns="http://ibatis.apache.org/providers"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <clear/>
        <provider
          name="sqlServer2008"
          enabled="true"
          default="true"
          description="Microsoft SQL Server, provider V4.0.0.0 in framework .NET V4.0"
          assemblyName="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          connectionClass="System.Data.SqlClient.SqlConnection"
          commandClass="System.Data.SqlClient.SqlCommand"
          parameterClass="System.Data.SqlClient.SqlParameter"
          parameterDbTypeClass="System.Data.SqlDbType"
          parameterDbTypeProperty="SqlDbType"
          dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
          commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
          usePositionalParameters = "false"
          useParameterPrefixInSql = "true"
          useParameterPrefixInParameter = "true"
          parameterPrefix="@"
          allowMARS="true"
        />
    </providers>

      注意,以上3个配置文件,在控制台程序中,放到debug/bin目录里。

      Program.cs代码如下:

        class Program
        {
            static void Main(string[] args)
            {
                PersonDao dao = new PersonDao();
                IList<PersonModel> ListPerson = dao.GetList();
                foreach (PersonModel p in ListPerson)
                {
                    Console.WriteLine(p.Id + p.Name);
                }
    
                Console.ReadKey();
            }
        }

      运行程序,显示结果如下:

      

      就上面这些点东西,哥配了两个多小时。下一篇再学习其他的要点。

    二、Ibatis.Net - Oracle 10g

    对于上面的程序,将数据库由SQLServer改为Oracle10g,上面不用改代码,只需要将providers.config文件改为:

    <?xml version="1.0" encoding="utf-8"?>
    <providers
    xmlns="http://ibatis.apache.org/providers"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <provider
        name="oracle10.1"
        description="Oracle, oracle provider V10.1.0.301"
        enabled="true"
        assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
        commandClass="Oracle.DataAccess.Client.OracleCommand"
        parameterClass="Oracle.DataAccess.Client.OracleParameter"
        parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
        parameterDbTypeProperty="OracleDbType"
        dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
        commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
        usePositionalParameters="true"
        useParameterPrefixInSql="true"
        useParameterPrefixInParameter="true"
        parameterPrefix=":"
        useDeriveParameters="false"
        allowMARS="false"
      />
    </providers>

      SqlMap.cofig改为里的database节点改为:

      <!--数据库连接字符串-->
      <database>
        <provider name="oracle10.1"/>
        <dataSource name="Test" connectionString="Data Source=comit-jun/ajun.db;Persist Security Info=true;User ID=scott;Password=tiger;Connection Timeout=15;Pooling=true;Connection Lifetime=30;Max Pool Size=500;Min Pool Size=0"/>
      </database>

      如果连接不上,大部分情况下,都是Oracle的设置问题了。

      其中Data Source=comit-jun/ajun.db;

       comit-jun是计算机名,当然也可以是IP地址,而后面的ajun.db是Oracle服务器端的服务名(完整数据库名)。

  • 相关阅读:
    Codeforces Round #344 (Div. 2) C. Report 其他
    Codeforces Round #344 (Div. 2) B. Print Check 水题
    Codeforces Round #344 (Div. 2) A. Interview 水题
    8VC Venture Cup 2016
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
    CDOJ 1279 班委选举 每周一题 div2 暴力
    每周算法讲堂 快速幂
    8VC Venture Cup 2016
    Educational Codeforces Round 9 F. Magic Matrix 最小生成树
  • 原文地址:https://www.cnblogs.com/kissdodog/p/3291760.html
Copyright © 2011-2022 走看看