当前使用版本(必填,否则不予处理)
mybatis-plus-core-3.4.3
该问题是如何引起的?(确定最新版也有问题再提!!!)
发现 model 的字段指定了 typehandler ,但是在使用 queryWrapper 查询的时候,发现 where 的字段没有经过 typehandler 处理
重现步骤(如果有就写完整)
-
字段定义:
@TableField(value = "card_no", typeHandler = CardNoEncryptedFieldTypeHandler.class, jdbcType = JdbcType.VARCHAR) private String cardNo;
-
生成查询 query getOne(new QueryWrapper
() .eq(CubeUserDO.CARD_TYPE, idCard.getCardType()) .eq(CubeUserDO.CARD_NO, idCard.getCardNo()) )) -
执行 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));