ibatis配置文件主要包括三个 sqlmap.config,providers.config,database.config,注意所有文件生成操作都为嵌入的资源。其中database.config主要是配置数据库参数的一个config文件

<?xml version="1.0" encoding="utf-8" ?>
<settings>
<!-- User application and configured property settings go here.-->
<!-- To run tests, create a file named DataBase.config
with your own value for datasource.
(don't included it in the solution and don't commit it in SVN)
-->
<add key="userid" value="sa" /> <!--数据库连接登录名 -->
<add key="password" value="sa" /><!--数据库连接密码 -->
<add key="database" value="person" /><!--数据库名字 -->
<add key="datasource" value="." /><!--服务器名-->
<add key="selectKey" value="select @@IDENTITY as value" />
<add key="directory" value="Maps" />
<add key="useStatementNamespaces" value="false" />
</settings>

其次 providers.config 这个主要存放连接数据库的驱动程序 主要有 oracle sqlserver等等。
最后讲解 sqlmap.config这个配置比较重要。

<?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"/> -->
<!--加载配置文件注意命名空间IBatisNetDemo-->
<properties embedded="database.config, IBatisNetDemo"/>
<settings>
<setting useStatementNamespaces="${useStatementNamespaces}"/>
<setting cacheModelsEnabled="true"/>
<setting validateSqlMap="false"/>
</settings> <!-- Optional if resource -->
<providers embedded="providers.config,IBatisNetDemo"/>
<!--加载配置文件注意命名空间IBatisNetDemo-->
<!-- ==== SqlClient configuration ========= -->
<!-- Rem : If used via a DataAccess context, database tag will be ignored -->
<database>
<!-- Optional ( default ) -->
<!--加载数据库连接字符串这里连接sqlserver数据库-->
<provider name="sqlServer1.1"/>
<dataSource name="test" connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>
</database> <sqlMaps>
<!-- user via embedded-->
<!--加载配置文件注意命名空间IBatisNetDemo-->
<sqlMap embedded="Map.SqlClient.Dep.xml,IBatisNetDemo"/>
<sqlMap embedded="Map.SqlClient.Person.xml,IBatisNetDemo"/>
</sqlMaps>
</sqlMapConfig>

其次讲解xml文件 这里主要讲解两个xml文件,第一个Person.xml

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

<sqlMap namespace="Person" xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <alias>
<typeAlias alias="Person" type="IBatisNetDemo.Domain.Person,IBatisNetDemo" /> <!--加载实体类,这里主要指下面要调用的实体类-->
</alias> <resultMaps> <!--返回数据解析的实体-->
<resultMap id="SelectAllResult" class="Person">
<result property="Id" column="PER_ID" />
<result property="FirstName" column="PER_FIRST_NAME" />
<result property="LastName" column="PER_LAST_NAME" />
<result property="BirthDate" column="PER_BIRTH_DATE" />
<result property="WeightInKilograms" column="PER_WEIGHT_KG" />
<result property="HeightInMeters" column="PER_HEIGHT_M" />
<result property="depid" column="DepID" />
</resultMap> </resultMaps> <statements><!-- 这里主要写sql语句和存储过程--> <select id="SelectPersonByDepId" resultMap="SelectAllResult">
select
PER_ID,
PER_FIRST_NAME,
PER_LAST_NAME,
PER_BIRTH_DATE,
PER_WEIGHT_KG,
PER_HEIGHT_M,
DepID
from PERSON where DepID=#DepID#
</select>
<select id="SelectAllPerson" resultMap="SelectAllResult">
select
PER_ID,
PER_FIRST_NAME,
PER_LAST_NAME,
PER_BIRTH_DATE,
PER_WEIGHT_KG,
PER_HEIGHT_M,
DepID
from PERSON
</select> <select id="SelectByPersonId" resultMap="SelectAllResult" parameterClass="Hashtable">
select
PER_ID,
PER_FIRST_NAME,
PER_LAST_NAME,
PER_BIRTH_DATE,
PER_WEIGHT_KG,
PER_HEIGHT_M,
DepID
from PERSON
<dynamic prepend="where"><!--动态添加sql语句条件-->
<isParameterPresent>
<isNotEmpty prepend="and" property="id" >
PER_ID = '$id$'
</isNotEmpty>
<isNotEmpty prepend="and" property="name" >
PER_FIRST_NAME LIKE '%$name$%'
</isNotEmpty>
</isParameterPresent>
</dynamic>
</select> <insert id="InsertPerson" parameterclass="Person" >
<selectKey property="Id" type="post" resultClass="int">
${selectKey}
</selectKey>
insert into Person
( PER_FIRST_NAME,
PER_LAST_NAME,
PER_BIRTH_DATE,
PER_WEIGHT_KG,
PER_HEIGHT_M)
values
(#FirstName#,#LastName#,#BirthDate#, #WeightInKilograms#, #HeightInMeters#)
</insert> <update id="UpdatePerson"
parameterclass="Person">
<![CDATA[ update Person set
PER_FIRST_NAME =#FirstName#,
PER_LAST_NAME =#LastName#,
PER_BIRTH_DATE =#BirthDate#,
PER_WEIGHT_KG=#WeightInKilograms#,
PER_HEIGHT_M=#HeightInMeters#
where
PER_ID = #Id# ]]>
</update> <delete id="DeletePerson" parameterclass="Person">
delete from Person
where
PER_ID = #Id#
</delete> </statements>
</sqlMap>

第二个xml文件 Dep.xml

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

<sqlMap namespace="Dep" xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <alias>
<typeAlias alias="Dep" type="IBatisNetDemo.Domain.Dep,IBatisNetDemo" /> </alias> <resultMaps>
<resultMap id="SelectAllResultDep" class="Dep">
<result property="DepId" column="DepID" />
<result property="DepName" column="DepName" />
<result property="list" column="DepID" select="SelectPersonByDepId" /><!--配置一对多关系,这里的select选择id为person.xml文件的id,注意这里id都是公用-->
</resultMap>
</resultMaps> <statements>
<select id="SelectDepById" resultMap="SelectAllResultDep">
select DepID,DepName from Dep where DepId=#DepID#
</select>
</statements>
</sqlMap>

其中一个为部门,一个为人员,两个之间关系为一对多的关系

配置文件讲解完过后我们来讲解怎么调用这个框架,首先要引用IBatisNet.Common.dll,IBatisNet.DataMapper.dll 两个文件

其实加载sqlmap对象

代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
using IBatisNetDemo.Domain; namespace IBatisNetDemo
{
public class BaseDao<T> where T : class
{
private ISqlMapper sqlMap; //private string fileName = "sqlMap.Config"; public BaseDao()
{
Assembly assembly = Assembly.Load("IBatisNetDemo");
Stream stream = assembly.GetManifestResourceStream("IBatisNetDemo.sqlmap.config"); DomSqlMapBuilder builder = new DomSqlMapBuilder();
sqlMap = builder.Configure(stream); } public ISqlMapper SqlMap
{
get
{
return sqlMap;
}
} public IList<T> GetAllList(string key)
{ return SqlMap.QueryForList<T>(key, null); }
public T GetModel(string key, object id)
{ return SqlMap.QueryForObject<T>(key, id); } public object Insert(string key, T model)
{
object o = null;
o = sqlMap.Insert(key, model);
return o; }
}
}
源码数据库下载地址:下载

最新文章

  1. GIT/node使用
  2. [OpenCV] Samples 02: [ML] kmeans
  3. 去哪儿网mysql语法审核工具Inception正式开源
  4. mysql 选择性高
  5. UI学习笔记---第三天
  6. 搭建本地Nuget服务器并使用NuGet Package Explorer工具打包nuget包
  7. Json.Net系列教程 1.Json.Net介绍及实例
  8. 操作系统的页面置换C++算法:OPT FIFO LRU CLOCK 计算缺页率
  9. 删除 CentOS7 更新后产生的多余的内核
  10. Windows API 函数浏览
  11. ASP.NET Core 使用 Alipay.AopSdk.Core 常见问题解答
  12. 关于React Native 火热的话题,从入门到原理
  13. jieba库分词
  14. Confluence 6 数据库表-授权(Authentication)
  15. 嵌入式单片机STM32应用技术(课本)
  16. PyQt5初级教程(一)
  17. linux golang开发环境配置(离线方式)
  18. OnActionExecuting验证用户登录
  19. CodeForces 794 G.Replace All
  20. jquery parents用法

热门文章

  1. F# 越用越喜欢
  2. 我永远的 dell 15r
  3. ios开发必备第三方库
  4. hdu5358 First One(尺取法)
  5. JavaScript语法学习笔记
  6. 自定义滚动条 niceScroll 配置参数
  7. php 实时推送代码
  8. css3绘制几何图形
  9. javascript if 和else 语句练习
  10. Django 反向生成 从数据库生成Model