`
iwindyforest
  • 浏览: 230067 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MyBatis(3.2.7)的缺点

阅读更多

以下是我用MyBatis感觉不爽的地方, 当然也有可能是我不够了解, 如果有错误, 请指正

 

  • 不同命名空间的<resultMap><sql>等声明不能共享
  • 默认注册(org.apache.ibatis.type.TypeAliasRegistry)的类型别名太少, 比如想用Set但是没有注册
  • Configuraton XML默认不支持第三方Datasource, <dataSource>标签只能选择UNPOOLED , POOLED, JNDI
  • 缓存设置(比如mybatis-ehcache)无法指定缓存配置文件的位置,只能放在classpath根目录下
  • 缓存还是跟Hibernate一样, 造成数据改变的所有操作都会让命名空间的所有缓存清除, 不过这个也没办法, 毕竟作为框架, MyBatis并不知道更新的数据会影响到哪些缓存.
  • 代码注释太少, 太多的方法都没有注释, 如果一个应用没有注释倒是可以理解毕竟只是少数人维护, 最为一个框架, 注释太少让人看起来就吃力了就会阻碍这个框架的发展.
  • 最后一点, 其实真的没有像官方说的那样同JDBC比较会省去95%的代码量. 如果没有用生成器(也不好用), mapper xml, mapper java, 对应的service, service impl都要写代码量还是不少的.

 

比较好的就是那个动态SQL功能还不错, 如果不同空间的<resultMap><sql>能重用的话就好了, 毕竟有些查询时需要用到多个表的, 但也不方便把多个表的操作都写到一个mapper文件里, 不能重用就导致很多定义是重复的.

 

 

 

 

0
2
分享到:
评论
9 楼 iwindyforest 2014-05-22  
iwindyforest 写道
iwindyforest 写道
撒哈一拉威 写道
奉劝楼主有空看看官方文档和别人总结的经验吧,别闭门造车了。对于一个新手来说最忌讳的就是一叶障目。

呵呵 , 打嘴架, 喷人, 很容易,
有意见那能信服人的代码, 文档, 说话.
官方文档:
1. 关于DataSource
http://mybatis.github.io/mybatis-3/configuration.html#environments
如何支持第三方, 我今天的post:
http://ivarchen.iteye.com/blog/2069522
2.关于缓存的设置:
http://mybatis.github.io/ehcache-cache/index.html
Users that need to configure Ehcache through XML configuration file, have to put in the classpath the /ehcache.xml resource. Please refer to the official Ehcache documentation to know more details.
org.mybatis.caches.ehcache.EhcacheCache源代码
 private static final CacheManager CACHE_MANAGER = CacheManager.create();

别有事没事秀优越感, 那样只会显示你的肤浅.


Datasoure支持第三方?

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	  	<property name="dataSource" ref="dataSource"/>
	 	<property name="typeAliasesPackage" value="org.frame"/>
	 	<!-- 自动扫描映射文件 --> 
	  	<property name="mapperLocations" value="classpath:/org/frame/module/music/mapper/*Mapper.xml"/>
	</bean>

缓存只支持classpath根目录?
<diskStore path="java.io.tmpdir/ehcache" />

呵呵


你理解错了吧?
那个缓存的配置文件是这玩意?
<diskStore path="java.io.tmpdir/ehcache" />
还有原来可以用Spring来注入DataSource呀?
原来还有Spring这个东西来指定DataSource, 和缓存设置啊?
告诉我这跟MyBatis本身的设计有什么关系啊, 我的大婶?
8 楼 撒哈一拉威 2014-05-22  
iwindyforest 写道
撒哈一拉威 写道
奉劝楼主有空看看官方文档和别人总结的经验吧,别闭门造车了。对于一个新手来说最忌讳的就是一叶障目。

呵呵 , 打嘴架, 喷人, 很容易,
有意见那能信服人的代码, 文档, 说话.
官方文档:
1. 关于DataSource
http://mybatis.github.io/mybatis-3/configuration.html#environments
如何支持第三方, 我今天的post:
http://ivarchen.iteye.com/blog/2069522
2.关于缓存的设置:
http://mybatis.github.io/ehcache-cache/index.html
Users that need to configure Ehcache through XML configuration file, have to put in the classpath the /ehcache.xml resource. Please refer to the official Ehcache documentation to know more details.
org.mybatis.caches.ehcache.EhcacheCache源代码
 private static final CacheManager CACHE_MANAGER = CacheManager.create();

别有事没事秀优越感, 那样只会显示你的肤浅.


Datasoure支持第三方?

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	  	<property name="dataSource" ref="dataSource"/>
	 	<property name="typeAliasesPackage" value="org.frame"/>
	 	<!-- 自动扫描映射文件 --> 
	  	<property name="mapperLocations" value="classpath:/org/frame/module/music/mapper/*Mapper.xml"/>
	</bean>

缓存只支持classpath根目录?
<diskStore path="java.io.tmpdir/ehcache" />

呵呵
7 楼 iwindyforest 2014-05-22  
撒哈一拉威 写道
奉劝楼主有空看看官方文档和别人总结的经验吧,别闭门造车了。对于一个新手来说最忌讳的就是一叶障目。

呵呵 , 打嘴架, 喷人, 很容易,
有意见那能信服人的代码, 文档, 说话.
官方文档:
1. 关于DataSource
http://mybatis.github.io/mybatis-3/configuration.html#environments
如何支持第三方, 我今天的post:
http://ivarchen.iteye.com/blog/2069522
2.关于缓存的设置:
http://mybatis.github.io/ehcache-cache/index.html
Users that need to configure Ehcache through XML configuration file, have to put in the classpath the /ehcache.xml resource. Please refer to the official Ehcache documentation to know more details.
org.mybatis.caches.ehcache.EhcacheCache源代码
 private static final CacheManager CACHE_MANAGER = CacheManager.create();

别有事没事秀优越感, 那样只会显示你的肤浅.
6 楼 iwindyforest 2014-05-22  
撒哈一拉威 写道
奉劝楼主有空看看官方文档和别人总结的经验吧,别闭门造车了。对于一个新手来说最忌讳的就是一叶障目。

呵呵
5 楼 iwindyforest 2014-05-22  
撒哈一拉威 写道
呵呵、感觉这是黑mybatis的节奏啊,你说的这些什么datasource不支持第三方,缓存如今只能是根目录啊,纯属扯淡!昨天还把mybatis和springmvc搞到一起了一遍,我可以很负责的告诉你这问题完全不存在!

谢谢, 我说过datasource不支持第三方吗,你没看到前面"默认"那两个字?
我说过结合Spring的缓存不能指定目录吗?
4 楼 撒哈一拉威 2014-05-22  
奉劝楼主有空看看官方文档和别人总结的经验吧,别闭门造车了。对于一个新手来说最忌讳的就是一叶障目。
3 楼 撒哈一拉威 2014-05-22  
呵呵、感觉这是黑mybatis的节奏啊,你说的这些什么datasource不支持第三方,缓存如今只能是根目录啊,纯属扯淡!昨天还把mybatis和springmvc搞到一起了一遍,我可以很负责的告诉你这问题完全不存在!
2 楼 iwindyforest 2014-05-22  
nalan 写道
"同JDBC比较会省去95%的代码量",并没有夸张,mybatis和jdbc相比封装了数据库连接、异常处理、结果集提取以及转换成Bean,差不多是可以节约95%的代码,至于service, service impl跟mybatis有关系吗?

如果跟Spring JDBC Template比呢, 毕竟数据库连接、异常处理、结果集提取以及转换成Bean都是需要做成可重用的, 就算是不用Spring也是需要自己做成抽象实现的.
1 楼 nalan 2014-05-22  
"同JDBC比较会省去95%的代码量",并没有夸张,mybatis和jdbc相比封装了数据库连接、异常处理、结果集提取以及转换成Bean,差不多是可以节约95%的代码,至于service, service impl跟mybatis有关系吗?

相关推荐

Global site tag (gtag.js) - Google Analytics