我选择把
xml
配置
文件
放在
mybatis
定义的接口
包内
。这样就可以改接口和改
xml
文件
,左侧的
文件
树几乎不跳动,来回切换,毕竟会节约一些时间。具体的做法如下。
1.配置SqlSessionFactory的时候,指定一下资源目录
@
Mapper
Scan(basePackages = “cn.example.productServer.
mapper
”)
2.pom.
xml
文件
中定义一下,编译的时候将
包内
的
xml
文件
一并打包进jar包
<build>
<!-- 需要将
xml
资源
文件
1:用于区分不同的
mapper
,全局唯一。
2:绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,
MyBatis
会通过接口的完全限定名来查找对应的
mapper
配置,执行SQL语句,因此namespa
ce的命名必须和接口名相同。
namespace属性的要求:
@Qualifier是
一个
Spring框架的注解,用于标识
一个
Bean的特定实例。当有多个Bean实现了同一接口或类时,@Qualifier可以指定要使用的实例。
通常情况下,Spring框架根据类型来自动装配依赖,但如果有多个 Bean 与依赖的类型匹配,则会产生歧义。这时就需要使用 @Qualifier 来指定具体匹配的 Bean。
在传统的三
层
架构中,DAO
层
负责与数据库进行交互,包括数据的查询、更新、删除等操作。
Mapper
层
是DAO
层
的一部分,主要负责将SQL语句映射成
Java
的方法,提供给Service
层
调用。Service
层
则是业务逻辑的处理
层
,负责将DAO
层
和
Mapper
层
的方法组合起来,实现具体的业务需求。
以下是
一个
简单的
Mapper
层
的例子,使用
XML
文件
实现了根据用户ID查询用户信息的方法:
```
xml
<!-- user
Mapper
.
xml
-->
<
mapper
namespace="com.example.dao.User
Mapper
">
<select id="selectById" parameterType="int" resultType="com.example.entity.User">
SELECT id, name, age, gender FROM user WHERE id = #{id}
</select>
</
mapper
>
在这个例子中,
mapper
标签的namespace属性指定了该
Mapper
层
对应的
Java
接口,select标签的id属性指定了该方法对应的
Java
方法名称,parameterType属性指定了该方法的参数类型,resultType属性指定了该方法返回值的类型。SQL语句则直接写在select标签的内部。
当Service
层
调用该方法时,
Mapper
层
会将该SQL语句执行,从数据库中查询到对应的用户信息,并将其封装成
一个
User对象返回给Service
层
。