mybatis xml语法_STEP5.1 初识MyBatis

4d9b33c11fbbfd85ff63633169608e23.png

在上一节STEP4中,我们已经初步学会了使用SpringBoot来搭建服务,以及做一些简单的会话管理(HttpSession)。

但是有一个非常重要的问题没有解决:Dao层。也就是在上一节中被我们先用Java代码模拟了的那一部分。

我们知道Dao应当是去帮助我们沟通数据库的,但相关的代码应该如何来写,我们又要使用一些什么样的工具呢?

这里就引入了我们要介绍的一个ORM框架——MyBatis


等等…什么叫ORM框架?

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

听起来有些复杂?

简单举个例子,比如我们要做一个“从数据库查询id为3的学生信息”:

SELECT * FROM student WHERE id=3;

这是一个符合我们MySQL的语法,我们如果要在MySQL里执行这个查询,就必须使用这个语法。

那换句话说,作为一个需要执行这个查询的应用开发人员,我们是不是又要懂java又要懂mysql呢?毕竟我们还要用java来搭建我们的服务。

其实可以不用!

(先光速打个脸:其实优秀的开发者都是两个都会的)

那如何才能让我们只关注java代码的开发而不需要在意MySQL的语法呢?

那我们就需要一个工具,这个工具能够帮助我们做这样一个处理:把Java代码翻译成MySQL的语法。

就比如我们调用一个java方法叫做selectStudentById(int id),这个工具就可以自动帮我们“翻译”成MySQL语句SELECT * FROM student WHERE id=#{id};

(这里的#{id}表示我们方法传入的参数)

这里再补一个小tip:什么叫“翻译”?其实就是根据我们调用的Java方法去做SQL语句拼接,然后替我们开发者向MySQL请求数据。

简单总结一下,就是我们需要一个工具,使我们不需要手写SQL语句,而是写一些Java方法,就可以实现我们要做的数据库操作

那么什么工具可以帮助我们实现这个目的呢?那就是ORM框架

到这里,其实ORM就算是解释得差不多了,不过还里还是简单提一下ORM最重要的一个优点和一个缺点,很好理解,所以也列在这里:

ORM最大的优点是,对我们应用层屏蔽了具体的数据库语言实现,所以对于数据库的迁移等会比较方便。(比如有一天我们要把MySQL换成Oracle来存储我们的数据,那我们的数据库语法会有一些变化,但是我们对应的Java方法可以不变)、

ORM最大的缺点是,无法由我们开发者自己来维护数据库查询语句,所以很难在语句层面对数据访问做优化(加快我们的访问等)。

那么到这里,对于ORM的概念我们就算是彻底解释完了。


接下来解释一下MyBatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
相比市面上其他持久层框架,MyBatis具有小巧、方便、高效、简单易上手、半自动化的特点。

不知道在讲什么,反正听起来MyBatis很牛*的样子?

MyBatis具体的一些强大之处,还需要你慢慢体会。在这里仅强调两点:

一,MyBatis也是一款ORM框架,所以它具备上文提到的ORM的功能;

二,MyBatis是“半自动化的”,这个含义在于,我们作为应用开发者利用MyBatis是可以由自己来维护SQL语句的。(问自己一个问题,这样的好处是什么?)


那么我们到底应该如何来使用MyBatis来完成数据的访问呢?

在正式开始我们的MyBatis实践之前,建议你先来体会一下我们传统的数据访问解决方式:JDBC。

也就是,在我们的ORM出现以前,我们传统的访问数据的方式。

看这个有什么用?

  1. MyBatis底层也是基于JDBC实现的,这有助于你理解基本的数据访问的原理
  2. 了解JDBC有些什么弊端和复杂之处,有助于你体会ORM的强大,学会更好地使用ORM

传送门:

孑辞:JDBC认识与实践​zhuanlan.zhihu.com

接下来就正式到我们MyBatis实践了,请移步下一小节:

孑辞:STEP5.2 MyBatis实践——基于XML​zhuanlan.zhihu.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值