[MyBatis系列②]Dao层开发的两种方式

目录

1、传统开发

1.1、代码

1.2、存在的问题

2、代理开发

2.1、开发规范

2.2、代码


⭐mybatis系列①:增删改查

1、传统开发

传统的mybatis开发中,是在数据访问层实现相应的接口,在实现类中用"命名空间.id"的形式找到对应的映射文件当中配置的sql语句,而代理开发则是通过接口类型寻找对应的执行方法。

1.1、代码

映射文件配置:

[MyBatis系列②]Dao层开发的两种方式_第1张图片

Dao层代码如下:

[MyBatis系列②]Dao层开发的两种方式_第2张图片

[MyBatis系列②]Dao层开发的两种方式_第3张图片

1.2、存在的问题

之前的代码是基本使用方式,它也存在硬编码的问题,如下:

这里调用 selectList() 方法传递的参数是映射配置文件中的namespace.id值

这样写也不便于后期的维护。如果使用Mapper 代理方式则不存在硬编码问题:

[MyBatis系列②]Dao层开发的两种方式_第4张图片

通过上面的描述可以看出 Mapper 代理方式的目的:

解决原生方式中的硬编码

简化后期执行SQL

Mybatis 官网也是推荐使用 Mapper 代理的方式。下图是截止官网的图片:

[MyBatis系列②]Dao层开发的两种方式_第5张图片

2、代理开发

采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是企业的主流。

Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis 框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。

2.1、开发规范

Mapper 接口开发需要遵循以下规范:

1、Mapper.xml文件中的namespace与mapper接口的全限定名相同

2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同

3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同

4、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

图解:

[MyBatis系列②]Dao层开发的两种方式_第6张图片

2.2、代码

下面是具体模拟的MVC步骤:

对应的目录如下:

[MyBatis系列②]Dao层开发的两种方式_第7张图片

①控制层:用测试框架做一个简单的模拟:

[MyBatis系列②]Dao层开发的两种方式_第8张图片

②业务层:

[MyBatis系列②]Dao层开发的两种方式_第9张图片

③数据访问层:

[MyBatis系列②]Dao层开发的两种方式_第10张图片

④编写映射文件:

[MyBatis系列②]Dao层开发的两种方式_第11张图片

⑤在配置文件中加载映射文件:

[MyBatis系列②]Dao层开发的两种方式_第12张图片

⑥测试:

[MyBatis系列②]Dao层开发的两种方式_第13张图片

结果符合预期!

        

你可能感兴趣的:(JavaEE,java,java-ee,mybatis)