当前使用版本(必填,否则不予处理)

mybatis-plus-core-3.4.3

该问题是如何引起的?(确定最新版也有问题再提!!!)

发现 model 的字段指定了 typehandler ,但是在使用 queryWrapper 查询的时候,发现 where 的字段没有经过 typehandler 处理

重现步骤(如果有就写完整)

  1. 字段定义:

    @TableField(value = "card_no", typeHandler = CardNoEncryptedFieldTypeHandler.class, jdbcType = JdbcType.VARCHAR) private String cardNo;

  2. 生成查询 query getOne(new QueryWrapper() .eq(CubeUserDO.CARD_TYPE, idCard.getCardType()) .eq(CubeUserDO.CARD_NO, idCard.getCardNo()) ))

  3. 执行 sql ==> Preparing: SELECT id,user_id,card_type,card_no,credit_code,mobile,is_staff,name,sex,state_code,gmt_create,gmt_modified FROM standard_user WHERE (credit_code = ? AND card_type = ? AND card_no = ?) ==> Parameters: xxxxx(String), 1(Integer), xxxxxx(String) <== Total: 0

Comment From: qmdx

        // wrapper typeHandler 测试
        LambdaUpdateWrapper<User> wrapper = Wrappers.<User>lambdaUpdate().set(User::getWallets, Arrays.asList(new Wallet("Tom",
                Arrays.asList(new Currency("RMB", 1000d)))), "typeHandler=com.baomidou.mybatisplus.samples.typehandler.WalletListTypeHandler");
        wrapper.eq(User::getId, 2L);
        Assertions.assertEquals(userMapper.update(new User().setAge(99), wrapper), 1);
        System.err.println(userMapper.selectById(2));