MyBatis.NET的前身为IBatis,是JAVA版MyBatis在.NET平台上的翻版,相对NHibernate、EntityFramework等重量级ORM框架而言,MyBatis.NET必须由开发人员手动写SQL,相对灵活性更大,更容易保证DB访问的性能,适用开发团队里有SQL熟手的场景。
下面是使用步骤:
1.到官网http://code.google.com/p/mybatisnet/ 下载相关dll和文档
2.创建一个Web程序
创建一个MVC4的Web应用程序,并引用我们下载的IBatisNet程序包中的IBatisNet.DataMapper.dll和IBatisNet.Common.dll,这里我只引用了这两个,log4net我没有引用也没有配置使用,全部程序结构如下
3.添加Providers.config,并复制到项目根目录下
把下载的IBatisNet程序包打开,就能找到providers.config文件,里面定义了MyBatis.Net支持的各种数据库驱动,这里我以sqlServer为例,把其他不用的全部删除,只留下sqlServer的并且把版本号全部改为4.0,同时把enabled属性设置成true,如下:
<providers
xmlns="http://ibatis.apache.org/providers"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<clear/>
<provider
name="sqlServer4.0"
enabled="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="false"
/>
providers>
把这个文件复制到Web项目根目录下
4.在项目目录下添加SqlMap.config,它的作用主要是指定db连接串,告诉系统providers.config在哪? 以及db与entity的映射文件在哪?如下:
<sqlMapConfig
xmlns="http://ibatis.apache.org/dataMapper"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<settings>
<setting useStatementNamespaces="false"/>
<setting cacheModelsEnabled="true"/>
settings>
<providers resource="providers.config"/>
<database>
<provider name="sqlServer4.0"/>
<dataSource name="DB" connectionString="Data Source=.;Initial Catalog=School;uid=sa;pwd=123456"/>
database>
<sqlMaps>
<sqlMap resource="Maps/PersonAndCourse.xml"/>
<sqlMap resource="Maps/PersonMap.xml"/>
sqlMaps>
sqlMapConfig>
5.这里在数据库建两张表一个是个人信息还有一个是课程表,如下:
第一张表是Person表,第二张表为Cour课程表,课程表名字是错的只敲一半,大家略过,第一张表的ID和第二张表的PerID关联,建两张表是为了后面的联合查询,这里先不多说
下面为创建表的SQL语句
create database School
go
use School
go
create table Person
(
ID int not null primary key Identity(1,1),
Name nvarchar(50),
Age int ,
Sex nvarchar(50)
)
go
create table Course
(
ID int not null primary key Identity(1,1),
PerID int not null ,
CourseName nvarchar(50)
)
go
insert into Person values
('sasa',15,'女'),
('ff',20,'男')
go
insert into Course values
(1,'计算机'),
(1,'标准'),
(1,'物理')
go
--给两个表添加主外键关系
alter table Course add
Constraint FK_Curse_Per foreign key (PerId) references Person(ID)
go
select * from Person
select * from Course
6.接下来在Models文件夹里建两个实体类。一个为Person类,另一个为PersonAndCourse类. 后者只比前者多了一个课程名称的字段.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace PratiseMyBatis.Models
{
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}
public class PersonAndCourse
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
public string CourseName { get; set; }
}
}
博主也是才开始学这个东东的,如果大家有疑问的地方欢迎来交流。这个Demo里没有用到log4net日志。 所以我也没配置。主要讲的是MyBatis的功能。 如果大家希望学log4net配置这方面,我后面会讲到的.
好了,今天先到此为止了。 接下来看第二章