MyBatis.Net的一些记录
来源:互联网 发布:玩物志小程序源码下载 编辑:程序博客网 时间:2024/06/06 07:09
1、配置文件监控
在MyBatis.Net的帮助文档中,有一段关于创建ISqlMap的代码,而这段代码在dll中是已经提供了的,代码如下
ConfigureHandler handler = new ConfigureHandler(Configure);DomSqlMapBuilder builder = new DomSqlMapBuilder();_mapper = builder.ConfigureAndWatch(handler);ConfigureAndWatch这个方法是监控文件变化,好吧,坑来了
1.1)、这个方法里面会去调用两个静态方法
ConfigWatcherHandler.ClearFilesMonitored();//清除所有的文件监控ConfigWatcherHandler.AddFileToWatch();//重新添加要监控的文件(监控还未开始)
所以如果要实现多数据库的监控,嘿嘿,只要用了builder.ConfigureAndWatch,之前的文件监控都会被清空,所以如果多数据库,要么自己实现文件监控以及通知,要么就要实例多个DomSqlMapBuilder分别监控,甚至干脆就不要监控......
1.2)、ConfigureHandler,这是一个委托,当监控的文件发生变化时调用,该委托存在一个object参数,但你知道这个传递过来的object实际是什么吗?
/// <summary>/// Callback called when the SqlMap.config file has changed./// </summary>/// <param name="obj">The <see cref="StateConfig"/> object.</param>public static void OnConfigFileChange(object obj){ StateConfig state = (StateConfig)obj; state.ConfigureHandler( null );}居然是null...当然,单数据库文件监控这部分其实也无所谓了......
2、Ibatis.DataMapper.1.6.2版本中发现的bug
2.1)statements配置节点下的generate,这个xml参数是用来自动生成insert,update,delete对应的sql语句的,大多数情况下它都是对的,但在update时,它偶尔会出错,具体就是生成的@param与传递的param不一致,碰到这种情况,就只能自己写sql了,当然,为了parameterMap还能起作用,我会将自己写的sql中直接写上相应顺序的@param1,@param2...否则就只能去掉parameterMap,然后用#pro#的方式了
2.2)跟2.1相关,如果指定了parameterMap,那么如果还使用##或者$ $的方式,mybatis不会自动替换##以及$ $对应的部分。。。但神奇的是它还会传入@param1,@param2...
3、DataMapper的一些技巧
3.1)在SqlMap.config中可以不指定实际的connectionString,只要输入不为空的字符串就可以,实际可以在应用中修改连接字符串,一种方式是在ISqlMapper被实例化之前通过DomSqlMapBuilder,这个在官方文档中有,还有一个就是在实例化后修改,代码如下:
Mapper.Instance().DataSource.ConnectionString = "ConnectionString";这样我们就可以对连接字符串进行加密了,当然这样之后,也就必须提供一个统一的获取ISqlMapper的方法了
3.2)查询返回复杂实体,包含对于N+1问题如何处理,这个在官方文档中也有,还是蛮详细的,就不记录代码了
4、数据库支持
增加Frame4.0支持,其它虽未验证,但应该也是一致的
<provider name="sqlServer4.0" 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" />
- MyBatis.Net的一些记录
- mybatis中的一些记录
- .net版本名字的一些记录
- 初学Asp.net关于GridView的一些学习记录
- .net中程序集的一些记录文档
- VS.Net中使用ZedGraph控件的一些记录
- 关于asp.net mvc JavaScriptResult的一些用法记录
- MyBatis的一些小問題
- Mybatis的一些优点
- MyBatis的一些资料
- mybatis的一些实用技巧
- mybatis的一些笔记
- mybatis的一些配置
- Mybatis的一些总结
- MyBatis的一些学习心得
- mybatis的一些心得
- mybatis的一些整理
- mybatis的一些笔记
- Slqite3 The database file is locked
- VB程序多国语言的实现
- 关于Zbar和ZXing这两个无比强大的二维码和条形码识别工具
- Spring MVC 教程,快速入门,深入分析
- MFC OpenCV编译程序时经常出现的一些错误
- MyBatis.Net的一些记录
- PagerSlidingTabStrip+换主题
- JVM调优总结:分代垃圾回收详述
- [Linux]系统目录结构
- Java记事本
- 嵌入式linux, CAN 驱动有关问题
- sTM32F10X SPI操作flash MX25L64读写数据
- vs重定向输出
- spring mvc重复提交解决办法