当前使用版本(必填,否则不予处理)
3.4.0
该问题是如何引起的?(确定最新版也有问题再提!!!)
typeHandler 在查询时无法更改查询条件
重现步骤(如果有就写完整)
修改自 demo 示例
SampleTest.java
User Jone = userMapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getWallet, "asdasd"));
System.err.println(Jone);
data-h2.sql
INSERT INTO user (id, name, age, email, wallet, other_info) VALUES
(1, 'Jone', 18, 'test1@baomidou.com', 'qweqwe', '{
"sex": "男",
"city": "南昌"
}'),
(2, 'Jack', 20, 'test2@baomidou.com', 'asdasd', '{
"sex": "男",
"city": "青岛"
}');
User.java
@TableField(typeHandler = TestTypeHandler.class)
private String wallet;
TestTypeHandler.java
@MappedTypes({String.class})
@MappedJdbcTypes(JdbcType.VARCHAR)
public class TestTypeHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
if ("qweqwe".equals(parameter)) {
ps.setString(i, "asdasd");
} else {
ps.setString(i, "qweqwe");
}
}
...
}
日志输出
2020-09-14 14:39:27.510 DEBUG 35116 --- [ main] c.b.m.s.t.mapper.UserMapper.selectOne : ==> Preparing: SELECT id,name,age,email,wallet FROM user WHERE (wallet = ?)
2020-09-14 14:39:27.543 DEBUG 35116 --- [ main] c.b.m.s.t.mapper.UserMapper.selectOne : ==> Parameters: asdasd(String)
2020-09-14 14:39:27.574 DEBUG 35116 --- [ main] c.b.m.s.t.mapper.UserMapper.selectOne : <== Total: 1
User(id=2, name=Jack, age=20, email=test2@baomidou.com, wallet=asdasd)
正常结果不应该是查询条件被修改为qweqwe查询吗
Comment From: miemieYaho
你自己写错了
Comment From: lwQin
@miemieYaho 请问是哪里写的有问题
Comment From: miemieYaho
TypeHandler
Comment From: lwQin
@miemieYaho 找了半天没发现哪里有问题。。还请明示
Comment From: miemieYaho
百度 BaseTypeHandler
Comment From: canhui6666
@miemieYaho 找了半天没发现哪里有问题。。还请明示
解决了么
Comment From: VampireAchao
Hello,
Could you provide a small repro project? We may also need instruction about JVM configuration to reproduce the issue.
Regards, VampireAchao