iBatisNet入门示例源码详解

本文介绍如何配置IBatisNet的日志记录,包括设置Log4Net进行详细日志记录的方法及配置示例。同时提供了IBatisNet的基础代码配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载ibatis软件包(http://ibatis.apache.org/dotnetdownloads.html)。

2. 创建测试数据库,并在数据库中创建一个Person 表,其中包含三个字段:

NameTypeSize

PER_IDLongInteger4 not null

PER_FIRST_NAMEnvarchar40 not null

PER_LAST_NAMEnvarchar40 not null

PER_BIRTH_DATE DateTime8

PER_WEIGHT_KGfloat8

PER_HEIGHT_Mfloat8

3. 为了在开发过程更加直观,我们需要将ibatisnet日志打开以便观察ibatinets运作的细节。

ibatisnet采用IBatisNet.Common.Logging.Log4Net,就是使用Log4Net纪录日志的包装。在Web.config中增加下面的配置内容:

<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" />

<arg key ="showLogName" value="true" />

<arg key ="showDataTime" value="true" />

<arg key ="level" value="ALL" />

<arg key ="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:SSS" />

</logFactoryAdapter>

</logging>

</iBATIS>

<!-- This section contains the log4net configuration settings -->

<log4net>

<!-- Define some output appenders -->

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

<param name="File" value="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>

构建IBatisNet基础代码

IBatisNet 基础代码包括:

1IBatisNet 实例配置

一个典型的配置文件如下(具体配置项目的含义见后):

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

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

<!-- Rem : If used via a DataAccess context, properties tag will be ignored

<properties resource="../../database.config"/>
-->

<properties embedded="database.config, IBatisNetDemo"/>

<settings>

<setting useStatementNamespaces="${useStatementNamespaces}"/>

<setting cacheModelsEnabled="true"/>

<setting validateSqlMap="false"/>

</settings>

<!-- Optional if resource -->

<providers embedded="providers.config,IBatisNetDemo"/>

<!-- ==== SqlClient configuration ========= -->

<!-- Rem : If used via a DataAccess context, database tag will be ignored -->
<database>
<!-- Optional ( default ) -->

<provider name="sqlServer1.1"/>

<dataSource name="iBatisNet" connectionString="data source=localhost;database=Northwind;user id=sa;password=;connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>
</database>
<sqlMaps>

<!-- user via embedded-->
<sqlMap embedded="Map.SqlClient.Person.xml,IBatisNetDemo"/>

</sqlMaps>

</sqlMapConfig>


2. PO(Plain Ordinary Object)

下面是我们用作示例的一个PO:

[Serializable]

public class Person

...{

private int id;

private string firstName;

private string lastName;

private DateTime? birthDate;

private double? weightInKilograms;

private double? heightInMeters;

public Person() ...{

public int Id

...{

get ...{ return id; }

set ...{ id = value; }

}


public string FirstName

...{

get ...{ return firstName; }

set ...{ firstName = value; }

}

public string LastName

...{
get ...{ return lastName; }
set ...{ lastName = value; }

}



public DateTime? BirthDate

...{

get ...{ return birthDate; }

set ...{ birthDate = value; }

}


public double? WeightInKilograms

...{
get ...{ return weightInKilograms; }

set ...{ weightInKilograms = value; }

}


public double? HeightInMeters

...{

get ...{ return heightInMeters; }

set ...{ heightInMeters = value; }

}
IBatisNet.DataMapper 1.6.1.0之简单三层 首先介绍Solution的架构,一共分四个项目: Web :前台应用; BLL :业务处理层,如果嫌麻烦,可以再进一步抽象出来,然后将代码放置Web层的aspx.cs里面; Model :这个就不多说了,地球人都知道(数据实体类) SqlMaps:资源类,把配置文件和sql mapper文件全部打包起来。 二个文件夹: Include :iBatis.Net架构的dll文件 Log :放置log文件的文件夹,在web.config里配置 1.在一些特定的环境下,一站式的解决方案未必有效 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现。(银行大多有这样的限制) 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。 2.iBATIS之于小型、简单系统:非常适用 iBATIS自己就很小并且简单 iBATIS不会对现存应用的设计或者数据库结构强加任何影响 iBATIS非常适合于有成长趋势的系统 3.iBATIS之于大型、企业级系统:为之而设计 iBATIS的某些特性使得它能够高效地处理大型数据集 iBATIS允许你用多种方式建立从对象到数据库的映射关系 MySpace已应用 4.使用于任何类型的关系数据库: 应用数据库 企业数据库 私有数据库 遗留数据库 简单性 性能 明确分工 可移植性:Java、.Net或者其他 开源 5.何时不该使用iBATIS 当你能永远拥有完全控制权 当你的应用需要完全动态的SQL 当你并没有使用关系数据库时 当iBATIS不起作用时 DB_51aspx下为Sql数据库,附加后修改SqlMaps/database.config的Sql配置文件并编译才能生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值