net搭建mybatis开发环境_.net mybatis-程序员宅基地

技术标签: C#  

mybatis其实就是ibatis的升级版本不仅能在java上使用,asp.net照样可以使用mybatis来开发程序。mybatis是一个比较小巧的ORM框架,类似hibernate。自己试了一下用法和java上的mybatis差不多。这次在.net的平台上我也来小试牛刀,弄个小程序出来看看,开发之前要去mybatis官网上下载2个包。

1.asp.net版本的mybatis下载地址是http://www.mybatis.org/dotnet.html,如下图所示

 

如果有必要的话可以连开发文档一起下载。

 

2.把下面的dll文件全部拷贝出来,之后在项目里添加引用。日志的那个开发包可以不选

 

3.为了开发方便我这里在项目里添加了一个数据库student,并且建了一个学生表m_student

4.在项目里添加一个配置文件,这个文件存有所需要的连接配置,类似于hibernate里的方言。该文件可以从下载的包里拷贝出来使用名称为Providers.config

文件内容如下

[html] view plain copy print?

  1. <?xml version="1.0"?>  
  2. <providers xmlns="http://ibatis.apache.org/providers"  
  1.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  2.   
  3.     <clear/>  
  4.     <provider  
  5.           name="sqlServer1.0"  
  6.           description="Microsoft SQL Server, provider V1.0.3300.0 in framework .NET V1.0"  
  7.           enabled="true"  
  8.           assemblyName="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection"  
  9.           commandClass="System.Data.SqlClient.SqlCommand"  
  10.           parameterClass="System.Data.SqlClient.SqlParameter"  
  11.           parameterDbTypeClass="System.Data.SqlDbType"  
  12.           parameterDbTypeProperty="SqlDbType"  
  13.           dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"  
  14.           commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"  
  15.           usePositionalParameters="false"  
  16.           useParameterPrefixInSql="true"  
  17.           useParameterPrefixInParameter="true"  
  18.           parameterPrefix="@"  
  19.           allowMARS="false"  
  20.   />  
  21.     <provider  
  22.           name="sqlServer1.1"  
  23.           description="Microsoft SQL Server, provider V1.0.5000.0 in framework .NET V1.1"  
  24.           enabled="true"  
  25.           default="true"  
  26.           assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  27.           connectionClass="System.Data.SqlClient.SqlConnection"  
  28.           commandClass="System.Data.SqlClient.SqlCommand"  
  29.           parameterClass="System.Data.SqlClient.SqlParameter"  
  30.           parameterDbTypeClass="System.Data.SqlDbType"  
  31.           parameterDbTypeProperty="SqlDbType"  
  32.           dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"  
  33.           commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"  
  34.           usePositionalParameters="false"  
  35.           useParameterPrefixInSql="true"  
  36.           useParameterPrefixInParameter="true"  
  37.           parameterPrefix="@"  
  38.           allowMARS="false"  
  39.   />  
  40.     <!--SqlServer 2.0 SQl-->  
  41.     <provider  
  42.         name="sqlServer2.0"  
  43.         enabled="true"  
  44.         description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"  
  45.         assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  46.         connectionClass="System.Data.SqlClient.SqlConnection"  
  47.         commandClass="System.Data.SqlClient.SqlCommand"  
  48.         parameterClass="System.Data.SqlClient.SqlParameter"  
  49.         parameterDbTypeClass="System.Data.SqlDbType"  
  50.         parameterDbTypeProperty="SqlDbType"  
  51.         dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"  
  52.         commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"  
  53.         usePositionalParameters = "false"  
  54.         useParameterPrefixInSql = "true"  
  55.         useParameterPrefixInParameter = "true"  
  56.         parameterPrefix="@"  
  57.         allowMARS="false"  
  58.     />  
  59.       
  60.     <provider name="OleDb1.1"  
  61.           description="OleDb, provider V1.0.5000.0 in framework .NET V1.1"  
  62.           enabled="true"  
  63.           assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  64.         connectionClass="System.Data.OleDb.OleDbConnection"  
  65.           commandClass="System.Data.OleDb.OleDbCommand"  
  66.           parameterClass="System.Data.OleDb.OleDbParameter"  
  67.           parameterDbTypeClass="System.Data.OleDb.OleDbType"  
  68.           parameterDbTypeProperty="OleDbType"  
  69.           dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"  
  70.           commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"  
  71.           usePositionalParameters="true"  
  72.           useParameterPrefixInSql="false"  
  73.           useParameterPrefixInParameter="false"  
  74.           parameterPrefix=""  
  75.         allowMARS="false"  
  76.     />  
  77.     <provider name="OleDb2.0"  
  78.       description="OleDb, provider V2.0.0.0 in framework .NET V2"  
  79.       enabled="false"  
  80.       assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  81.       connectionClass="System.Data.OleDb.OleDbConnection"  
  82.       commandClass="System.Data.OleDb.OleDbCommand"  
  83.       parameterClass="System.Data.OleDb.OleDbParameter"  
  84.       parameterDbTypeClass="System.Data.OleDb.OleDbType"  
  85.       parameterDbTypeProperty="OleDbType"  
  86.       dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"  
  87.       commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"  
  88.       usePositionalParameters="true"  
  89.       useParameterPrefixInSql="false"  
  90.       useParameterPrefixInParameter="false"  
  91.       parameterPrefix=""  
  92.       allowMARS="false"  
  93.     />  
  94.     <provider  
  95.       name="Odbc1.1"  
  96.       description="Odbc, provider V1.0.5000.0 in framework .NET V1.1"  
  97.       enabled="false"  
  98.       assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  99.       connectionClass="System.Data.Odbc.OdbcConnection"  
  100.       commandClass="System.Data.Odbc.OdbcCommand"  
  101.       parameterClass="System.Data.Odbc.OdbcParameter"  
  102.       parameterDbTypeClass="System.Data.Odbc.OdbcType"  
  103.       parameterDbTypeProperty="OdbcType"  
  104.       dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"  
  105.       commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"  
  106.       usePositionalParameters="true"  
  107.       useParameterPrefixInSql="false"  
  108.       useParameterPrefixInParameter="false"  
  109.       parameterPrefix="@"  
  110.       allowMARS="false"  
  111.     />  
  112.     <!--ODBC 2.0 Support-->  
  113.     <provider  
  114.       name="Odbc2.0"  
  115.       description="Odbc, provider V2.0.0.0 in framework .NET V2"  
  116.       enabled="false"  
  117.       assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  118.       connectionClass="System.Data.Odbc.OdbcConnection"  
  119.       commandClass="System.Data.Odbc.OdbcCommand"  
  120.       parameterClass="System.Data.Odbc.OdbcParameter"  
  121.       parameterDbTypeClass="System.Data.Odbc.OdbcType"  
  122.       parameterDbTypeProperty="OdbcType"  
  123.       dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"  
  124.       commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"  
  125.       usePositionalParameters="true"  
  126.       useParameterPrefixInSql="false"  
  127.       useParameterPrefixInParameter="false"  
  128.       parameterPrefix="@"  
  129.       allowMARS="false"  
  130.   />  
  131.       
  132.     <provider  
  133.       name="oracle9.2"  
  134.       description="Oracle, Oracle provider V9.2.0.401"  
  135.       enabled="false"  
  136.       assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"  
  137.       commandClass="Oracle.DataAccess.Client.OracleCommand"  
  138.       parameterClass="Oracle.DataAccess.Client.OracleParameter"  
  139.       parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"  
  140.       parameterDbTypeProperty="OracleDbType"  
  141.       dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"  
  142.       commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"  
  143.       usePositionalParameters="false"  
  144.       useParameterPrefixInSql="true"  
  145.       useParameterPrefixInParameter="false"  
  146.       parameterPrefix=":"  
  147.       useDeriveParameters="false"  
  148.       allowMARS="false"  
  149.   />  
  150.     <provider  
  151.       name="oracle10.1"  
  152.       description="Oracle, oracle provider V10.1.0.301"  
  153.       enabled="false"  
  154.       assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"  
  155.       commandClass="Oracle.DataAccess.Client.OracleCommand"  
  156.       parameterClass="Oracle.DataAccess.Client.OracleParameter"  
  157.       parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"  
  158.       parameterDbTypeProperty="OracleDbType"  
  159.       dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"  
  160.       commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"  
  161.       usePositionalParameters="true"  
  162.       useParameterPrefixInSql="true"  
  163.       useParameterPrefixInParameter="true"  
  164.       parameterPrefix=":"  
  165.       useDeriveParameters="false"  
  166.       allowMARS="false"  
  167.   />  
  168.     <!--Oracle Support-->  
  169.     <provider  
  170.       name="oracleClient1.0"  
  171.       description="Oracle, Microsoft provider V1.0.5000.0"  
  172.       enabled="false"  
  173.       assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection"  
  174.       commandClass="System.Data.OracleClient.OracleCommand"  
  175.       parameterClass="System.Data.OracleClient.OracleParameter"  
  176.       parameterDbTypeClass="System.Data.OracleClient.OracleType"  
  177.       parameterDbTypeProperty="OracleType"  
  178.       dataAdapterClass="System.Data.OracleClient.OracleDataAdapter"  
  179.       commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder"  
  180.       usePositionalParameters="false"  
  181.       useParameterPrefixInSql="true"  
  182.       useParameterPrefixInParameter="false"  
  183.       parameterPrefix=":"  
  184.       allowMARS="false"  
  185.   />  
  186.     <!--ByteFX Support-->  
  187.     <provider  
  188.       name="ByteFx"  
  189.       description="MySQL, ByteFx provider V0.7.6.15073"  
  190.       enabled="false"  
  191.       assemblyName="ByteFX.MySqlClient, Version=0.7.6.15073, Culture=neutral, PublicKeyToken=f2fef6fed1732fc1" connectionClass="ByteFX.Data.MySqlClient.MySqlConnection"  
  192.       commandClass="ByteFX.Data.MySqlClient.MySqlCommand"  
  193.       parameterClass="ByteFX.Data.MySqlClient.MySqlParameter"  
  194.       parameterDbTypeClass="ByteFX.Data.MySqlClient.MySqlDbType"  
  195.       parameterDbTypeProperty="MySqlDbType"  
  196.       dataAdapterClass="ByteFX.Data.MySqlClient.MySqlDataAdapter"  
  197.       commandBuilderClass="ByteFX.Data.MySqlClient.MySqlCommandBuilder"  
  198.       usePositionalParameters="false"  
  199.       useParameterPrefixInSql="true"  
  200.       useParameterPrefixInParameter="true"  
  201.       parameterPrefix="@"  
  202.       allowMARS="false"  
  203.   />  
  204.     <!--MySql Support-->  
  205.     <provider  
  206.       name="MySql"  
  207.       description="MySQL, MySQL provider 1.0.7.30072"  
  208.       enabled="false"  
  209.       assemblyName="MySql.Data, Version=1.0.7.30072, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"  
  210.       commandClass="MySql.Data.MySqlClient.MySqlCommand"  
  211.       parameterClass="MySql.Data.MySqlClient.MySqlParameter"  
  212.       parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"  
  213.       parameterDbTypeProperty="MySqlDbType"  
  214.       dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"  
  215.       commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"  
  216.       usePositionalParameters="false"  
  217.       useParameterPrefixInSql="true"  
  218.       useParameterPrefixInParameter="true"  
  219.       parameterPrefix="?"  
  220.       allowMARS="false"  
  221.   />  
  222.     <!--SQLite 3 Support-->  
  223.     <provider name="SQLite3"  
  224.       description="SQLite, SQLite.NET provider V0.21.1869.3794"  
  225.       enabled="false"  
  226.       assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c"  
  227.       connectionClass="Finisar.SQLite.SQLiteConnection"  
  228.       commandClass="Finisar.SQLite.SQLiteCommand"  
  229.       parameterClass="Finisar.SQLite.SQLiteParameter"  
  230.       parameterDbTypeClass="System.Data.DbType, System.Data"  
  231.       parameterDbTypeProperty="DbType"  
  232.       dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter"  
  233.       commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder"  
  234.       usePositionalParameters="false"  
  235.       useParameterPrefixInSql="true"  
  236.       useParameterPrefixInParameter="true"  
  237.       parameterPrefix="@"  
  238.       setDbParameterPrecision="false"  
  239.       setDbParameterScale="false"  
  240.       allowMARS="false"  
  241.   />  
  242.     <!--Firebird Support-->  
  243.     <provider  
  244.       name="Firebird1.7"  
  245.       description="Firebird, Firebird SQL .NET provider V1.7.0.33200"  
  246.       enabled="false"  
  247.       assemblyName="FirebirdSql.Data.Firebird, Version=1.7.0.33200, Culture=neutral, PublicKeyToken=fa843d180294369d" connectionClass="FirebirdSql.Data.Firebird.FbConnection"  
  248.       commandClass="FirebirdSql.Data.Firebird.FbCommand"  
  249.       parameterClass="FirebirdSql.Data.Firebird.FbParameter"  
  250.       parameterDbTypeClass="FirebirdSql.Data.Firebird.FbDbType"  
  251.       parameterDbTypeProperty="FbDbType"  
  252.       dataAdapterClass="FirebirdSql.Data.Firebird.FbDataAdapter"  
  253.       commandBuilderClass="FirebirdSql.Data.Firebird.FbCommandBuilder"  
  254.       usePositionalParameters="false"  
  255.       useParameterPrefixInSql="true"  
  256.       useParameterPrefixInParameter="true"  
  257.       parameterPrefix="@"  
  258.       allowMARS="false"  
  259.   />  
  260.     <!--PostgreSql Support-->  
  261.     <provider  
  262.       name="PostgreSql0.99.1.0"  
  263.       description="PostgreSql, Npgsql provider V0.99.1.0"  
  264.       enabled="false"  
  265.       assemblyName="Npgsql, Version=0.99.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"  
  266.       connectionClass="Npgsql.NpgsqlConnection"  
  267.       commandClass="Npgsql.NpgsqlCommand"  
  268.       parameterClass="Npgsql.NpgsqlParameter"  
  269.       parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"  
  270.       parameterDbTypeProperty="NpgsqlDbType"  
  271.       dataAdapterClass="Npgsql.NpgsqlDataAdapter"  
  272.       commandBuilderClass="Npgsql.NpgsqlCommandBuilder"  
  273.       usePositionalParameters="false"  
  274.       useParameterPrefixInSql="true"  
  275.       useParameterPrefixInParameter="true"  
  276.       parameterPrefix=":"  
  277.       allowMARS="true"  
  278.   />  
  279.     <!--DB2 Support-->  
  280.     <provider  
  281.       name="iDb2.10"  
  282.       description="IBM DB2 Provider, V 10.0"  
  283.       enabled="false"  
  284.       assemblyName="IBM.Data.DB2.iSeries, Version=10.0.0.0,Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26, Custom=null" connectionClass="IBM.Data.DB2.iSeries.iDB2Connection"  
  285.       commandClass="IBM.Data.DB2.iSeries.iDB2Command"  
  286.       parameterClass="IBM.Data.DB2.iSeries.iDB2Parameter"  
  287.       parameterDbTypeClass="IBM.Data.DB2.iSeries.iDB2DbType"  
  288.       parameterDbTypeProperty="iDB2DbType"  
  289.       dataAdapterClass="IBM.Data.DB2.iSeries.iDB2DataAdapter"  
  290.       commandBuilderClass="IBM.Data.DB2.iSeries.iDB2CommandBuilder"  
  291.       usePositionalParameters="true"  
  292.       useParameterPrefixInSql="false"  
  293.       useParameterPrefixInParameter="false"  
  294.       parameterPrefix=""  
  295.       allowMARS="false"  
  296.   />  
  297.     <provider  
  298.       name="Informix"  
  299.       description="Informix NET Provider, 2.81.0.0"  
  300.       enabled="false"  
  301.       assemblyName="IBM.Data.Informix, Version=2.81.0.0, Culture=neutral, PublicKeyToken=7c307b91aa13d208"  
  302.       connectionClass="IBM.Data.Informix.IfxConnection"  
  303.       commandClass="IBM.Data.Informix.IfxCommand"  
  304.       parameterClass="IBM.Data.Informix.IfxParameter"  
  305.       parameterDbTypeClass="IBM.Data.Informix.IfxType"  
  306.       parameterDbTypeProperty="IfxType"  
  307.       dataAdapterClass="IBM.Data.Informix.IfxDataAdapter"  
  308.       commandBuilderClass="IBM.Data.Informix.IfxCommandBuilder"  
  309.       usePositionalParameters = "true"  
  310.       useParameterPrefixInSql = "false"  
  311.       useParameterPrefixInParameter = "false"  
  312.       useDeriveParameters="false"  
  313.       allowMARS="false"  
  314.     />  
  315.   <provider  
  316.    name="sqlServer2005"  
  317.    enabled="true"  
  318.    description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"  
  319.    assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  320.    connectionClass="System.Data.SqlClient.SqlConnection"  
  321.    commandClass="System.Data.SqlClient.SqlCommand"  
  322.    parameterClass="System.Data.SqlClient.SqlParameter"  
  323.    parameterDbTypeClass="System.Data.SqlDbType"  
  324.    parameterDbTypeProperty="SqlDbType"  
  325.    dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"  
  326.    commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"  
  327.    usePositionalParameters = "false"  
  328.    useParameterPrefixInSql = "true"  
  329.    useParameterPrefixInParameter = "true"  
  330.    parameterPrefix="@"  
  331.    allowMARS="true"  
  332.       />  
  1. </providers>  

 

最后这个是我自己加上的

 

5.编写持久层代码Student.cs

[csharp] view plain copy print?

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  1.   
  1. namespace useribatis  
  1. {  
  2.     public class Student  
  3.     {  
  4.         public int id { setget; }  
  5.         public String username{ setget; }  
  6.         public String password{ setget; }  
  7.     }  
  8. }  

 

6.编写mybatis的映射文件,需要注意的是名称空间要正确并且完整。我这里只写了一个比较简单的

[html] view plain copy print?

  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <sqlMap namespace="Student" xmlns="http://ibatis.apache.org/mapping"  
  1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >  
  1.   <statements>  
  2.     <insert id="create" parameterClass="useribatis.Student">  
  3.       insert into m_student(username,password)  
  4.       values (#username#,#password#)  
  5.     </insert>  
  6.   </statements>  
  1. </sqlMap>  

 

这里建议大家把名称空间写规范些,parameterClass的地方可以使类全名,配置文件的参数我就不在强调了。

 

7.编写SqlMap.config配置文件

[html] view plain copy print?

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper"    
  1.               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  2.   <settings>  
  3.     <!-- 启用缓存 -->  
  4.     <setting cacheModelsEnabled="true"/>  
  5.     <!-- 配置是否使用名称空间这里建议写成true -->  
  6.     <setting useStatementNamespaces="true" />  
  7.   
  8.   </settings>  
  9.   <!-- 引入providers配置文件 -->  
  10.   <providers resource="providers.config"/>  
  11.     <database>  
  12.         <provider name="sqlServer2005" />  
  13.     <!-- 配置连接字符串 -->  
  14.         <dataSource name="SqlServer" connectionString="data source=.\SQLEXPRESS;AttachDbFilename=G:\source\useribatis\useribatis\App_Data\Student.mdf;Integrated Security=True;User Instance=True;" />  
  15.     </database>  
  16.   
  17.     <sqlMaps>  
  18.     <!-- 映射的资源文件 -->  
  19.         <sqlMap resource="Maps/StudentInfo.xml"/>  
  20.     </sqlMaps>  
  21.   
  1. </sqlMapConfig>  

 

8.编写一个类用来插入数据

[html] view plain copy print?

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using IBatisNet.Common;  
  6.   
  7. using IBatisNet.DataMapper;  
  8.   
  9. using IBatisNet.DataMapper.Configuration;  
  10.   
  11. using IBatisNet.Common.Utilities;  
  12.   
  13. using IBatisNet.DataAccess;  
  14.   
  15. using IBatisNet.DataAccess.Configuration;  
  16.   
  17. using IBatisNet.DataAccess.Interfaces;  
  18.   
  19.  using IBatisNet.Common.Logging;  
  20. namespace useribatis  
  21. {  
  22.     public class Insert  
  23.     {  
  24.         public void doCreate() {  
  25.             DomSqlMapBuilder builder = new DomSqlMapBuilder();  
  26.             ISqlMapper Map = builder.Configure("SqlMap.config");  
  27.            // SqlMapper sqlMapper = builder.Configure() as SqlMapper;  
  28.             Student stu=new Student();  
  29.             stu.username="李敏镐3";  
  30.             stu.password="1234567";  
  31.              
  32.             Map.Insert("Student.create", stu);  
  33.         }  
  34.          
  35.     }  
  36. }  
  37. 9.创建单元测试,查看程序是否正确如下所示

  38. 之后选择要测试的方法

  39.  

    点击确定,visual studio就会为我们创建单元测试了。之后为单元测试生成以下解决方案,之后就打开测试窗口

  40.  

    下面就可以开始单元测试了,如下所示点击之后运行选定内容
  41.  

     

    执行完成后来看下数据库是否生成了数据

     

    如果程序出错了可以像下面这样做查看异常信息
  42.  

    到这里程序就写好了,下面我贴一个映射文件出来大家以后开发可以模仿着下面的这个写,注意下名称空间的区别就好

    [html] view plain copy print?

  43. <?xml version="1.0" encoding="UTF-8"?>  
  44. <!DOCTYPE sqlMap   
  45. PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"  
  46. "http://www.ibatis.com/dtd/sql-map-2.dtd">  
  47. <sqlMap namespace="Course">  
  48.   
  49. <resultMap id="resultMap" class="com.junze.huiju.module.course.info.CourseInfo">  
  50.     <result property="REMARK1" column="REMARK1"/>  
  51.     <result property="FCOURSENATURE" column="FCOURSENATURE"/>  
  52.     <result property="REMARK2" column="REMARK2"/>  
  53.     <result property="FCOURSENUM" column="FCOURSENUM"/>  
  54.     <result property="FID" column="FID"/>  
  55.     <result property="FNAME" column="FNAME"/>  
  56. </resultMap>  
  57.   
  58. <sql id="sqlwhere">     
  59.     <dynamic>  
  60.         <isNotEmpty prepend="and" property="REMARK1">  
  61.             A.REMARK1 like #REMARK1#  
  62.         </isNotEmpty>  
  63.         <isGreaterThan prepend="and" property="FCOURSENATURE" compareValue="0">  
  64.             A.FCOURSENATURE = #FCOURSENATURE#  
  65.         </isGreaterThan>  
  66.         <isNotEmpty prepend="and" property="REMARK2">  
  67.             A.REMARK2 like #REMARK2#  
  68.         </isNotEmpty>  
  69.         <isGreaterThan prepend="and" property="FCOURSENUM" compareValue="0">  
  70.             A.FCOURSENUM = #FCOURSENUM#  
  71.         </isGreaterThan>  
  72.         <isGreaterThan prepend="and" property="FID" compareValue="0">  
  73.             A.FID = #FID#  
  74.         </isGreaterThan>  
  75.         <isNotEmpty prepend="and" property="FNAME">  
  76.             A.FNAME like #FNAME#  
  77.         </isNotEmpty>  
  78.         <isNotEmpty prepend="and" property="containIds">  
  79.             A.FID NOT IN ($containIds$)  
  80.         </isNotEmpty>  
  81.     </dynamic>  
  82. </sql>  
  83.   
  84.  <!--getInfoByID-->  
  85. <select id="getInfoByID" resultMap="resultMap" parameterClass="int">  
  86.  select A.*  
  87.      from M_COURSE A where A.FID = #id#  
  88. </select>  
  89.   
  90.   
  91.  <!--read-->  
  92. <select id="read" resultMap="resultMap" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  93.  select A.*  
  94.      from M_COURSE A where 1=1   
  95.      <include refid="sqlwhere"/>  
  96. </select>  
  97.   
  98.  <!--getlist-->  
  99. <select id="getList" resultMap="resultMap" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  100.  select * from (select rownum numrow ,A.* from (select A.*   
  101.      from M_COURSE A where 1=1   
  102.      <include refid="sqlwhere"/>  
  103.          Order By A.FID   
  104.  ) A) where numrow > $startRow$ and numrow < $endRow$  
  105. </select>  
  106.   
  107.  <!--getAlllist-->  
  108. <select id="getAllList" resultMap="resultMap" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  109.  select A.*  
  110.      from M_COURSE A where 1=1   
  111.      <include refid="sqlwhere"/>  
  112.      Order By A.FID Desc  
  113. </select>  
  114.   
  115.  <!--getBusinessList-->  
  116. <select id="getBusinessList" resultMap="resultMap" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  117.  select A.*  
  118.      from M_COURSE A where 1=1   
  119.      <include refid="sqlwhere"/>  
  120.      Order By A.FID Desc  
  121. </select>  
  122.   
  123.  <!--getCount-->  
  124. <select id="getCount" resultClass="java.lang.Integer" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  125.  select count(*) from M_COURSE A where 1=1   
  126.      <include refid="sqlwhere"/>  
  127. </select>  
  128.   
  129.  <!--create-->  
  130. <insert id="create" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  131. <selectKey resultClass="int" keyProperty="FID">  
  132.             select SEQ_M_COURSE.nextVal as value from dual  
  133.  </selectKey>     
  134.  insert into M_COURSE(REMARK1,FCOURSENATURE,REMARK2,FCOURSENUM,FID,FNAME)   
  135.  values (#REMARK1:VARCHAR2#,#FCOURSENATURE#,#REMARK2:VARCHAR2#,#FCOURSENUM#,#FID#,#FNAME:VARCHAR2#)  
  136. </insert>  
  137.   
  138.  <!--update -->  
  139. <update id="update" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  140.  update M_COURSE set REMARK1= #REMARK1:VARCHAR2#,  
  141.         FCOURSENATURE = #FCOURSENATURE#,  
  142.         REMARK2 = #REMARK2:VARCHAR2#,  
  143.         FCOURSENUM = #FCOURSENUM#,  
  144.         FID = #FID#,  
  145.         FNAME = #FNAME:VARCHAR2#  
  146.  where FID = #FID#  
  147. </update>  
  148.   
  149.  <!--deleteByID-->  
  150. <delete id="deleteByID" parameterClass="int">  
  151.  delete from M_COURSE where FID = #id#  
  152. </delete>  
  153.   
  154.  <!--deleteByCondition-->  
  155. <delete id="deleteByCondition" parameterClass="com.junze.huiju.module.course.info.CourseInfo">  
  156.  delete from M_COURSE A where 1=1   
  157.      <include refid="sqlwhere"/>  
  158. </delete>  
  159.   
  160. </sqlMap>  
  161.  

    想这样的配置文件应该算是比较完整的了,大家练习一下吧。代码在我的资源里大家自己去下载。如果有写的不对的大家可以拍砖。

     

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ycc9957/article/details/89335766

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法