使用mybatis jdbctype int与直接用jdbc相比,有哪些优势

42515人阅读
项目经验(58)
java(91)
mybatis(4)
学习总结(45)
通过上篇介绍mybatis与hibernate区别,我们已经能得出一些mybatis的优缺点,但那只是相对于hibernate的,并不全面,我来继续总结mybatis的优缺点,以便大家对于mybatis的了解能更全面些。但我所说的优缺点,仅是我个人总结并结合使用体验后得出的结果,并不能代表大众想法,因此才以“浅谈”作为文章标题。如果大家的见解与我不同,欢迎积极提出来一块讨论,我也借以弥补自己认识的不足和短见。
1. 易于上手和掌握。
2. sql写在xml里,便于统一管理和优化。
3. 解除sql与程序代码的耦合。
4. 提供映射标签,支持对象与数据库的orm字段关系映射
5. 提供对象关系映射标签,支持对象关系组建维护
6. 提供xml标签,支持编写动态sql。
1. sql工作量很大,尤其是字段多、关联表多时,更是如此。
2. sql依赖于数据库,导致数据库移植性差。
3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。
4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)
5. DAO层过于简单,对象组装的工作量较大。
6. &不支持级联更新、级联删除。
7. 编写动态sql时,不方便调试,尤其逻辑复杂时。
8&提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。
9. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。
10. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)
11. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)
12. 缓存使用不当,容易产生脏数据。
mybatis的优点其实也是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限,无法像jdbc那样在代码里根据逻辑实现复杂动态sql拼接。mybatis简单看就是提供了字段映射和对象关系映射的jdbc,省去了数据赋值到对象的步骤而已,除此以外并无太多作为,不要把它想象成hibernate那样强大,简单小巧易用上手,方便浏览修改sql就是它最大的优点了。
mybatis适用于小型且程序员能力较低的项目和人群使用,对于中大型项目来说我并不推荐使用,如果觉得hibernate效率低的话(实际上也是使用不当所致,hibernate是实际上是不适用于拥有高负载的工程项目),还不如直接用spring提供的jdbc简单框架(Template),同样支持对象映射。


&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2393368次
积分:11984
积分:11984
排名:第1192名
原创:111篇
评论:973条16:48 提问
刘老师,你用过dbutils吗?和mybatis相比,各有什么优势?
刘老师,你用过dbutils吗?和mybatis相比,各有什么优势?另外mybatis我用的少,分页插件是啥?怎么用?
按赞数排序
dbutils比mybatis更接近jdbc,mybatis对参数和结果的封装处理更完善,使用更方便,如果想使用更简单,重复代码更少,建议mybatis。
首先,mybatis的SQL是可以写在配置文件中,并且可以支持动态SQL,如果你只是使用mybatis的sqlMap而不是当作orm来用,那么无论你是单表还是多表查询,都跟你直接在数据库中写sql查询没多大差别,不存在多表sql不好写的问题。dbutils比较轻量,但是他的sql是直接传递进去,不支持动态sql,如果你想要将sql从java代码中分离出来,或是要进行动态sql,那么你就mybatis,如果你的应用很小,基本不需要考虑分离sql集中管理,也基本没啥复杂的sql,那么你就使用dbutils,直接将sql写在java代码里。个人推荐还是使用mybatis,一是他的sqlMap功能可以将Sql分离集中管理,而且还支持动态SQL,让你的java代码更加简洁,另外有时候修改SQL不需要重新编译,方便上线后做微调。
还有哦,hibernate 用的多吗?
目前哪个持久层框架用的最多?
解释最好通俗易懂。。。。。。。。菜鸟听不懂太深
一起跟着学习一下,长知识了!
其他相似问题

我要回帖

更多关于 mybatis jdbctype int 的文章

 

随机推荐