//先建数据库
create database ibatis
use ibatis
create table ibatis(
id int primary key,
name varchar(19),
date datetime
)
insert into ibatis values(1,'name1',getdate());
insert into ibatis values(2,'name2',getdate());
//在创建iBatisNet网站应用
//在NuGet中搜索IbatisNet,引入IbatisNet.Common.dll与 IbatisNet.DataMapper.dll
//ibatis有三个很配置文件,
//providers.config:指定数据库提供者,.Net版本等信息。
//xxxxx.xml:映射规则。
//SqlMap.config:大部分配置一般都在这里,如数据库连接等等。
/**Windows应用项目或者类库项目中,需要放在项目的/bin/debug/目录下。在Web应用程序中,需要放在应用程序根目录。当然,这也不是强制性的,也可以很灵活地配置**/
public IList
<PersonModel> GetList()
{
//ISqlMapper mapper = Mapper.Instance();
DomSqlMapBuilder builder = new DomSqlMapBuilder();
ISqlMapper mapper = builder.Configure(@"C:\Users\Administrator\Desktop\Ibatis.Net测试\Ibatis.Net测试\SqlMap.config");
IList
<PersonModel> ListPerson = mapper.QueryForList
<PersonModel>("SelectAllPerson", null); //这个"SelectAllPerson"就是xml映射文件的Id
return ListPerson;
}
/**以上代码,就从指定的位置去加载了SqlMap.config。注意,虽然SqlMap.config是从指定的位置,但是要注意里面的resource引入的资源,还是从原来的默认目录开始找**/
----------------------------例子---------------------------------------
//providers文件,使用的是数据库sql server2008
<?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>
//映射文件 *.xml
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="iBatisNet" xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<statements>
<select id="getIdModel" resultClass="iBatisNet.Model" parameterClass="int">
<![CDATA[select * from ibatis where id=#i#]]>
</select>
<select id="getAllModel" resultClass="iBatisNet.Model">
<![CDATA[select * from ibatis]]>
</select>
<insert id="insertModel" parameterClass="iBatisNet.Model">
<![CDATA[INSERT INTO IBATIS VALUES(#id#,#name#,#date#)]]>
</insert>
<delete id="deleteModel" parameterClass="int">
<![CDATA[delete from ibatis where id=#i#]]>
</delete>
<update id="updateModel" parameterClass="iBatisNet.Model">
<![CDATA[update ibatis set namE=#name#,date=#date# from ibatis where id=#id#]]>
</update>
</statements >
<statements>
<select id="getDynamic" resultClass="iBatisNet.Model" parameterClaa="iBatisNet.Model">
<![CDATA[select * from ibatis]]>
<dynamic prepend="where">
<isNotEmpty property="id" prepend="and">
<![CDATA[ id=#id#]]>
</isNotEmpty>
<isNotEmpty property="name" prepend="and">
<![CDATA[name=#name#]]>
</isNotEmpty>
</dynamic>
</select>
<select id="getDynamicIterate" resultClass="iBatisNet.Model" parameterClass="iBatisNet.Model">
<![CDATA[select * from ibatis]]>
<dynamic prepend="where">
<isNotEmpty property="id" prepend="and">
<![CDATA[id in]]>
<iterate open="(" close=")" property="ary" conjunction=",">
<![CDATA[#ary[]#]]>
</iterate>
</isNotEmpty>
</dynamic>
</select>
</statements>
</sqlMap>
//全局配置文件
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig
xmlns="http://ibatis.apache.org/dataMapper"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<settings>
<setting useStatementNamespaces="false"/>
</settings>
<providers resource="providers.config"/>
<database>
<provider name="sqlServer2008"/>
<dataSource name="iBatisNet" connectionString="Data Source=127.0.0.1;Initial Catalog=ibatis;User ID=sa;Password=1"/>
</database>
<sqlMaps>
<sqlMap resource="MapFile.xml" />
</sqlMaps>
</sqlMapConfig>
//对象模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace iBatisNet
{
public class Model
{
public int id { get; set; }
public string name { get; set; }
public DateTime date { get; set; }
public int[] ary {get;set;}
}
}
//程序执行的入口文件
using IBatisNet.DataMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace iBatisNet
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int i=2;
//动态查询
List
<Model> modelDs = (List
<Model>)Dal.GetDynamic
<Model>("getDynamic", new Model { id = 2,name="name2" });
//传数组
int[] ary = new int[]{1,2,3 };
List
<Model> modelIteraet = (List
<Model>)Dal.GetDunamicIteraet
<Model>("getDynamicIterate", new Model() { ary =new int[]{ 1,2} });
//查所有
//getAllModel与映射文件的
<select id="getAllModel">对应
List
<Model> models = (List
<Model>) Dal.GetAllModel
<Model>("getAllModel");
//根据id查数据
Model model = Dal.GetModel
<Model>("getIdModel", 2);
//新增
//Dal.Insert("insertModel", new Model() {id=4,name="name3",date=DateTime.Now });
//删除
//Dal.Delete("deleteModel",i=4);
//修改
Dal.Update("updateModel",new Model {id=3,name="newname3",date=DateTime.Now });
}
}
}
//index.aspc.cs文件调用的方法,方法名一一对应
using IBatisNet.DataMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace iBatisNet
{
public class Dal
{
public static ISqlMapper instance()
{
ISqlMapper mapper =Mapper.Instance();
return mapper;
}
internal static T GetModel
<T>(string v1, int v2)
{
return instance().QueryForObject
<T>(v1,v2);
}
internal static IList
<T> GetAllModel
<T>(string v, object parameterObject = null)
{
return instance().QueryForList
<T >(v,parameterObject);
}
internal static IList
<T> GetDunamicIteraet
<T>(string v1, object v2)
{
return instance().QueryForList
<T>(v1,v2);
}
internal static void Insert
<T>(string v, T model)
{
instance().Insert(v, model);
}
internal static void Delete(string v1, int v2)
{
instance().Delete(v1,v2);
}
internal static IList
<T> GetDynamic
<T>(string v, T model)
{
return instance().QueryForList
<T>(v,model);
}
internal static void Update
<T>(string v, T model)
{
instance().Update(v, model);
}
}
}