简单的iBatisNet示例

简单的iBatisNet示例。自己写的一个示例,也是自己刚刚接触ibatis的第一个示例

自己在刚刚接触时,也费了好多劲才弄明白,希望初学者可以少走点弯路,身边没有高手是件很痛苦的事情

顺便说下,网上好多的示例都很老了,我刚接触时有好多地方的方法都已经过期了,需要做下修改。我用的NET2005

以下是源码

 

using IBatisNet.Common.Utilities;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;

namespace OneTest
{
 /********************************
  * 作者:jackfor001
  * 时间:2006-7-1
  * 功能描述:
  *         Mapper类
  *********************************
  */
 public class Mapper
 { 
  private static volatile ISqlMapper _mapper = null;

  protected static void Configure (object obj)
  {
   _mapper = null;
  }
  protected static void InitMapper()
  {  
   ConfigureHandler handler = new ConfigureHandler (Configure);
            DomSqlMapBuilder builder = new DomSqlMapBuilder();
            _mapper = builder.ConfigureAndWatch(handler);
   
  }

  public static ISqlMapper Instance()
  {
   if (_mapper == null)
   {
    lock (typeof (SqlMapper))
    {
     if (_mapper == null) // double-check
      InitMapper();
    }
   }
   return _mapper;
  }

  public static ISqlMapper Get()
  {
   return Instance();
  }
 }

//以下是app.config(如果是web程序需要写在web.config里面)

<?xml version="1.0" encoding="gb2312" ?>
<configuration>
  <!--拷贝以下代码-->
  <configSections>
    <sectionGroup name="iBATIS">
      <section name="logging" type="IBatisNet.Common.Logging.ConfigurationSectionHandler, IBatisNet.Common" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <iBATIS>
    <logging>
      <logFactoryAdapter type="IBatisNet.Common.Logging.Impl.Log4NetLoggerFA, IBatisNet.Common.Logging.Log4Net">
        <arg key="configType" value="inline" />
      </logFactoryAdapter>
    </logging>
  </iBATIS>
  <log4net>
    <!-- Define some output appenders -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="c:/log.txt" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="2" />
      <param name="MaximumFileSize" value="100KB" />
      <param name="RollingStyle" value="Size" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header]/r/n" />
        <param name="Footer" value="[Footer]/r/n" />
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" />
      </layout>
    </appender>

    <!-- Set root logger level to ERROR and its appenders -->
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="ConsoleAppender" />
    </root>

    <!-- Print only messages of level DEBUG or above in the packages -->
    <logger name="IBatisNet.DataMapper.Configuration.Cache.CacheModel">
      <level value="DEBUG" />
    </logger>
    <logger name="IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory">
      <level value="DEBUG" />
    </logger>
    <logger name="IBatisNet.DataMapper.LazyLoadList">
      <level value="DEBUG" />
    </logger>
    <logger name="IBatisNet.DataAccess.DaoSession">
      <level value="DEBUG" />
    </logger>
    <logger name="IBatisNet.DataMapper.SqlMapSession">
      <level value="DEBUG" />
    </logger>
    <logger name="IBatisNet.Common.Transaction.TransactionScope">
      <level value="DEBUG" />
    </logger>
    <logger name="IBatisNet.DataAccess.Configuration.DaoProxy">
      <level value="DEBUG" />
    </logger>
  </log4net>
</configuration>

 

using System;

namespace OneTest.Model
{
  /********************************
  * 作者:jackfor001
  * 时间:2006-7-1
  * 功能描述:
  *         Student实体类
  *********************************
  */
 public class Student
 {
  
  private int _Id;
  public int Id
  {
   get { return _Id; }
   set { _Id = value; }
  }

  private string _FirstName;
  public string FirstName
  {
   get { return _FirstName; }
   set { _FirstName = value; }
  }

  private string _LastName;
  public string LastName
  {
   get { return _LastName; }
   set { _LastName = value; }
  }

  private DateTime _BirthDate;
  public DateTime BirthDate
  {
   get { return _BirthDate; }
   set { _BirthDate = value; }
  }

  private decimal _WeightInKilograms;
  public decimal WeightInKilograms
  {
   get { return _WeightInKilograms; }
   set { _WeightInKilograms = value; }
  }

  private decimal _HeightInMeters;
  public decimal HeightInMeters
  {
   get { return _HeightInMeters; }
   set { _HeightInMeters = value; }
  }

 }
}

 

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

<sqlMap
 namespace="Student"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://ibatis.apache.org/dataMapper">
  <!-- XML "behind" document for the People service class. -->

  <resultMaps>
    <resultMap id="SelectResult" class="OneTest.Model.Student">
      <result property="Id" column="S_ID" />
      <result property="FirstName" column="S_FIRST_NAME" />
      <result property="LastName" column="S_LAST_NAME" />
      <result property="BirthDate" column="S_BIRTH_DATE" />
      <result property="WeightInKilograms" column="S_WEIGHT_KG" />
      <result property="HeightInMeters" column="S_HEIGHT_M" />
    </resultMap>
  </resultMaps>

  <statements>

    <select id="Select" parameterClass="int" resultMap="SelectResult">
      select
      S_ID,
      S_FIRST_NAME,
      S_LAST_NAME,
      S_BIRTH_DATE,
      S_WEIGHT_KG,
      S_HEIGHT_M
      from Student
      <dynamic prepend="WHERE">
        <isParameterPresent>
          S_ID = #value#
        </isParameterPresent>
      </dynamic>
    </select>

    <insert id="Insert" parameterClass="Student" resultClass="int">
      insert into Student
      (S_ID, S_FIRST_NAME, S_LAST_NAME,
      S_BIRTH_DATE, S_WEIGHT_KG, S_HEIGHT_M)
      values
      (#Id#, #FirstName#, #LastName#,
      #BirthDate#, #WeightInKilograms#, #HeightInMeters#)
    </insert>

    <update id="Update" parameterClass="Student" resultClass="int">
      update Student set
      S_FIRST_NAME = #FirstName#,
      S_LAST_NAME = #LastName#,
      S_BIRTH_DATE = #BirthDate#,
      S_WEIGHT_KG = #WeightInKilograms#,
      S_HEIGHT_M = #HeightInMeters#
      where S_ID = #Id#
    </update>

    <delete id="Delete" parameterClass="int" resultClass="int">
      delete from Student
      where S_ID = #Id#
    </delete>

  </statements>

</sqlMap>

 

<?xml version="1.0" encoding="gb2312" ?>
<!--需要修改的地方

 更改sqlMapConfig
 xmlns="http://ibatis.apache.org/dataMapper"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-->
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 <properties resource="properties.config"/>
 
 <settings>
  <setting useStatementNamespaces="false"/>
  <setting cacheModelsEnabled="true"/>
 </settings>

 <!--增加providers节点-->
 <providers resource="providers.config"/>


 <database>
  <provider name="${provider}"/>
  <dataSource name="iBatisTutorial"  connectionString="${connectionString}"/>
 </database>
 <sqlMaps>
  <!--Example:文件夹/文件名-->
  <sqlMap resource="Maps/Student.xml"/>
 </sqlMaps>
</sqlMapConfig>

 

<?xml version="1.0" encoding="utf-8" ?>
<settings>
 <!--   User application and configured property settings go here.-->
 <!--   Example: <add key="settingName" value="settingValue"/> -->
 <add key="provider" value="sqlServer1.1"/>
 <add key="connectionString" value="packet size=4096;user id=zhangrenzhi;password = 12345670;data source=192.168.5.114;persist security info=False;initial catalog=test"/>
 <add key="root" value="./"/>
</settings>

还有个配置文件providers.config可以直接从ibatis包里面拷出来,我用的包比较老了,所以需要更改个地方

增加
 xmlns="http://ibatis.apache.org/providers"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

其他的地方不变OK好了


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值