Java Mybatis好在哪里
2018-03-12 22:52
211 查看
Mybatis解决jdbc编程的问题
1、数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。
2、Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
3、向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。
4、对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。
mybatis与hibernate不同
Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。
Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。
总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。
相关文章推荐
- 为什么在 Java 中用 (low+high)>>>1 代替 (low+high)/2 或 (low+high)>>1 来计算平均值呢?好在哪里?
- F#比java这种垃圾语言好在哪里
- JAVA比C++好在哪里?
- 使用mybatis生成相关文件时java.sql.SQLException: Access denied for user 'root'@'localhost' (using password)
- mybatis出现There is no getter for property named 'Id' in 'class java.lang.Intege
- java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L
- java通过mybatis往mysql数据库插入数据乱码
- Java实现Mybatis将数据批量插入到Oracle数据库
- Java学习日记13:MyBatis
- Mybatis上路_06-使用Java自动生成
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- java spring+mybatis整合实现爬虫之《今日头条》搞笑动态图片爬取
- (转载) 好的程序员到底好在哪里?
- java高级—mybatis课堂笔记通过id查找用户信息
- JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)
- MyBatis报错:There is no getter for property named 'xxx' in 'class java.lang.String'
- Mybatis中javaType和jdbcType关系对照表
- mybatis和JPA实现乐观锁解决并发问题-阿里巴巴JAVA开发手册详细解读
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- java web spring mvc 框架中使用mybatis报错的解决方案