程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> MyBatis.Net 配置,mybatis.net配置

MyBatis.Net 配置,mybatis.net配置

編輯:C#入門知識

MyBatis.Net 配置,mybatis.net配置


假設我們現在有這樣的需求,要對學生信息進行管理

學生表有要以下要求

字段名稱

數據類型

說明

stuNo

字符

學號,該列必填,為主鍵遞增

stuName

字符

學生姓名,該列必填,要考慮姓氏可能是兩個字的,如歐陽俊雄

     

stuSex

字符

學生性別,該列必填,且只能是“男”或“女”。因為男生較多,默認為“男”

stuAge

數字

學生年齡,該列必填,必須在15~50歲之間

stuSeat

數字

學生的座位號

stuAddress

字符

學生地址,該列可不填,如沒有填寫,默認為“地址不詳”

 


1. – 創建表[student_tb]

create table student_tb (
      StuNo int identity(1,1) primary key,
      StuName varchar(10) not null,
      StuSex varchar(5)  check(StuSex in('男','女')) default('男'),
      StuAge int check (StuAge between 15 and 50) not null,
      StuSeat int not null,
      StuAddress varchar (20) default('地址不詳'),
    );

2. –創建實體

public class StudentInfo
    {
        public int StuNo { get; set; }

        public string StuName { get; set; }

        public string StuSex { get; set; }

        public int StuAge { get; set; }

        public int StuSeat { get; set; }

        public string StuAddress { get; set; }
    }

3. – 創建SqlMapper Provider

創建SqlMapper的方式有以下幾種

a. 第一種方式

ISqlMapper _sqlMapper=IBatisNet.DataMapper.Mapper.Instance()

:此種方式要求SqlMap.config文件位於應用程序根目錄下,且文件名是且僅是”SqlMap.config”

b. 第二種方式

ISqlMapper _sqlMapper=new DomSqlMapBuilder().Configure()

注:同上

c. 第三種方式——指定SqlMap.config的路徑(使用EmbededResource查找config資源時,要求SqlMap.config生成操作屬性為嵌入的資源)

XmlDocument sqlMapConfig = Resources.GetEmbeddedResourceAsXmlDocument("Config.SqlMap.config, Persistence");

ISqlMapper _sqlMapper = new DomSqlMapBuilder().Configure(sqlMapConfig); //---第三種

MyBatisProvider代碼如下:

public class MyBatisProvider
    {
        private static ISqlMapper _sqlMapper;
        private static object sysncObj = new object();
        public static ISqlMapper GetInstanse()
        {
            if (_sqlMapper == null)
            {
                lock (sysncObj)
                {
                    if (_sqlMapper == null)
                    {
                        //_sqlMapper = IBatisNet.DataMapper.Mapper.Instance();//---第一種

                        //_sqlMapper = new DomSqlMapBuilder().Configure(); //---第二種

                        XmlDocument sqlMapConfig = Resources.GetEmbeddedResourceAsXmlDocument("MyBatis.SqlMap.config, MyBatis");

                        _sqlMapper = new DomSqlMapBuilder().Configure(sqlMapConfig);  //---第三種

                    }
                }
            }
            return _sqlMapper;
        }
    }

4. –在項目中

添加配置文件

a. provider.config

在網上一搜一大把。

<?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="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>

b. 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">
  <settings>
    <setting useStatementNamespaces="true"/>
    <setting cacheModelsEnabled="true"/>
  </settings>

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

  <database>
    <provider name="sqlServer4.0"/>
    <dataSource name="dataSourceName" connectionString="連接語句"/>
  </database>
  <sqlMaps>
    <sqlMap embedded="MyBatis.SqlMaps.StudentInfo.xml,MyBatis"/>
  </sqlMaps>
</sqlMapConfig>

按照代碼中的創建實例方式選擇不同的位置及名稱

注: <setting useStatementNamespaces="true"/>  true表示statementName要使用Namespace ,即實體映射XML中的namespace屬性

sqlMaps節點下為實體映射XML文件路徑

embedded表示文件的屬性生成操作為嵌入的資源


5. –創建實體映射文件

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

<sqlMap namespace="StudentInfo" xmlns="http://ibatis.apache.org/mapping"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <alias>
    <typeAlias alias="StudentInfo" type="Model.StudentInfo,Model" />
  </alias>
  <resultMaps>
    <resultMap id="StudentResult" class="StudentInfo">
      <result property="StuNo" column="stuNo"/>
      <result property="StuName" column="stuName"/>
      <result property="StuSex" column="stuSex"/>
      <result property="StuAge" column="stuAge"/>
      <result property="StuSeat" column="stuSeat"/>
      <result property="StuAddress" column="stuAddress"/>
    </resultMap>
  </resultMaps>
  <statements>
    <insert id="Insert" parameterClass="StudentInfo" resultClass="int">
      INSERT INTO [student_tb]([stuName],[stuSex],[stuAge],[stuSeat],[stuAddress])
      VALUES(#StuName#,#StuSex#,#StuAge#,#StuSeat#,#StuAddress#)
      <selectKey property="StuNo" resultClass="int" type="post" >
        SELECT @@identity AS StuNo
      </selectKey>
    </insert>
    <delete id="Delete" parameterClass="Int32">
      UPDATE [student_tb]
      SET [stuName] = #StuName#,[stuSex] = #StuSex#,[stuAge] = #StuAge#,[stuSeat] = #StuSeat#,[stuAddress] = #StuAddress#
      WHERE [stuNo]=#StuNo#
    </delete>
    <update id="Update" parameterClass="StudentInfo">
      UPDATE [student_tb]
      SET [stuName] = #StuName#,[stuSex] = #StuSex#,[stuAge] = #StuAge#,[stuSeat] = #StuSeat#,[stuAddress] = #StuAddress#
      WHERE [stuNo]=#StuNo#
    </update>    
    <select id="Get" parameterClass="Int32" resultMap="StudentResult">
      select * from [student_tb] where stuNo=#StuNo#
    </select>    
    <select id="List" parameterClass="map" resultMap="StudentResult">
      select * from [student_tb]
    </select>
  </statements>
</sqlMap>

如上,為一個簡單的XML實體映射文件。

通過resultMaps節點,將實體屬性與數據庫字段對應起來。statements中再寫增刪改查等相關的操作節點及SQL


6. –DAL操作數據庫

public class StudentDAL
    {
        public int Insert(StudentInfo info)
        {
            string stmtName = "StudentInfo.Insert";

            return Convert.ToInt32(MyBatisProvider.GetInstanse().Insert(stmtName, info) ?? "0");
        }

        public int Update(StudentInfo info)
        {
            string stmtName = "StudentInfo.Update";

            return MyBatisProvider.GetInstanse().Update(stmtName, info);
        }

        public StudentInfo Get(int id)
        {
            string stmtName = "StudentInfo.Get";

            return MyBatisProvider.GetInstanse().QueryForObject<StudentInfo>(stmtName, id);
        }

        public IList<StudentInfo> List()
        {
            string stmtName = "StudentInfo.List";

            return MyBatisProvider.GetInstanse().QueryForList<StudentInfo>(stmtName, null);
        }
    }

示例代碼:

clip_image002[4]


mybatis配置屬性

Class Blog{
String aa;
List<Comment> comments;

}

<resultMap type="Blog" id="BlogResult">
<id column="id" property="id"/>
<collection property="comments" column="id" ofType="Comment" javaType="java.util.ArrayList" select="selectCommentsByBlogId"></collection>
</resultMap>

<select id="selectBlog" parameterType="int" resultMap="BlogResult">
<![CDATA[select * from t_blog where id = #{id}]]>
</select>

請參考這個例子
 

mybatis映射文件怎配置

給你推薦我寫的 blog.csdn.net/...924701
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved