资讯专栏INFORMATION COLUMN

MyBatis理解与掌握(简介)

Pocher / 1964人阅读

摘要:语句在代码中硬编码,造成代码不易于维护,实际应用变化的可能较大,变动需要改变代码。对结果集解析存在硬编码查询列名,变化导致解析代码变化,系统不易于维护,如果能将数据库记录封装成对象解析比较方便。

MyBatis理解与掌握(简介)

@(MyBatis)[Java, 框架, MyBatis]

简介

  Mybatis是一个数据持久层框架,MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或者注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录通过一系列的XML配置文件,解耦了对象和存储过程/SQL语句。
因为MyBatis面向的是SQL,所以有时也称之为SQL映射器

与JDBC比较

(1)数据库连接创建、释放频繁造成系统资源浪费 从而影响系统性能,如果使用数据库连接池可解决此问题。
解决:在mybatis-config.xml中配置了数据连接池,方便使用了连接池管理数据库链接。

(2)Sql语句在代码中硬编码 ,造成代码不易于维护,实际应用sql变化的可能较大,sql变动需要改变Java代码。
解决:将Sql语句配置在映射文件(xxxmapper.xml)中,实现sql语句和Java代码的分离。

(3)使用preparedStatement向占有位符号传参数存在硬编码 ,因为sql语句的where条件不一定,可能多也可能少,修改sql还需要修改代码,系统不易于维护。
解决:Mybatis自动将Java对象映射至sql语句,通过statement中的parameterType定义输入参数类型。

(4)对结果集解析存在硬编码 (查询列名),sql变化导致解析代码变化,系统不易于维护,如果能将数据库记录封装成pojo对象解析比较方便。
解决:Mybatis自动将sql执行结果映射至Java对象,通过statement中的resultType定义输出结果的类型。

与Hibernate比较

Mybatis学习门槛低, 简单易学 ,程序员直接编写原生态sql,可严格控制sql执行性能, 灵活度高 ,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一旦需求变化要求成果输出迅速。
但是Mybatis 无法做到数据库无关性 ,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

Hibernate 对象/关系映射能力强数据库无关性好 ,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用Hibernate开发可以节省很多代码,提高效率。但是Hibernate 学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎么用好Hibernate需要具有很强的经验和能力才行。

总之,按照用户的需求在有限的资源环境下只能做出威化扩展性良好的软件架构都是好架构,所以框架只有适合才是最好的。

配置文件区别:

hibernate:

主配置文件:数据库连接信息,方言,映射文件信息

实体类配置文件:类和表之间的映射关系

Mybatis:

主配置文件:数据库连接信息,映射文件信息

SQL映射文件:将执行的SQL进行关联映射

Mybatis和Hibernate不同,它不完全是一个ORM框架,因为Mybatis需要程序员自己编写sql语句,不过Mybatis可以通过xml或注解方式灵活配置要运行的sql语句,并将Java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成Java对象

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77065.html

相关文章

  • MyBatis理解掌握(入门例子)

    摘要:的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。下面的示例就是一个确保关闭的标准模式依赖注入框架可以创建线程安全的基于事务的和映射器并将它们直接注入到你的中,因此可以直接忽略它们的生命周期。 MyBatis理解与掌握(入门例子) @(MyBatis)[Java, 框架, MyBatis] 配置文件 mybatis-config.xml ...

    lufficc 评论0 收藏0
  • MyBatis理解掌握(缓存)

    摘要:理解与掌握缓存框架一级缓存默认就可以使用框架处理缓存是依赖映射,的内部缓存使用一个,为语句。一级缓存的作用域是一个,一旦发生变化,一级缓存失败在同一个中,执行相同的查询,第一次会去查询数据库,并写到缓存中第二次直接从缓存中取。 MyBatis理解与掌握(缓存) @(MyBatis)[Java, 框架, MyBatis] 一级缓存(SqlSession) 默认就可以使用 框架处理缓存是 ...

    马龙驹 评论0 收藏0
  • MyBatis理解掌握(输入输出)

    摘要:输入参数类型指定输入参数类型,通过从输入对象中获取参数值放置在中。查询结果处理指定输出结果类型,将查询结果的一行记录数据映射为指定类型的对象。 MyBatis理解与掌握(输入与输出) @(MyBatis)[Java, 框架, MyBatis] 占位符和拼接 {}:占位符 能防止sql注入问题,所一能尽量用#{}就尽量用#{}用来传入参数,sql在解析的时候会加上 当成字符串来解析 ,...

    why_rookie 评论0 收藏0
  • 70 个 Spring 最常见面试题,Java 晋升必会

    摘要:容器自动完成装载,默认的方式是这部分重点在常用模块的使用以及的底层实现原理。 对于那些想面试高级 Java 岗位的同学来说,除了算法属于比较「天方夜谭」的题目外,剩下针对实际工作的题目就属于真正的本事了,热门技术的细节和难点成为了主要考察的内容。 这里说「天方夜谭」并不是说算法没用,不切实际,而是想说算法平时其实很少用到,甚至面试官都对自己出的算法题一知半解。 这里总结打磨了 70 道...

    Ashin 评论0 收藏0
  • MyBatis理解掌握(动态SQL)

    摘要:理解与掌握动态框架就是简单的条件判断,利用语句我们可以实现某些简单的条件选择。有了元素我们就可以动态的更新那些修改了的字段。 MyBatis理解与掌握(动态SQL) @(MyBatis)[Java, 框架, MyBatis] if if 就是__简单的条件判断 __,利用if语句我们可以实现某些简单的条件选择。先来看如下一个例子: select * from user whe...

    blankyao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<