视频总结笔记:

在SQL Mapper配置文件中
创建CarMapper2.xml文件,代码如下:
CarMapper2.xml:
- "1.0" encoding="UTF-8" ?>
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="car2">
- <select id="selectCarAll" resultType="com.powernode.mybatis.pojo.Car">
- select
- id, car_num as carNum, brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType
- from
- t_car
- select>
- mapper>
不难看出,CarMapper.xml和CarMapper2.xml文件中都有 id="selectCarAll"
将CarMapper2.xml配置到mybatis-config.xml文件中。
mybatis-config.xml:
- <mappers>
- <mapper resource="CarMapper.xml"/>
- <mapper resource="CarMapper2.xml"/>
- mappers>
编写Java代码如下:
CarMapperTest.testNamespace:
- @Test
- public void testNamespace(){
- // 获取SqlSession对象
- SqlSession sqlSession = SqlSessionUtil.openSession();
- // 执行SQL语句
- List
- // 输出结果
- cars.forEach(car -> System.out.println(car));
- }
运行结果如下:
异常信息:
- org.apache.ibatis.exceptions.PersistenceException:
- ### Error querying database. Cause: java.lang.IllegalArgumentException:
- selectCarAll is ambiguous in Mapped Statements collection (try using the full name including the namespace, or rename one of the entries)
- 【翻译】selectCarAll在Mapped Statements集合中不明确(请尝试使用包含名称空间的全名,或重命名其中一个条目)
- 【大致意思是】selectCarAll重名了,你要么在selectCarAll前添加一个名称空间,要有你改个其它名字。
ava代码修改如下:
CarMapperTest.testNamespace:
- @Test
- public void testNamespace(){
- // 获取SqlSession对象
- SqlSession sqlSession = SqlSessionUtil.openSession();
- // 执行SQL语句
- //List
- List
- // 输出结果
- cars.forEach(car -> System.out.println(car));
- }
运行结果如下:
