之前在这里编写自定义SQL通过注解的方式可以成功,但是XML一直失败:
报错Invalid bound statement (not found)
后来看官方文档找到了线索
之前也尝试过一些方法,不知道为什么均无效。
比如:
1,在 Configuration 类上使用注解 MapperScan
2,SqlSessionFactory不要使用原生的,请使用MybatisSqlSessionFactory
等等都无效
后来走通了一个方法,步骤如下:
1,在Resources文件夹下创建一个Mapper文件夹
比如我们需要在Admin表中使用增删改查,创建AdminMapper.xml,对应MybatisPlus中的AdminMapper接口
2,之后我们在application.yml中配置mapper文件夹的路径
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
3,就可以在AdminMapper.xml中写sql语句了,写法和Mybatis一样
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="scrm.mapper.AdminMapper">
<select id="getAll" resultType="java.util.LinkedHashMap">
SELECT ad.id,ad.name FROM admin ad WHERE ad.id IN ( SELECT DISTINCT creater_id FROM canal )
</select>
</mapper>
4,编写测试类
package scrm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import scrm.mapper.AdminMapper;
import scrm.model.entity.Admin;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@SpringBootTest
public class Canal {
@Resource
AdminMapper adminMapper;
@Test
public void createrList(){
List<Map<String, Object>> mapList = adminMapper.getAll();
System.out.println("admin"+mapList);
}
}
5,输出结果:
备注:在这篇文章收到了启发:https://blog.csdn.net/qq_4266...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。