17.将dao接口和mapper.xml文件分开

zhanglei 2022年07月09日 427次浏览

17.将dao接口和mapper.xml文件分开

17.1 Resources 标签

在上一篇文章中,将dao接口和mapper.xml文件放在同一个dao目录下,如图:

image-20220709141418538

现在我在pom.xml里将resources标签注释掉,看看没有他能不能识别xml文件:

image-20220709142307809

打开右边的maven栏,点击lifecycle,再先后点击clean和compile:

image-20220709142022395

这时看左边target目录下的classes文件夹:

image-20220709142347665

发现dao目录下只有接口StudentDao,没有对应的Student.xml文件!说明不能自动识别 src/main/java目录下的配置类文件,如果非要将配置类文件放到 src/main/java 目录下,就要在pom.xml文件中build中加入resources标签(改完pom文件后要reload一下):

image-20220709143009641

这时打开右边的maven栏,点击lifecycle,再先后点击clean和compile,查看target文件夹中的dao目录:

image-20220709143200928

可见在pom.xml文件中加入resources标签声明后,StudentDao.xml文件出现在了target目录下,识别了StudentDao.xml配置文件!

17.2 将xml文件放到 resources目录下实现与dao接口分离

既然框架不会识别 src/main/java 目录下的xml配置文件,那么将xml配置文件放到 resources 目录下那肯定就没问题了,因为resource类路径目录本来就是存放.propertie和.xml文件的。现在我将 StudentDao.xml文件放到 resources 目录下的子目录mapper目录下,启动应用,打开浏览器访问:

localhost:8080/1 查看id 为 1 的学生信息,控制台出现如下错误:

image-20220709144321028

出现无效绑定的错误信息,原因是没有找到StudentDao.xml文件,当时很好奇,既然将配置文件都放到 resources 目录下了,怎么还是不能识别呢,原因是,放到这个目录时,要在properties 文件中申明 mapper配置文件的位置:

image-20220709144705615

这样就可以识别xml文件了,重启应用,访问localhost:8080/1 查看id 为 1 的学生信息:

image-20220709145055149

查询成功!