Skip to content

Latest commit

 

History

History
127 lines (91 loc) · 3.54 KB

question.md

File metadata and controls

127 lines (91 loc) · 3.54 KB

常见问题

如何排除非表中字段?

三种方式选择一种即可!

  • 使用 transient 修饰

    private transient String noColumn;
  • 使用 static 修饰

    private static String noColumn;
  • 使用 TableField 注解

    @TableField(exist=false)
    private String noColumn;

异常Invalid bound statement (not found) 解决方法

不要怀疑,正视自己,这个异常肯定是你插入的姿势不对……

  • 检查命名空间是否正常? 检查包扫描路径是否正常?如果扫描不到,MP无法进行预注入

  • 检查是否指定了主键?如未指定,则会导致 selectById 相关 ID 无法操作,请用注解 @TableId 注解表 ID 主键

  • 对于IDEA系列编辑器,XML 文件是不能放在 java 文件夹中的,IDEA 默认不会编译源码文件夹中的 XML 文件,可以参照以下方式解决:

    • 将配置文件放在 resource 文件夹中,请参考 Spring-MVC 的集成 DEMO
    • 对于 Maven 项目,可指定 POM 文件的 resource
    <build>
      <resources>
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
          </resource>
          <!--指定资源的位置-->
          <resource>
              <directory>src/main/resources</directory>
          </resource>
      </resources>
    </build>

ID_WORKER 主键 Long 导致 js 精度丢失

JavaScript 无法处理 Java 的长整型 Long 导致精度丢失,解决办法 Long 转为 String 返回

  • FastJson 处理方式:
/**
 * <p>
 * 消息转换
 * </p>
 */
 @Override
 public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter();
    FastJsonConfig fjc = new FastJsonConfig();
    //1、序列化重点
    fjc.setSerializerFeatures(SerializerFeature.BrowserCompatible);
    fastJsonConverter.setFastJsonConfig(fjc);
    converters.add(fastJsonConverter);
 }
  • JackJson 处理方式:
// 1、注解处理,这里可以配置公共 baseEntity 处理
@JsonSerialize(using=ToStringSerializer.class)
public long getId() {
    return id;
}

// 2、全局配置序列化返回 JSON 处理
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);

字段 update 空字符串 OR NULL 修改验证策略

FieldStrategy 三种策略 IGNORED【忽略】,NOT_NULL【非 NULL,默认策略】,NOT_EMPTY【非空】

  • 全局的验证策略,注入配置 GlobalConfiguration 属性 fieldStrategy

  • 根据具体情况,选择验证注解,如验证非空:

    @TableField(validate=FieldStrategy.NOT_EMPTY)
  • 解决办法 二

    updateAllColumnById(entity) // 全部字段更新
    
    insertAllColumn(entity) // 全部字段插入

字段 bit 、tinyint(1) 使用 boolean 类型映射解决方法

默认 mybatis 是不会自动处理该映射,需要修改请求连接添加参数 tinyInt1isBit=false【默认 true】如下:

jdbc:mysql://127.0.0.1:3306/mp?tinyInt1isBit=false

异常Injection of autowired 解决方法

原因!低版本不支持泛型注入,请升级 spring 4+

异常`java.lang.NoSuchMethodError: org.apache.ibatis.session.Configuration.getDefaultScriptingLanguageInstance()

Lorg/apache/ibatis/scripting/LanguageDriver` 解决方法

版本引入问题:3.4.1版本里没有,3.4.2里面才有!