ORM 自定义sql,where条件变量值为null,转为:where remark=null是不对的
该如何解决呢?
例子如下:
PreparedSql preparedSql = BeeFactory.getHoneyFactory().getPreparedSql();
// update orders set remark=#{remark},abc=#{abc} where id=#{id}
String sql = CustomSql.getCustomSql("osql.example.entity.updateOrders");
Map<String, Object> map = new HashMap<>();
// map.put("remark", null);
map.put("abc", "abc-changed");
map.put("id", 11);
int updateNum=preparedSql.modify(sql, map);
Logger.info(updateNum);
String sql2="update orders set remark=#{remark},abc=#{abc} where id=#{id} and remark=#{remark}";
int updateNum2=preparedSql.modify(sql2, map);
// update orders set remark=null,abc='abc-changed' where id=11 and remark=null ;
//得到的sql: where条件的 remark=null是不对的.
Logger.info(updateNum2);
需要在变量的值为null时,改为:
remark is null
这是SQL的语法.
使用ORM自定义sql, 在where条件,使用remark=#{remark @toIsNULL1}才是对的.文章来源:https://www.toymoban.com/news/detail-521221.html
String sql3="update orders set remark=#{remark},abc=#{abc} where id=#{id} and remark=#{remark @toIsNULL1}";
int updateNum3=preparedSql.modify(sql3, map); //remark=#{remark @toIsNULL1} 在where条件,使用remark=#{remark @toIsNULL1}才是对的.
Logger.info(updateNum3);
代码参考:
https://gitee.com/automvc/bee-exam
Bee,一个简单易用,功能强大的ORM框架.文章来源地址https://www.toymoban.com/news/detail-521221.html
到了这里,关于ORM 自定义sql,where条件变量值为null,转为:where remark=null是不对的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!