关于mysql:Mybatis-Plus使用XML编写自定义sql

2次阅读

共计 1248 个字符,预计需要花费 4 分钟才能阅读完成。

之前在这里编写自定义 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…

正文完
 0