之前在这里编写自定义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;@SpringBootTestpublic 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...