zoukankan      html  css  js  c++  java
  • Spring Boot配置自定义mapper.xml文件

    1. 声明Mapper接口

    package com.hundsun.one.mapper;
    
    @Repository
    public interface ResultUserRoleMapper extends BaseMapper {
    
        /**
         * 分页查询
         * @param page
         * @return
         */
        Page pageUsers(@Param("page") Page page);
    }

    2. 创建Mapper配置文件

    <?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="com.hundsun.one.mapper.ResultUserRoleMapper">
    
        <select id="pageUsers" resultType="com.hundsun.one.model.ResultUserRole">
            SELECT
              u.username,u.name,u.employee_no,u.email,r.role_name,u.update_time
            FROM mgr_user u
            INNER JOIN mgr_user_role ur
            ON u.user_id = ur.user_id
            INNER JOIN mgr_role r
            ON ur.role_id = r.role_id
        </select>
    </mapper>

    3. 启动类上扫描Mapper包

    @EnableSwagger2
    @SpringBootApplication
    @MapperScan("com.hundsun.one.mapper")
    public class OneApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(OneApplication.class, args);
        }
    }

    4. 运行项目,访问接口,结果报错

    // 报错原因:找不到mapper接口下的pageUsers接口方法
    
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.hundsun.one.mapper.ResultUserRoleMapper.pageUsers

    5. 排查问题

    -- 检查了启动类上的注解@mapperscan,发现包扫描路径是对的
    
    -- 检查了xml配置文件,命名空间配置的接口路径也是对的
    
    -- 检查了方法标签的 方法id也是对的
    
    -- 排查以上几个都没有问题,那就是xml配置文件的路径问题
    
    -- 尝试了几种办法,将xml配置文件放到接口所在的包下,将xml文件放到resource目录下,将xml文件方法resource目录下,路径配置的跟接口所在的全限定包名路径一样
                    
    -- 都没有解决问题
    
    -- 在网上搜索了很多方案,都没有解决

    6. 在Mybatis Plus官网找到了解决方案

    7. 将mapper.xml配置文件放到resource目录下,在applicaton.yml或者applicaton.yaml或者applicaton.properties文件配置路径

    -- 配置mapper.xml文件
    mybatis-plus.mapper-locations=classpath:*.xml

     8. mapper自定义接口找不到的问题解决了,正常访问数据库

  • 相关阅读:
    用Groovy处理JMeter变量
    用Groovy处理JMeter断言和日志
    选择手动测试还是自动化测试?
    从单元测试标准中学习
    利用ThreadLocal解决线程同步问题
    JSON基础
    Java中interface属性和实例方法
    集成测试、单元测试、系统测试
    异步查询转同步加redis业务实现的BUG分享
    《深入理解java虚拟机》读书笔记三——第四章
  • 原文地址:https://www.cnblogs.com/w1440199392/p/15201297.html
Copyright © 2011-2022 走看看