0
点赞
收藏
分享

微信扫一扫

单表-DQL

Android开发指南 2023-07-06 阅读 80

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}才是对的.

			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框架.

举报

相关推荐

0 条评论