柚子快报激活码778899分享:IBatis 简易框架搭建
1、练习框架
ibatis主要dll介绍
IBatisNet.Common.dll
由DataAccess和DataMapper组成的共享程序集
IBatisNet.Common.Logging.Log4Net.dll
Log4Net集成记录器,和Log4Net配合使用
IBatisNet.DataMapper.dll
DataMapper主要框架
IBatisNet.DataAccess.dll
DataAccess框架
2、IBatisDao
1、DaoBase.cs Ibatis接口的封装
namespace IBatisDao
{
public class DaoBase
{
private static ISqlMapper SqlMap;
///
/// 构造函数
///
///
static DaoBase()
{
if (SqlMap == null)
{
SqlMap = SqlMapperCreater.SqlMap;
}
}
///
/// 开始事务
///
protected void BeginTransaction()
{
try
{
SqlMap.BeginTransaction();
}
catch
{
SqlMap.RollBackTransaction();
SqlMap.BeginTransaction();
}
}
///
/// 提交事务
///
protected void CommitTransaction()
{
SqlMap.CommitTransaction();
}
///
/// 回滚事务
///
protected void RollBackTransaction()
{
SqlMap.RollBackTransaction();
}
///
/// 批量保存多个实体.
///
/// 实体列表
/// insert语句的id
/// update语句的id
/// delete语句的id
protected void Save(IList
{
//删除
foreach (T t in list)
{
if (t.EntityState == EntityStateEnum.Deleted && !string.IsNullOrEmpty(deleteCmdId))
{
this.Delete(deleteCmdId, t);
}
}
//更新
foreach (T t in list)
{
if (t.EntityState == EntityStateEnum.Modified && !string.IsNullOrEmpty(updateCmdId))
{
this.Update(updateCmdId, t);
}
}
//新增
foreach (T t in list)
{
if (t.EntityState == EntityStateEnum.Added && !string.IsNullOrEmpty(insertCmdId))
{
this.Insert(insertCmdId, t);
}
}
}
///
/// 保单个实体
///
/// 实体列表
/// insert语句的id
/// update语句的id
/// delete语句的id
protected void Save(T obj, string insertCmdId, string updateCmdId, string deleteCmdId)
{
//删除
if (obj.EntityState == EntityStateEnum.Deleted && !string.IsNullOrEmpty(deleteCmdId))
{
this.Delete(deleteCmdId, obj);
}
//更新
if (obj.EntityState == EntityStateEnum.Modified && !string.IsNullOrEmpty(updateCmdId))
{
this.Update(updateCmdId, obj);
}
//新增
if (obj.EntityState == EntityStateEnum.Added && !string.IsNullOrEmpty(insertCmdId))
{
this.Insert(insertCmdId, obj);
}
}
///
/// 通用执行Select语句
///
/// 语句ID
/// 语句所需要的参数
///
protected IList
{
return SqlMap.QueryForList
}
///
/// 通用执行skip Select语句
///
/// 语句ID
/// 语句所需要的参数
/// 忽略个数
/// 最大个数
///
protected IList
{
return SqlMap.QueryForList
}
///
/// 通用执行Select语句
///
/// 语句ID
/// 语句所需要的参数
///
protected T SelectOne(string tag, object paramObject)
{
return SqlMap.QueryForObject
}
///
/// 通用执行Update语句(强制检查数据并发)
///
/// 语句ID
/// 语句所需要的参数
///
protected int Update(string tag, T paramObject)
{
return this.Update(tag, paramObject, true);
}
///
/// 通用执行Update语句
///
/// 语句ID
/// 语句所需要的参数
///
protected int Update(string tag, object paramObject)
{
int iReturn = SqlMap.Update(tag, paramObject);
// 若更新出现并发且要检查并发,则抛出对应的异常
if (iReturn <= 0)
{
throw new Exception("数据已被修改,请重新加载.");
}
// 改变状态为Unchanged
return iReturn;
}
///
/// 通用执行Update语句
///
/// 语句ID
/// 语句所需要的参数
/// 是否要检查数据并发
///
protected int Update(string tag, T paramObject, bool checkConcurrency)
{
int iReturn = SqlMap.Update(tag, paramObject);
// 若更新出现并发且要检查并发,则抛出对应的异常
if (iReturn <= 0 && checkConcurrency)
{
throw new Exception("数据已被修改,请重新加载.");
}
// 改变状态为Unchanged
paramObject.EntityState = EntityStateEnum.Unchanged;
return iReturn;
}
///
/// 通用执行Update语句
///
/// 语句ID
/// 语句所需要的参数
/// 是否要检查数据并发
///
protected int Update(string tag, object paramObject, bool checkConcurrency)
{
int iReturn = SqlMap.Update(tag, paramObject);
// 若更新出现并发且要检查并发,则抛出对应的异常
if (iReturn <= 0 && checkConcurrency)
{
throw new Exception("数据已被修改,请重新加载.");
}
return iReturn;
}
///
/// 通用执行Deelte语句
///
/// 语句ID
/// 语句所需要的参数
///
protected int Delete(string tag, T paramObject)
{
return SqlMap.Delete(tag, paramObject);
}
///
/// 通用执行Insert语句
///
/// 语句ID
/// 语句所需要的参数
///
protected object Insert(string tag, T paramObject)
{
object result = SqlMap.Insert(tag, paramObject);
paramObject.EntityState = EntityStateEnum.Unchanged;
return result;
}
///
/// 通用执行Insert语句
///
/// 语句ID
/// 语句所需要的参数
///
protected object Insert(string tag, object paramObject)
{
object result = SqlMap.Insert(tag, paramObject);
return result;
}
#region GetSql/GetDataTable
///
/// 通用得到参数化后的SQL(xml文件中参数要使用$标记的占位参数)
///
/// 语句ID
/// 语句所需要的参数
///
protected string GetSql(string tag, object paramObject)
{
string sql = GetPreparedSql(tag, paramObject);
//ServiceObject.Log.Logs.DebugLog(tag + ": " + sql);
return sql;
}
///
/// 返回结果集中的第一行的第一列
///
/// 语句ID
/// 语句所需要的参数
///
protected object QueryScalar(string tag, object paramObject)
{
bool isSessionLocal = false;
object result;
if (SqlMap.LocalSession == null)
{
isSessionLocal = true;
SqlMap.OpenConnection();
}
//记录SQL语句
GetSql(tag, paramObject);
try
{
IDbCommand cmd = GetDbCommand(tag, paramObject);
result = cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw new Exception("Can't QueryScalar, tag = " + tag, ex);
}
finally
{
if (isSessionLocal)
{
SqlMap.CloseConnection();
}
}
return result;
}
///
/// 通用的以DataSet的方式得到Select的结果(xml文件中参数要使用$标记的占位参数)
///
/// 语句ID
/// 语句所需要的参数
///
protected DataSet GetDataSet(string tag, object paramObject)
{
bool isSessionLocal = false;
DataSet result = new DataSet(); ;
if (SqlMap.LocalSession == null)
{
isSessionLocal = true;
SqlMap.OpenConnection();
}
try
{
IDbCommand cmd = GetDbCommand(tag, paramObject);
IDbDataAdapter adapter = SqlMap.LocalSession.CreateDataAdapter(cmd);
adapter.Fill(result);
}
catch (Exception ex)
{
throw new Exception("Can't GetDataSet, tag = " + tag, ex);
}
finally
{
if (isSessionLocal)
{
SqlMap.CloseConnection();
}
}
return result;
}
///
/// 通用的以DataTable的方式得到Select的结果(xml文件中参数要使用$标记的占位参数)
///
/// 语句ID
/// 语句所需要的参数
///
protected DataTable GetDataTable(string tag, object paramObject)
{
return GetDataSet(tag, paramObject).Tables[0];
}
///
/// 通用的以DataTable的方式得到skip Select的结果(xml文件中参数要使用$标记的占位参数)
///
/// 语句ID
/// 语句所需要的参数
/// 忽略个数
/// 最大个数
///
protected DataTable GetDataTable(string tag, object paramObject, int skipResults, int maxResults)
{
bool isSessionLocal = false;
DataSet result = new DataSet();
if (SqlMap.LocalSession == null)
{
isSessionLocal = true;
SqlMap.OpenConnection();
}
//记录SQL语句
GetSql(tag, paramObject);
try
{
IDbCommand cmd = GetDbCommand(tag, paramObject);
DbDataAdapter adapter = SqlMap.LocalSession.CreateDataAdapter(cmd) as DbDataAdapter;
if (adapter == null)
{
throw new NotSupportedException("Not support skip GetDataTable");
}
adapter.Fill(result, skipResults, maxResults, "result");
}
catch (Exception ex)
{
throw new Exception("Can't GetDataTable, tag = " + tag, ex);
}
finally
{
if (isSessionLocal)
{
SqlMap.CloseConnection();
}
}
return result.Tables["result"];
}
private IDbCommand GetDbCommand(string statementName, object paramObject)
{
IStatement statement = SqlMap.GetMappedStatement(statementName).Statement;
IMappedStatement mapStatement = SqlMap.GetMappedStatement(statementName);
ISqlMapSession session = new SqlMapSession(SqlMap);
if (SqlMap.LocalSession != null)
{
session = SqlMap.LocalSession;
}
else
{
session = SqlMap.OpenConnection();
}
RequestScope request = statement.Sql.GetRequestScope(mapStatement, paramObject, session);
mapStatement.PreparedCommand.Create(request, session, statement, paramObject);
IDbCommand command = request.IDbCommand;
// Ibatis 这里做了个装饰,所以得到的类型不是SqlCommand之类的类型
// 只能暂时使用反射把它装饰的类型(即真实类型)反射出来
Type t = command.GetType();
FieldInfo commandField = t.GetField("_innerDbCommand", BindingFlags.Instance | BindingFlags.NonPublic);
IDbCommand innerDbCommand = commandField.GetValue(command) as IDbCommand;
return innerDbCommand; // request.IDbCommand;
}
///
/// 获取查询语句
///
///
///
///
protected string GetPreparedSql(string statementName, object parameterObject)
{
IMappedStatement mappedStatement = SqlMap.GetMappedStatement(statementName);
ISqlMapSession localSession = SqlMap.LocalSession;
IStatement statement = mappedStatement.Statement;
if (localSession == null)
{
localSession = new SqlMapSession(SqlMap);
}
return statement.Sql.GetRequestScope(mappedStatement, parameterObject, localSession).PreparedStatement.PreparedSql;
}
protected IList
{
return SqlMap.QueryWithRowDelegate
}
#endregion
}
}
2、SqlMapperCreater.cs 初始化Ibatis操作类
public class SqlMapperCreater
{
protected static ISqlMapper m_sqlMap = null;
public static ISqlMapper SqlMap
{
get
{
if (m_sqlMap == null)
{
string fileName = "Config\\sqlMap.config";
DomSqlMapBuilder builder = new DomSqlMapBuilder();
m_sqlMap = builder.Configure(fileName);
}
return m_sqlMap;
}
}
}
3、IBatisDataAccess
1、TableAccess.cs 数据库访问层
namespace IBatisDataAccess
{
public class TableAccess : DaoBase
{
public object Insert(TableEntity obj)
{
return base.Insert("TableEntity_Insert", obj);
}
public IList
{
return base.Select("TableEntity_Select", obj);
}
public IList
{
return base.QueryWithRowDelegate("TableEntity_Select", obj, new Action
}
public DataTable GetDataTable(TableEntity obj)
{
return base.GetDataTable("TableEntity_Select_Datatable", obj);
}
public void RowDelegate(object obj, object parameterObject, IList
{
TableEntity tb = obj as TableEntity;
tb.COL_1 = 77;
list.Add(tb);
}
}
}
4、IBatisEntity
1、EntityBase.cs 实体基类
namespace IBatisEntity
{
///
/// 实体基类
///
[Serializable]
public class EntityBase
{
// Fields
protected EntityBase OldValue;
protected EntityStateEnum _entityState = EntityStateEnum.Unchanged;
///
/// 实体的数据版本,默认为未改变
///
public EntityStateEnum EntityState
{
get { return _entityState; }
set { _entityState = value; }
}
///
/// 默认构造函数
///
protected EntityBase()
{
}
///
/// 实现克隆接口
///
///
public virtual object Clone()
{
MemoryStream serializationStream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(serializationStream, this);
serializationStream.Position = 0;
return formatter.Deserialize(serializationStream);
}
///
/// 在实体与数据表做相互转换时,制定表的列名称模式
///
public enum ColumnNameEnum
{
///
/// 数据库对应列名称
///
DBName = 1,
///
/// 实体对应字段名称
///
PropertyName = 2
}
}
///
/// 实体版本枚举
///
public enum EntityStateEnum
{
///
/// 新增
///
Added = 1,
///
/// 被修改
///
Modified = 2,
///
/// 被删除
///
Deleted = 3,
///
/// 未修改
///
Unchanged = 4,
///
/// 新增的但是未加入任何table中
///
Detached = 5
}
}
2、TableEntity.cs 实体类
namespace IBatisEntity
{
[Serializable]
public class TableEntity : EntityBase
{
public long ID { get; set; }
public int COL_1 { get; set; }
public int COL_2 { get; set; }
public int COL_3 { get; set; }
public DateTime REFRESH_DATE { get; set; }
}
}
5、IBatisApp界面层访问
1、Form1.cs
namespace IBatisApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TableAccess tableAccess = new TableAccess();
object a = tableAccess.Insert(new TableEntity() { COL_1 = -1, COL_2 = -2, COL_3 = -3, REFRESH_DATE = DateTime.Now });
MessageBox.Show(a.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
TableAccess tableAccess = new TableAccess();
IList
a = tableAccess.SelectWithRowDelegate(new TableEntity() { ID = 66 });
MessageBox.Show(a.Count.ToString());
DataTable dt = tableAccess.GetDataTable(new TableEntity() { ID = 66 });
}
}
}
6、xml文件配置
1、providers.config 提供了一些支持的数据库版本信息
xmlns="http://ibatis.apache.org/providers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> name="sqlServer1.0" description="Microsoft SQL Server, provider V1.0.3300.0 in framework .NET V1.0" enabled="false" assemblyName="System.Data, Version=1.0.3300.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" /> name="sqlServer1.1" description="Microsoft SQL Server, provider V1.0.5000.0 in framework .NET V1.1" enabled="false" default="true" assemblyName="System.Data, Version=1.0.5000.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" /> name="sqlServer2.0" enabled="false" description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" assemblyName="System.Data, Version=2.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" /> name="sqlServer2005" enabled="false" description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" assemblyName="System.Data, Version=2.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" /> description="OleDb, provider V1.0.5000.0 in framework .NET V1.1" enabled="false" assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OleDb.OleDbConnection" commandClass="System.Data.OleDb.OleDbCommand" parameterClass="System.Data.OleDb.OleDbParameter" parameterDbTypeClass="System.Data.OleDb.OleDbType" parameterDbTypeProperty="OleDbType" dataAdapterClass="System.Data.OleDb.OleDbDataAdapter" commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix="" allowMARS="false" /> description="OleDb, provider V2.0.0.0 in framework .NET V2" enabled="false" assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OleDb.OleDbConnection" commandClass="System.Data.OleDb.OleDbCommand" parameterClass="System.Data.OleDb.OleDbParameter" parameterDbTypeClass="System.Data.OleDb.OleDbType" parameterDbTypeProperty="OleDbType" dataAdapterClass="System.Data.OleDb.OleDbDataAdapter" commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix="" allowMARS="false" /> name="Odbc1.1" description="Odbc, provider V1.0.5000.0 in framework .NET V1.1" enabled="false" assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.Odbc.OdbcConnection" commandClass="System.Data.Odbc.OdbcCommand" parameterClass="System.Data.Odbc.OdbcParameter" parameterDbTypeClass="System.Data.Odbc.OdbcType" parameterDbTypeProperty="OdbcType" dataAdapterClass="System.Data.Odbc.OdbcDataAdapter" commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix="@" allowMARS="false" /> name="Odbc2.0" description="Odbc, provider V2.0.0.0 in framework .NET V2" enabled="false" assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.Odbc.OdbcConnection" commandClass="System.Data.Odbc.OdbcCommand" parameterClass="System.Data.Odbc.OdbcParameter" parameterDbTypeClass="System.Data.Odbc.OdbcType" parameterDbTypeProperty="OdbcType" dataAdapterClass="System.Data.Odbc.OdbcDataAdapter" commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix="@" allowMARS="false" /> name="oracle9.2" description="Oracle, Oracle provider V9.2.0.401" enabled="false" assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection" commandClass="Oracle.DataAccess.Client.OracleCommand" parameterClass="Oracle.DataAccess.Client.OracleParameter" parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType" parameterDbTypeProperty="OracleDbType" dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter" commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="false" parameterPrefix=":" useDeriveParameters="false" allowMARS="false" /> name="oracle10.1" description="Oracle, oracle provider V10.1.0.301" enabled="false" assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection" commandClass="Oracle.DataAccess.Client.OracleCommand" parameterClass="Oracle.DataAccess.Client.OracleParameter" parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType" parameterDbTypeProperty="OracleDbType" dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter" commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":" useDeriveParameters="false" allowMARS="false" /> name="oracleClient1.0" description="Oracle, Microsoft provider V1.0.5000.0" enabled="false" assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection" commandClass="System.Data.OracleClient.OracleCommand" parameterClass="System.Data.OracleClient.OracleParameter" parameterDbTypeClass="System.Data.OracleClient.OracleType" parameterDbTypeProperty="OracleType" dataAdapterClass="System.Data.OracleClient.OracleDataAdapter" commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="false" parameterPrefix=":" allowMARS="false" /> name="oracleClient2.0" description="Oracle, Microsoft provider V2.0.50727.42" enabled="true" assemblyName="System.Data.OracleClient, Version=2.0.50727.42, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection" commandClass="System.Data.OracleClient.OracleCommand" parameterClass="System.Data.OracleClient.OracleParameter" parameterDbTypeClass="System.Data.OracleClient.OracleType" parameterDbTypeProperty="OracleType" dataAdapterClass="System.Data.OracleClient.OracleDataAdapter" commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="false" parameterPrefix=":"/> name="ByteFx" description="MySQL, ByteFx provider V0.7.6.15073" enabled="false" assemblyName="ByteFX.MySqlClient, Version=0.7.6.15073, Culture=neutral, PublicKeyToken=f2fef6fed1732fc1" connectionClass="ByteFX.Data.MySqlClient.MySqlConnection" commandClass="ByteFX.Data.MySqlClient.MySqlCommand" parameterClass="ByteFX.Data.MySqlClient.MySqlParameter" parameterDbTypeClass="ByteFX.Data.MySqlClient.MySqlDbType" parameterDbTypeProperty="MySqlDbType" dataAdapterClass="ByteFX.Data.MySqlClient.MySqlDataAdapter" commandBuilderClass="ByteFX.Data.MySqlClient.MySqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@" allowMARS="false" /> name="MySql" description="MySQL, MySQL provider 1.0.7.30072" enabled="false" assemblyName="MySql.Data, Version=1.0.7.30072, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection" commandClass="MySql.Data.MySqlClient.MySqlCommand" parameterClass="MySql.Data.MySqlClient.MySqlParameter" parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType" parameterDbTypeProperty="MySqlDbType" dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter" commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="?" allowMARS="false" /> description="SQLite, SQLite.NET provider V0.21.1869.3794" enabled="false" assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c" connectionClass="Finisar.SQLite.SQLiteConnection" commandClass="Finisar.SQLite.SQLiteCommand" parameterClass="Finisar.SQLite.SQLiteParameter" parameterDbTypeClass="System.Data.DbType, System.Data" parameterDbTypeProperty="DbType" dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter" commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@" setDbParameterPrecision="false" setDbParameterScale="false" allowMARS="false" /> description="SQLite, SQLite.NET provider V1.0.43.0" enabled="false" assemblyName="System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" connectionClass="System.Data.SQLite.SQLiteConnection" commandClass="System.Data.SQLite.SQLiteCommand" parameterClass="System.Data.SQLite.SQLiteParameter" parameterDbTypeClass="System.Data.SQLite.SQLiteType" parameterDbTypeProperty="DbType" dataAdapterClass="System.Data.SQLite.SQLiteDataAdapter" commandBuilderClass="System.Data.SQLite.SQLiteCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@" setDbParameterPrecision="false" setDbParameterScale="false" allowMARS="false" /> name="Firebird1.7" description="Firebird, Firebird SQL .NET provider V1.7.0.33200" enabled="false" assemblyName="FirebirdSql.Data.Firebird, Version=1.7.0.33200, Culture=neutral, PublicKeyToken=fa843d180294369d" connectionClass="FirebirdSql.Data.Firebird.FbConnection" commandClass="FirebirdSql.Data.Firebird.FbCommand" parameterClass="FirebirdSql.Data.Firebird.FbParameter" parameterDbTypeClass="FirebirdSql.Data.Firebird.FbDbType" parameterDbTypeProperty="FbDbType" dataAdapterClass="FirebirdSql.Data.Firebird.FbDataAdapter" commandBuilderClass="FirebirdSql.Data.Firebird.FbCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@" allowMARS="false" /> name="PostgreSql0.99.1.0" description="PostgreSql, Npgsql provider V0.99.1.0" enabled="false" assemblyName="Npgsql, Version=0.99.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" connectionClass="Npgsql.NpgsqlConnection" commandClass="Npgsql.NpgsqlCommand" parameterClass="Npgsql.NpgsqlParameter" parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType" parameterDbTypeProperty="NpgsqlDbType" dataAdapterClass="Npgsql.NpgsqlDataAdapter" commandBuilderClass="Npgsql.NpgsqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":" allowMARS="true" /> name="iDb2.10" description="IBM DB2 Provider, V 10.0" enabled="false" assemblyName="IBM.Data.DB2.iSeries, Version=10.0.0.0,Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26, Custom=null" connectionClass="IBM.Data.DB2.iSeries.iDB2Connection" commandClass="IBM.Data.DB2.iSeries.iDB2Command" parameterClass="IBM.Data.DB2.iSeries.iDB2Parameter" parameterDbTypeClass="IBM.Data.DB2.iSeries.iDB2DbType" parameterDbTypeProperty="iDB2DbType" dataAdapterClass="IBM.Data.DB2.iSeries.iDB2DataAdapter" commandBuilderClass="IBM.Data.DB2.iSeries.iDB2CommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix="" allowMARS="false" /> name="Informix" description="Informix NET Provider, 2.81.0.0" enabled="false" assemblyName="IBM.Data.Informix, Version=2.81.0.0, Culture=neutral, PublicKeyToken=7c307b91aa13d208" connectionClass="IBM.Data.Informix.IfxConnection" commandClass="IBM.Data.Informix.IfxCommand" parameterClass="IBM.Data.Informix.IfxParameter" parameterDbTypeClass="IBM.Data.Informix.IfxType" parameterDbTypeProperty="IfxType" dataAdapterClass="IBM.Data.Informix.IfxDataAdapter" commandBuilderClass="IBM.Data.Informix.IfxCommandBuilder" usePositionalParameters = "true" useParameterPrefixInSql = "false" useParameterPrefixInParameter = "false" useDeriveParameters="false" allowMARS="false" />
2、sqlMap.config sqlmap的基本信息
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
3、DataBase.config 数据库链接字符串
4、TableEntity.xml 具体操作的xml
select pto_kit_s.nextval as value from dual
INSERT INTO A_TEST_1
(ID, COL_1, COL_2, COL_3)
VALUES
(#ID#, #COL_1#, #COL_2#, #COL_3#)
select id,
col_1,
col_2,
col_3,
refresh_date
from scp.A_TEST_1 t where id=#ID#
select id,
col_1,
col_2,
col_3,
refresh_date
from A_TEST_1 t where id=#ID#
select pto_kit_s.nextval as value from dual
INSERT INTO A_TEST_1
(ID, COL_1, COL_2, COL_3)
VALUES
(#ID#, #COL_1#, #COL_2#, #COL_3#)
select id,
col_1,
col_2,
col_3,
refresh_date
from scp.A_TEST_1 t where id=#ID#
select id,
col_1,
col_2,
col_3,
refresh_date
from A_TEST_1 t where id=#ID#
柚子快报激活码778899分享:IBatis 简易框架搭建
参考链接
发表评论