mybatis中xml映射和方法注解两种配置sql语句的方式是不是可以同时存在
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中xml映射和方法注解两种配置sql语句的方式是不是可以同时存在相关的知识,希望对你有一定的参考价值。
假如使用接口映射器的方式来执行sql语句,对于某个方法,是否允许添加注解和在对应的xml配置文件中配置sql语句两种方式同时存在,比如对于DBMapper接口的selectAll()方法,我既在该方法上添加了@Select("select * from db_param"),又在对应的xml配置文件中配置了<select id="kd">select * from db_param</select>,这样是否允许?如果这样配的话,系统会报错,还是会优先用一种方式替换另一种方式?我自己测试的时候,mapper元素的namespace属性和接口的完整路径名相同的时候,而且使用接口的方式执行sql语句,同时配置会提示错误,但是我看到某篇文章中讲到Configuration对象的addMappers(String path)方法扫描指定包路径下的接口并注册,同时扫描该路径下的mapper配置文件并解析。而且该方法除了解析mapper配置文件,还会解析路径下的接口的注解,同时注解的sql语句会覆盖mapper文件的sql语句。
我因此感到比较困惑,所以想请教mybatis对于同一个接口的同一个方法,是否允许注解和mapper配置两种方式同时存在?
在SqlMapConfig中有俩种配置分别为注解配置 和 xml文档配置
在我们为一个dao接口注册了俩种配置的时候,源码里会进行判断首先进行判断使用的哪种属性配置,如果俩种配置都写了将会抛出
Cause: org.apache.ibatis.binding.BindingException: Type interface IUserDao is already known to the MapperRegistry.
以上是关于mybatis中xml映射和方法注解两种配置sql语句的方式是不是可以同时存在的主要内容,如果未能解决你的问题,请参考以下文章