修改字段为null
目前就了解下面这三种。其他遇到了再补充。
1、字段加注解
在字段上加上 @TableField(updateStrategy = FieldStrategy.IGNORED) 注解,表示字段更新策略允许null值,如下。
//...
/**备注*/
private String remark;
// 该字段允许设置null值
/**有效天数*/
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Integer massDay;
//...
2、使用UpdateWrapper<?>加上update()
通过UpdateWrapper对象的 set(字段,值) 方法设置null值,也可以指定条件,如下。
//更新数据库
UpdateWrapper<InqOrderDetail> queryWrapper = new UpdateWrapper<>();
queryWrapper.set("assign_handler_id", null).set("assign_handler_name", null)
.set("update_id", user.getId()).set("create_time", new Date())
.in("id", bo.getIds());
inqOrderDetailService.update(queryWrapper);
翻译的话就是
update t_inq_order_detail set assign_handler_id = null,assign_handler_name = null,...
where id in (...)
3、手动写sql
这个就不说了。
关联表条件加分页查询
需要自定义sql,结合IPage和Wrapper使用。直接放代码。如下。
先看mapper的
public interface InqOrderDetailMapper extends BaseMapper<InqOrderDetail> {
@Select("select to_char(create_time, 'YYYY-MM') as mouth, count(id) as count, count(sales_order_id) as salesOrderNum " +
"from t_inq_order_detail where brand_name = #{brandName} and brand_no = #{brandNo} group by mouth")
List<InqOrderDetailStatisticsVO> getCountGroupByMouth(@Param("brandName") String brandName, @Param("brandNo") String brandNo);
//关联表头分页
//IPage iPage会把分页等参数自动拼接到sql上,sql不用写limit等。
IPage<InqOrderDetailCPVO> joinAskOrderPage(IPage iPage, @Param("ew") Wrapper queryWrapper);
}
再看mapper.xml的sql
<!--<include refid="Ask_Column_List"/> 是b表的字段,封装在InqOrderDetailCPVO对象-->
<!--${ew.customSqlSegment}对应Wrapper,是写死的,源码就是获取Wrapper的customSqlSegment属性来拼接sql的-->
<select id="joinAskOrderPage" resultType="...InqOrderDetailCPVO">
select a.*,<include refid="Ask_Column_List"/>
from t_inq_order_detail a left join t_inq_order b on a.inq_order_id = b.id ${ew.customSqlSegment}
</select>
使用的时候就是
QueryWrapper<InqOrderDetailCPVO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("b.id", ids).eq("a.is_delete", 1);
IPage<InqOrderDetailCPVO> iPage = new Page(getCurrentPageNo(), Integer.MAX_VALUE);
IPage<InqOrderDetailCPVO> page = inqOrderDetailService.joinAskOrderPage(iPage, queryWrapper);
更多新玩意待下次发现。。。
其他详细内容可以参考https://blog.csdn.net/maqingbin8888/article/details/106493302。这篇写的也不错,挺详细的