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服务器端的服务名(完整数据库名)。

  • 相关阅读:
    newman
    集合自动化
    56. Merge Intervals
    55. Jump Game
    48. Rotate Image
    34. Search for a Range
    33. Search in Rotated Sorted Array
    16. 3Sum Closest
    15. 3Sum
    11. Container With Most Water
  • 原文地址:https://www.cnblogs.com/kissdodog/p/3291760.html
Copyright © 2011-2022 走看看