• mybatis 接口和.xml配置小点


    新公司入职后很久没写博客了,慢慢拾起来吧。

    现象描述:

    项目本地运行没有问题,打包也没有报错,正常打包。但是部署到服务器在调用查库接口时,报错:Invalid bound statement (not found)。。。。。。。

    该错的意思就是调用时没有找到对应的xml文件。

    排错思路:

    mybatis 涉及的配置主要有两个,一是接口要生成bean【用户扫描mapper接口的也就是dao类】,二是xml 要告诉spring能找的到【用于扫描mapper.xml】。

    1 接口生成bean:

    方法一:在每一个接口上添加注解@Mapper,就好比这种:

     1 package com.brave.solid.domain.mapper;
     2 
     3 import com.brave.solid.domain.entity.User;
     4 import org.apache.ibatis.annotations.Mapper;
     5 
     6 import java.util.List;
     7 
     8 @Mapper
     9 public interface UserMapper {
    10     /**
    11      * This method was generated by MyBatis Generator.
    12      * This method corresponds to the database table user
    13      *
    14      * @mbggenerated
    15      */
    16     int deleteByPrimaryKey(Integer id);
    17 }

    方法二:在启动类上添加注解@MapperScan(),就好比这样:

     1 package com.brave.solid;
     2 
     3 import org.mybatis.spring.annotation.MapperScan;
     4 import org.springframework.boot.SpringApplication;
     5 import org.springframework.boot.autoconfigure.SpringBootApplication;
     6 
     7 @SpringBootApplication
     8 @MapperScan("com.brave.solid.domain.mapper")
     9 public class SolidApplication {
    10 
    11     public static void main(String[] args) {
    12         SpringApplication.run(SolidApplication.class, args);
    13     }
    14 
    15 }

    这两个注解有一个就好了,@Mapper需要每个接口上都添加,比较麻烦,所以启动类上添加@MapperScan比较方便,而且@MapperScan参数支持这样子:@MapperScan({"com.kfit.demo","com.kfit.user"})  多个包下的话。

    2 保证 xml需要被扫描到:

    则需要在配置文件里:

     注意的是路径千万不能弄错,我当时的坑就是这个路径写错,导致能打包,不能扫描到。

    总结:

      如果是以上的俩注解没有【有其中一个就好】,应该编译,打包就会报错。

    如果是mybatis的mapper-localtions没有配置对的话,能打包,不能扫描到。但是还有一种解决办法,就是mapper的文件路径和接口的包路径改成一致,这样生成的target里可以看到Mapper接口和XML文件在同一个文件夹下,这样子也是可以扫描到XML文件的,这种方式一般不推荐。

  • 相关阅读:
    自定义响应结果
    JsonUtils (JSON与对象之间的转换)
    IDUtils (ID生成策略)
    ExceptionUtil(异常使用工具类)
    Hbuilder连接夜神模拟器
    夜神模拟器开启开发者选项
    java.lang.OutOfMemoryError: Java heap space的解决方法
    Android开发LogCat一直不停输出的解决方法
    windows无法停用“Android Composite Interface”设备的解决方法
    android:digits属性
  • 原文地址:https://www.cnblogs.com/junbaba/p/13583547.html
Copyright © 2020-2023  润新知