1

首先我们知道MyBatis所做的事情就是将JDBC操作做了封装以及优化,其目的是让开发人员更方便的对数据库进行操作
在MyBaits框架中由两种SQL语句映射方式,一是直接写在XML文件中的<mapper>元素内部,还有就是通过注解的方式实现,

一、通过XML实现映射:

image.png
image.png
image.png
要注意XML文件中的id值要与方法名称保持一致~~~~

二、通过注解的方式:

先接着上面的代码说一下注意的注解:
@Mapper:使用在接口上的注解,被其修饰的接口会由mybaits创建一个实现类,并交由spring管理。
通过这个注解我们可以不必自己去实现方法,而只需要在接口中声明该方法的抽象,实现SQL则只需要在该抽象方法上添加所要执行的SQL的注解就行。
image.png
这样我们的SQL语句就和我们的方法关联上了,最后通过依赖注入的方式将这个接口的实现类对象添加到测试类中image.png
上图的中的goodsDao变量中就注入了一个GoodsDao类型的对象,这个对象完全由框架自己生产出来。

业务的实现

无论是哪一种方式完成sql业务都是基于mybatis实现的
Dao层的接口主要的作用就是负责定义我们所需要方法,通过这个方法可以通过注解去写我们的sql语句,再由实现类去执行。我们可以分析一下在实现业务的过程具体是如何实现的:

  • 我们所有与数据库之间的交互其实都是基于GoodsDao接口所定义的方法去实现的,真正与数据库之间保持联系的其实是GoodsDao接口的实现类,其中的关系差不多是这样:
  • 6IGEI1VOYFT1}07}Z`N{X87.png

**

业务层接口及实现类

业务层所在的位置在我们的Dao层之上,图示大概是这样:
image.png
其实就增加了一个媒介,相当于是中间商一样横跨在Dao层与测试类之间,但这个中间商是十分良心的,它愿意帮你做很多事情,比如说解耦,增加业务层可以有效的降低代码之间的耦合性,我们在测试类中实现依赖注入的时候往往选择去接受一个GoodService类型的对象,而不去选择其实现类的具体对象,这样即便我们更改这个实现类也不用去关心在测试中的对象是否会发生变化,这样就把每一部分代码独立出来,当某一部分发生变化时我们只需要关注发生变化的部分本身即可,而我们很多需要实现的业务也可以写在这个层中,这样一来代码的结构也会显得十分清晰。
业务层与Dao层看上去结构十分相似,都是定义接口去实现类对象,不同的地方在于Dao层的实现类对象是由框架底层去创建的,而业务层中类对象是由我们自己去定义的,在测试类中我们通过@Autowired注解去注入业务层实现类对象,这个实现类对象需要用@Service描述:
image.png
image.png


易志杰
4 声望0 粉丝