mybatisplus getSqlSegment的and问题

时间:2025-03-19 07:36:12

mybatis-plus的${}的and问题

${} 不需要where标签包裹

${} 需要where,在条件的开头会不会自动拼接and?在版本好像去掉了在开头拼接and(我看源码下来,没有看到有拼接and,如果在哪里有,请告知下,谢谢),所以就自己去拼接and了,简单继承了下。

/**
 *
 * <p>
 *     mybatis plus 3.10以后的版本 {@link AbstractWrapper#getSqlSegment()}不支持在sql开头自动添加and,所以需要自己添加and。
 *     使用方式与原先基本一致,在sql中使用时使用${}获取sql语句
 * </p>
 */
public class MyQueryWrapper extends QueryWrapper {

    public String getSql() {
        return WrapperUtil.concatAnd(this);
    }
}
public class WrapperUtil {

    public static String concatAnd(QueryWrapper queryWrapper) {
        String sql = queryWrapper.isEmptyOfNormal() ? "" : "and " + queryWrapper.getSqlSegment();
        return sql;
    }

}