baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.3k stars 4.3k forks source link

sql拼接错误,wrapper.and的lambda拼接内两个in条件出错 #603

Closed Lroyia closed 5 years ago

Lroyia commented 5 years ago

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

3.0.5和3.0.6.2-SNAPSHOT

该问题是怎么引起的?(注意!!!请使用最新版(具体版本查看CHANGELOG.md),如还有该问题再提 issue!,否则直接拒绝,毫不商量!!!)

sql拼接错误,wrapper.and的lambda拼接内两个in条件出错

重现步骤

QueryWrapper wrapper = new QueryWrapper().eq(DELETE_FLAG_COLUMN, delete); List agentIds = new ArrayList<>(); agentIds.add(4); List distributorIds = new ArrayList<>();

wrapper.and(w-> w.in("agent_id", agentIds).or().in("distributor_id", distributorIds)); IPage page = orderService.page(new Page<>(curPage, pageSize), wrapper.orderBy(true, orderRule, orderField));

报错信息

SELECT COUNT(1) FROM br_order WHERE deleted = ? AND order_status IN (?, ?) AND order_status = ? AND (agent_id) 结尾正常应该为 and (agent_id in (4))

miemieYaho commented 5 years ago

? 你 order_status 这个字段哪来的?

Lroyia commented 5 years ago

步骤省略的一个eq拼接

miemieYaho commented 5 years ago

把代码和 sql发完整

Lroyia commented 5 years ago

// 条件封装 QueryWrapper wrapper = new QueryWrapper().eq(DELETE_FLAG_COLUMN, delete);

if (StringUtils.isNotBlank(statusIn)) { wrapper = wrapper.in("order_status", Arrays.asList(statusIn.split(","))); }

List agentIds = new ArrayList<>(); agentIds.add(4); List distributorIds = new ArrayList<>();

wrapper.and(w-> w.in("agent_id", agentIds).or().in("distributor_id", distributorIds)); IPage page = orderService.page(new Page<>(curPage, pageSize), wrapper.orderBy(true, orderRule, orderField));

miemieYaho commented 5 years ago

完整的sql 呢?

Lroyia commented 5 years ago

[nio-8080-exec-1] c.b.d.o.order.OrderMapper.selectPage : ==> Preparing: SELECT COUNT(1) FROM br_order WHERE deleted = ? AND order_status IN (?, ?) AND order_status = ? AND (agent_id) 2018-11-02 12:27:59.425 DEBUG 10644 --- [nio-8080-exec-1] c.b.d.o.order.OrderMapper.selectPage : ==> Parameters: false(Boolean), 2(String), 3(String), 2(String) 2018-11-02 12:27:59.436 DEBUG 10644 --- [nio-8080-exec-1] c.b.d.o.order.OrderMapper.selectPage : ==> Preparing: SELECT id,order_code,order_time,order_amount,agent_id,agent_name,distributor_id,distributor_name,merchant_id,merchant_name,order_type_code,order_type_name,order_status,need_examine,examine_status,service_code,service_name,salesman_id,salesman_name,sale_rate,deductions_rate,customer_id,customer_name,company_id,company_name,credit_card_num,num_of_meals,meal_time,bill_content,remark,first_examine_remark,second_examine_remark,card_machine_code,exchange_time,reference_num,batch_no,voucher_no,auth_no,trace_no,credit_card_code,guangshang_card_code,opening_bank_name,machine_remark,machine_remark1,machine_remark2,machine_bill_photo_uri,people_num,menu_order_num,meal_type,menu_bill_type,scale_type,room_table_num,original_ticket_uri,invoice_num,invoice_code,invoice_password,check_code,invoice_item,invoice_rate,invoice_remark,invoice_remark1,invoice_photo_uri,add_machine_status,add_machine_operator,add_menu_status,add_menu_operator,add_invoice_status,add_invoice_operator,customer_confirm_status,merchant_confirm_status,enter_account_status,pay_status,auth_user_code,auth_nick_name,accept_user_code,accept_nick_name,reservations_code,create_time,creator,update_time,updator,deleted FROM br_order WHERE deleted = ? AND order_status IN (?,?) AND order_status = ? AND ( agent_id ) ORDER BY create_time DESC LIMIT 0,10 2018-11-02 12:27:59.436 DEBUG 10644 --- [nio-8080-exec-1] c.b.d.o.order.OrderMapper.selectPage : ==> Parameters: false(Boolean), 2(String), 3(String), 2(String) 2018-11-02 12:27:59.453 DEBUG 10644 --- [nio-8080-exec-1] c.b.d.o.order.OrderMapper.selectPage : <== Total: 10

Lroyia commented 5 years ago

分页拼接出来的条件就是这样:WHERE deleted = ? AND order_status IN (?,?) AND order_status = ? AND ( agent_id ) ORDER BY create_time DESC LIMIT 0,10

Lroyia commented 5 years ago

Parameters: false(Boolean), 2(String), 3(String), 2(String)

Lroyia commented 5 years ago

agent_id在实体内是Integer类型

miemieYaho commented 5 years ago

你的 bug 没有复现出来,你提交个能复现的 demo 发上来一下吧

Lroyia commented 5 years ago

CREATE TABLE br_order ( id int(11) NOT NULL AUTO_INCREMENT, order_code varchar(64) NOT NULL COMMENT '订单号', order_time datetime NOT NULL COMMENT '订单时间', order_amount decimal(15,3) NOT NULL COMMENT '订单总额', agent_id int(11) NOT NULL COMMENT '代理商ID', agent_name varchar(64) DEFAULT NULL COMMENT '代理商名称', distributor_id int(11) DEFAULT NULL COMMENT '分销商ID', distributor_name varchar(64) DEFAULT NULL COMMENT '分销商名称', merchant_id int(11) NOT NULL COMMENT '商户id', merchant_name varchar(64) DEFAULT NULL COMMENT '商户名称', order_type_code varchar(150) DEFAULT NULL COMMENT '订单类型编码', order_type_name varchar(80) DEFAULT NULL COMMENT '订单类型名称', order_status int(2) NOT NULL COMMENT '订单状态(0:作废,1:等待初审,2:等待补充,3:等待再审,4:等待派送,5:已被接受任务,6:完成)', need_examine bit(1) NOT NULL COMMENT '是否需要审核', examine_status varchar(45) DEFAULT NULL COMMENT '审核状态', service_code varchar(120) NOT NULL COMMENT '产品服务编码(,隔开)', service_name varchar(64) DEFAULT NULL COMMENT '产品服务名称(,隔开)', salesman_id int(11) DEFAULT NULL COMMENT '业务员id', salesman_name varchar(45) NOT NULL COMMENT '业务员名称', sale_rate decimal(11,4) NOT NULL COMMENT '业务员点数', deductions_rate decimal(11,4) NOT NULL COMMENT '订单扣款率', customer_id int(11) NOT NULL COMMENT '客户id', customer_name varchar(64) DEFAULT NULL COMMENT '客户名称', company_id int(11) DEFAULT NULL COMMENT '公司id', company_name varchar(64) DEFAULT NULL COMMENT '公司名称', credit_card_num varchar(64) DEFAULT NULL COMMENT '信用卡卡号', num_of_meals int(11) DEFAULT NULL COMMENT '用餐人数', meal_time varchar(20) DEFAULT NULL COMMENT '用餐时间(午餐,晚餐)', bill_content varchar(10) DEFAULT NULL COMMENT '开票内容', remark varchar(100) DEFAULT NULL COMMENT '备注', first_examine_remark varchar(100) DEFAULT NULL COMMENT '初审备注', second_examine_remark varchar(100) DEFAULT NULL COMMENT '再审备注', card_machine_code varchar(32) DEFAULT NULL COMMENT '刷卡机编号', exchange_time datetime DEFAULT NULL COMMENT '交易时间', reference_num varchar(45) DEFAULT NULL COMMENT '参考号', batch_no varchar(32) DEFAULT NULL COMMENT '批次号', voucher_no varchar(32) DEFAULT NULL COMMENT '凭证号', auth_no varchar(32) DEFAULT NULL COMMENT '授权码', trace_no varchar(32) DEFAULT NULL COMMENT '流水号', credit_card_code varchar(32) DEFAULT NULL COMMENT '信用卡卡号', guangshang_card_code varchar(32) DEFAULT NULL COMMENT '广商卡号', opening_bank_name varchar(32) DEFAULT NULL COMMENT '开户行', machine_remark varchar(64) DEFAULT NULL COMMENT '刷卡机备用', machine_remark1 varchar(64) DEFAULT NULL COMMENT '刷卡机备用1', machine_remark2 varchar(64) DEFAULT NULL COMMENT '刷卡机备用2', machine_bill_photo_uri varchar(500) DEFAULT NULL COMMENT '刷卡单照片', people_num int(11) DEFAULT NULL COMMENT '人数', menu_order_num varchar(64) DEFAULT NULL COMMENT '菜单单号', meal_type varchar(45) DEFAULT NULL COMMENT '用餐类型(早午晚)', menu_bill_type varchar(45) DEFAULT NULL COMMENT '开票类型', scale_type varchar(45) DEFAULT NULL COMMENT '用餐规模类型(包房/桌)', room_table_num varchar(45) DEFAULT NULL COMMENT '房号/桌号', original_ticket_uri varchar(500) DEFAULT NULL COMMENT '原始消费小票', invoice_num varchar(64) DEFAULT NULL COMMENT '发票号码', invoice_code varchar(64) DEFAULT NULL COMMENT '发票代码', invoice_password varchar(200) DEFAULT NULL COMMENT '发票密码', check_code varchar(64) DEFAULT NULL COMMENT '校验码', invoice_item varchar(64) DEFAULT NULL COMMENT '开票项目', invoice_rate decimal(15,4) DEFAULT NULL COMMENT '发票税率', invoice_remark varchar(100) DEFAULT NULL COMMENT '发票备注', invoice_remark1 varchar(100) DEFAULT NULL COMMENT '发票备注1', invoice_photo_uri varchar(500) DEFAULT NULL COMMENT '发票照片uri', add_machine_status int(2) NOT NULL DEFAULT '0' COMMENT '添加刷卡机状态', add_machine_operator varchar(64) DEFAULT NULL COMMENT '添加刷卡机操作者', add_menu_status int(2) NOT NULL DEFAULT '0' COMMENT '添加菜单状态', add_menu_operator varchar(64) DEFAULT NULL COMMENT '添加菜单操作者', add_invoice_status int(2) NOT NULL DEFAULT '0' COMMENT '添加发票状态', add_invoice_operator varchar(64) DEFAULT NULL COMMENT '添加发票操作者', customer_confirm_status int(2) NOT NULL DEFAULT '0' COMMENT '客户回款确认状态(0未确认,1已确认)', merchant_confirm_status int(2) NOT NULL DEFAULT '0' COMMENT '商户回款确认状态(0未确认,1已确认)', enter_account_status int(2) NOT NULL DEFAULT '0' COMMENT '入账状态(0未入账,1已入账)', pay_status int(2) NOT NULL DEFAULT '0' COMMENT '支付状态(0未付款,1已付款)', auth_user_code varchar(64) DEFAULT NULL COMMENT '授权用户号', auth_nick_name varchar(64) DEFAULT NULL COMMENT '授权用户昵称', accept_user_code varchar(64) DEFAULT '' COMMENT '接受任务的用户编号', accept_nick_name varchar(64) DEFAULT '' COMMENT '接受任务的用户昵称', reservations_code varchar(64) DEFAULT NULL COMMENT '所属的预约单的单号', create_time datetime DEFAULT CURRENT_TIMESTAMP, creator varchar(45) DEFAULT NULL, update_time datetime DEFAULT CURRENT_TIMESTAMP, updator varchar(45) DEFAULT NULL, deleted bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (id) USING BTREE, KEY index_add_machine_status (add_machine_status) USING BTREE, KEY index_add_menu (add_menu_status) USING BTREE, KEY index_add_invoice (add_invoice_status) USING BTREE, KEY index_createTime (create_time) USING BTREE, KEY index_deleted (deleted) USING BTREE, KEY index_order_code (order_code) USING BTREE, KEY index_order_time (order_time) USING BTREE, KEY index_order_stauts (order_status) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COMMENT='订单';

实体: @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("br_order") public class Order extends Model {

private static final long serialVersionUID = 1L;

@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
 * 订单号
 */
@TableField("order_code")
private String orderCode;
/**
 * 订单时间
 */
@TableField("order_time")
private Date orderTime;
/**
 * 订单时间字符串
 */
@TableField(exist = false)
private String orderTimeStr;
/**
 * 订单总额
 */
@TableField("order_amount")
private BigDecimal orderAmount;
/**
 * 代理商ID
 */
@TableField("agent_id")
private Integer agentId;
/**
 * 代理商名称
 */
@TableField("agent_name")
private String agentName;
/**
 * 分销商ID
 */
@TableField("distributor_id")
private Integer distributorId;
/**
 * 分销商名称
 */
@TableField("distributor_name")
private String distributorName;
/**
 * 商户id
 */
@TableField("merchant_id")
private Integer merchantId;
/**
 * 商户名称
 */
@TableField("merchant_name")
private String merchantName;
/**
 * 订单类型编码
 */
@TableField("order_type_code")
private String orderTypeCode;
/**
 * 订单类型名称
 */
@TableField("order_type_name")
private String orderTypeName;
/**
 * 订单状态 0:作废,1:等待初审,2:等待补充,3:等待再审,4:等待派送,5:已被接受任务,6:完成
 */
@TableField("order_status")
private Integer orderStatus;
/**
 * 是否需要审核
 */
@TableField("need_examine")
private Boolean needExamine;
/**
 * 审核状态
 */
@TableField("examine_status")
private String examineStatus;
/**
 * 产品服务编码(,隔开)
 */
@TableField("service_code")
private String serviceCode;
/**
 * 产品服务名称(,隔开)
 */
@TableField("service_name")
private String serviceName;
/**
 * 业务员id
 */
@TableField("salesman_id")
private Integer salesmanId;
/**
 * 业务员名称
 */
@TableField("salesman_name")
private String salesmanName;
/**
 * 业务员点数
 */
@TableField("sale_rate")
private BigDecimal saleRate;
/**
 * 订单扣款率
 */
@TableField("deductions_rate")
private BigDecimal deductionsRate;
/**
 * 客户id
 */
@TableField("customer_id")
private Integer customerId;
/**
 * 客户名称
 */
@TableField("customer_name")
private String customerName;
/**
 * 公司id
 */
@TableField("company_id")
private Integer companyId;
/**
 * 公司名称
 */
@TableField("company_name")
private String companyName;
/**
 * 信用卡卡号
 */
@TableField("credit_card_num")
private String creditCardNum;
/**
 * 用餐人数
 */
@TableField("num_of_meals")
private Integer numOfMeals;
/**
 * 用餐时间(午餐,晚餐)
 */
@TableField("meal_time")
private String mealTime;
/**
 * 开票内容
 */
@TableField("bill_content")
private String billContent;
/**
 * 备注
 */
private String remark;
/**
 * 初审
 */
@TableField("first_examine_remark")
private String firstExamineRemark;
/**
 * 再审备注
 */
@TableField("second_examine_remark")
private String secondExamineRemark;
/**
 * 刷卡机编号
 */
@TableField("card_machine_code")
private String cardMachineCode;
/**
 * 交易时间
 */
@TableField("exchange_time")
private Date exchangeTime;
/**
 * 交易时间字符串
 */
@TableField(exist = false)
private String exchangeTimeStr;
/**
 * 参考号
 */
@TableField("reference_num")
private String referenceNum;
/**
 * 批次号
 */
@TableField("batch_no")
private String batchNo;
/**
 *  凭证号
 */
@TableField("voucher_no")
private String voucherNo;
/**
 * 授权号
 */
@TableField("auth_no")
private String authNo;
/**
 * 流水号
 */
@TableField("trace_no")
private String traceNo;
/**
 * 刷卡机付款信用卡信息编码
 */
@TableField("credit_card_code")
private String creditCardCode;
/**
 * 广商卡号 
 */
@TableField("guangshang_card_code")
private String guangshangCardCode;
/**
 * 开户行
 */
@TableField("opening_bank_name")
private String openingBankName;
/**
 * 刷卡机备用
 */
@TableField("machine_remark")
private String machineRemark;
/**
 * 刷卡机备用1
 */
@TableField("machine_remark1")
private String machineRemark1;
/**
 * 刷卡机备用2
 */
@TableField("machine_remark2")
private String machineRemark2;
/**
 * 刷卡单照片
 */
@TableField("machine_bill_photo_uri")
private String machineBillPhotoUri;
/**
 * 人数
 */
@TableField("people_num")
private Integer peopleNum;
/**
 * 菜单单号
 */
@TableField("menu_order_num")
private String menuOrderNum;
/**
 * 用餐类型(早午晚)
 */
@TableField("meal_type")
private String mealType;
/**
 * 开票类型
 */
@TableField("menu_bill_type")
private String menuBillType;
/**
 * 用餐规模类型(包房/桌)
 */
@TableField("scale_type")
private String scaleType;
/**
 * 房号/桌号
 */
@TableField("room_table_num")
private String roomTableNum;
/**
 * 原始消费小票
 */
@TableField("original_ticket_uri")
private String originalTicketUri;
/**
 * 发票号码
 */
@TableField("invoice_num")
private String invoiceNum;
/**
 * 发票代码
 */
@TableField("invoice_code")
private String invoiceCode;
/**
 * 发票密码
 */
@TableField("invoice_password")
private String invoicePassword;
/**
 * 校验码
 */
@TableField("check_code")
private String checkCode;
/**
 * 开票项目
 */
@TableField("invoice_item")
private String invoiceItem;
/**
 * 发票税率
 */
@TableField("invoice_rate")
private BigDecimal invoiceRate;
/**
 * 发票备注
 */
@TableField("invoice_remark")
private String invoiceRemark;
/**
 * 发票备注1
 */
@TableField("invoice_remark1")
private String invoiceRemark1;
/**
 * 发票照片uri
 */
@TableField("invoice_photo_uri")
private String invoicePhotoUri;
/**
 * 添加刷卡机状态 0未补充,1已补充,2免补充
 */
@TableField("add_machine_status")
private Integer addMachineStatus;
/**
 * 添加刷卡机操作者
 */
@TableField("add_machine_operator")
private String addMachineOperator;
/**
 * 添加菜单状态 0未补充,1已补充,2免补充
 */
@TableField("add_menu_status")
private Integer addMenuStatus;
/**
 * 添加菜单操作者
 */
@TableField("add_menu_operator")
private String addMenuOperator;
/**
 * 添加发票状态 0未补充,1已补充,2免补充
 */
@TableField("add_invoice_status")
private Integer addInvoiceStatus;
/**
 * 添加发票操作者
 */
@TableField("add_invoice_operator")
private String addInvoiceOperator;
/**
 * 客户回款确认状态
 */
@TableField("customer_confirm_status")
private Integer customerConfirmStatus;
/**
 * 商户回款确认状态
 */
@TableField("merchant_confirm_status")
private Integer merchantConfirmStatus;
/**
 * 入账状态(0未入账,1已入账)
 */
@TableField("enter_account_status")
private Integer enterAccountStatus;
/**
 * 支付状态(0未付款,1已付款)
 */
@TableField("pay_status")
private Integer payStatus;
/**
 * 授权用户的用户号
 */
@TableField("auth_user_code")
private String authUserCode;
/**
 * 授权用户的用户昵称
 */
@TableField("auth_nick_name")
private String authNickName;
/**
 * 接受任务的帐号
 */
@TableField("accept_user_code")
private String acceptUserCode;
/**
 * 接受任务的帐号昵称
 */
@TableField("accept_nick_name")
private String acceptNickName;
/**
 * 所属预约单的标识
 */
@TableField("reservations_code")
private String reservationsCode;
@TableField("create_time")
private Date createTime;
private String creator;
@TableField("update_time")
private Date updateTime;
private String updator;
private Boolean deleted;

@Override
protected Serializable pkVal() {
    return this.id;
}

}

// 条件封装 String statusIn = "2,3"; QueryWrapper wrapper = new QueryWrapper().eq(DELETE_FLAG_COLUMN, delete); wrapper = wrapper.in("order_status", Arrays.asList(statusIn.split(","))); List agentIds = new ArrayList<>(); agentIds.add(4); List distributorIds = new ArrayList<>(); wrapper.and(true, w -> w.in("agent_id", agentIds).or().in("distributor_id", distributorIds)); // 查询分页 IPage page = orderService.page(new Page<>(curPage, pageSize), wrapper.orderBy(true, orderRule, orderField));

miemieYaho commented 5 years ago

这和你的实体无关,只是单纯的 QueryWrapper 构建 sql, 你这种构建方式我没复现出 bug 的

Lroyia commented 5 years ago

那你需要怎样的demo。我也不知道给你

miemieYaho commented 5 years ago

// 条件封装 String statusIn = "2,3"; QueryWrapper wrapper = new QueryWrapper().eq(DELETE_FLAG_COLUMN, delete); wrapper = wrapper.in("order_status", Arrays.asList(statusIn.split(","))); List agentIds = new ArrayList<>(); agentIds.add(4); List distributorIds = new ArrayList<>(); wrapper.and(true, w -> w.in("agent_id", agentIds).or().in("distributor_id", distributorIds)); wrapper.getSqlSegment()的值符合你所说的那种情况

Lroyia commented 5 years ago

我自己也试着debug了一下,看到and的lambda结束后括号之间的QueryWrapper中的NormalSegmantList里面放的是 "agent_id" IN [4] OR, 会不会是什么循环截掉OR的时候,把 IN 和 [4]给截掉了。我对你们的框架构成并不怎么清楚,如果可以提供下执行列表的话,我看看能不能去试着把问题原因调试出来

miemieYaho commented 5 years ago

主要看 wrapper.getSqlSegment()这个的值

Lroyia commented 5 years ago

deleted = #{ew.paramNameValuePairs.MPGENVAL1} AND order_status IN (#{ew.paramNameValuePairs.MPGENVAL2},#{ew.paramNameValuePairs.MPGENVAL3}) AND order_status = #{ew.paramNameValuePairs.MPGENVAL4} AND ( agent_id IN (#{ew.paramNameValuePairs.MPGENVAL5}) ) 2018-11-02 15:39:25.925 DEBUG 9772 --- [nio-8080-exec-5] c.b.d.o.order.OrderMapper.selectPage : ==> Preparing: SELECT COUNT(1) FROM ( SELECT id,order_code,order_time,order_amount,agent_id,agent_name,distributor_id,distributor_name,merchant_id,merchant_name,order_type_code,order_type_name,order_status,need_examine,examine_status,service_code,service_name,salesman_id,salesman_name,sale_rate,deductions_rate,customer_id,customer_name,company_id,company_name,credit_card_num,num_of_meals,meal_time,bill_content,remark,first_examine_remark,second_examine_remark,card_machine_code,exchange_time,reference_num,batch_no,voucher_no,auth_no,trace_no,credit_card_code,guangshang_card_code,opening_bank_name,machine_remark,machine_remark1,machine_remark2,machine_bill_photo_uri,people_num,menu_order_num,meal_type,menu_bill_type,scale_type,room_table_num,original_ticket_uri,invoice_num,invoice_code,invoice_password,check_code,invoice_item,invoice_rate,invoice_remark,invoice_remark1,invoice_photo_uri,add_machine_status,add_machine_operator,add_menu_status,add_menu_operator,add_invoice_status,add_invoice_operator,customer_confirm_status,merchant_confirm_status,enter_account_status,pay_status,auth_user_code,auth_nick_name,accept_user_code,accept_nick_name,reservations_code,create_time,creator,update_time,updator,deleted FROM br_order WHERE deleted = ? AND order_status IN (?,?) AND order_status = ? AND ( null ) ORDER BY create_time DESC ) TOTAL 2018-11-02 15:39:25.926 DEBUG 9772 --- [nio-8080-exec-5] c.b.d.o.order.OrderMapper.selectPage : ==> Parameters: false(Boolean), 2(String), 3(String), 2(String) 2018-11-02 15:39:25.937 DEBUG 9772 --- [nio-8080-exec-5] c.b.d.o.order.OrderMapper.selectPage : ==> Preparing: SELECT id,order_code,order_time,order_amount,agent_id,agent_name,distributor_id,distributor_name,merchant_id,merchant_name,order_type_code,order_type_name,order_status,need_examine,examine_status,service_code,service_name,salesman_id,salesman_name,sale_rate,deductions_rate,customer_id,customer_name,company_id,company_name,credit_card_num,num_of_meals,meal_time,bill_content,remark,first_examine_remark,second_examine_remark,card_machine_code,exchange_time,reference_num,batch_no,voucher_no,auth_no,trace_no,credit_card_code,guangshang_card_code,opening_bank_name,machine_remark,machine_remark1,machine_remark2,machine_bill_photo_uri,people_num,menu_order_num,meal_type,menu_bill_type,scale_type,room_table_num,original_ticket_uri,invoice_num,invoice_code,invoice_password,check_code,invoice_item,invoice_rate,invoice_remark,invoice_remark1,invoice_photo_uri,add_machine_status,add_machine_operator,add_menu_status,add_menu_operator,add_invoice_status,add_invoice_operator,customer_confirm_status,merchant_confirm_status,enter_account_status,pay_status,auth_user_code,auth_nick_name,accept_user_code,accept_nick_name,reservations_code,create_time,creator,update_time,updator,deleted FROM br_order WHERE deleted = ? AND order_status IN (?,?) AND order_status = ? AND ( null ) ORDER BY create_time DESC 2018-11-02 15:39:25.937 DEBUG 9772 --- [nio-8080-exec-5] c.b.d.o.order.OrderMapper.selectPage : ==> Parameters: false(Boolean), 2(String), 3(String), 2(String) 2018-11-02 15:39:25.948 DEBUG 9772 --- [nio-8080-exec-5] c.b.d.o.order.OrderMapper.selectPage : <== Total: 0

Lroyia commented 5 years ago

deleted = #{ew.paramNameValuePairs.MPGENVAL1} AND order_status IN (#{ew.paramNameValuePairs.MPGENVAL2},#{ew.paramNameValuePairs.MPGENVAL3}) AND order_status = #{ew.paramNameValuePairs.MPGENVAL4} AND ( agent_id IN (#{ew.paramNameValuePairs.MPGENVAL5}) )

Lroyia commented 5 years ago

输出SqlSegment好像是没问题

miemieYaho commented 5 years ago

那你检查一下是不是可能和什么插件啊,或者夹在orm 与 db 中间的什么东西的原因

Lroyia commented 5 years ago

嗯。。现在还成了null了。。。纳闷。。

Lroyia commented 5 years ago

这个会跟mybatis的版本有关吗

miemieYaho commented 5 years ago

数据库无关,可能是被其他什么东西给干掉了,你自己排查一下, debug 跟踪一下

Lroyia commented 5 years ago

没啥其他的东西,也就SpringBoot和Druid

miemieYaho commented 5 years ago

那就断点跟踪一下

kelefun commented 5 years ago

CREATE TABLE br_order ( id int(11) NOT NULL AUTO_INCREMENT, ... ...

大兄弟 ,这是生产代码吧? 这么贴 真的好吗 [手动微笑]

miemieYaho commented 5 years ago

尝试使用 3.0.7.5-SNAPSHOT 版本,应该是已修复

Lroyia commented 5 years ago

尝试使用 3.0.7.5-SNAPSHOT 版本,应该是已修复

测试了,问题已修复,发布版大概什么时候有?

miemieYaho commented 5 years ago

明年吧,快照版可以用,我这边也都在用

miemieYaho commented 5 years ago

尝试使用 3.0.7