当前位置: 首页 > news >正文

iBatisNet入门示例源码详解

下载 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; }

}

相关文章:

  • 有趣的google
  • 华章和UCDChina联合举办《赢在用户》书友会!
  • Spring IOC 官网文档阅读笔记(三)
  • 分形专用语言开发完毕
  • Simple SpringMVC Demo
  • 什么时候需要重建索引
  • Spring IOC 官网文档阅读笔记(四)
  • Next
  • mapstruct 简单实践笔记
  • Spring Data JPA 中 @Query 默认不能使用 limit函数
  • 基于Spring 2.0的Web应用设计
  • Spring MVC 官网文档阅读笔记(一)
  • oracle 连接 sqlserver
  • 关于jdk和java规范
  • 工作流入门(基础概念篇)
  • 【Leetcode】101. 对称二叉树
  • 【译】JS基础算法脚本:字符串结尾
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【翻译】babel对TC39装饰器草案的实现
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • JavaScript 基本功--面试宝典
  • Leetcode 27 Remove Element
  • scrapy学习之路4(itemloder的使用)
  • use Google search engine
  • 测试开发系类之接口自动化测试
  • 浏览器缓存机制分析
  • 智能网联汽车信息安全
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (六)激光线扫描-三维重建
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三)终结任务
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net mvc 获取url中controller和action
  • .net 验证控件和javaScript的冲突问题
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • /boot 内存空间不够
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • ::before和::after 常见的用法
  • @property括号内属性讲解
  • []Telit UC864E 拨号上网
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [android] 练习PopupWindow实现对话框
  • [Apio2012]dispatching 左偏树
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [CF]Codeforces Round #551 (Div. 2)
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [ffmpeg] 定制滤波器
  • [Godot] 3D拾取
  • [IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
  • [iHooya]2023年1月30日作业解析