MyBatis 配置文件中的 SQL id 是否能重复?
在MyBatis中,每个<select>
,<update>
,<delete>
,<insert>
元素的id
在同一个mapper.xml文件中必须是唯一的,因为这个id
用于标识这个SQL语句。这样,当我们在Java代码中调用SqlSession
的方法(如selectOne
,selectList
,update
,insert
,delete
)时,可以通过命名空间加上这个id
来引用这个SQL语句。
例如,假设我们有一个mapper.xml文件,它的命名空间是com.example.UserMapper
,然后在这个文件中我们定义了一个id
为selectUser
的<select>
元素,那么我们可以通过com.example.UserMapper.selectUser
来引用这个SQL语句。
但是在不同的mapper.xml文件中,是可以有相同的id
的。因为在不同的mapper.xml文件中,它们的命名空间是不同的,所以即使id
相同,它们的全路径(命名空间+id)也是不同的,所以不会造成冲突。
但是为了保持代码的清晰和易于维护,建议尽量避免在不同的mapper.xml文件中使用相同的id
。