//AbstractSqlTermCustomer提供了一些便利的方法
@org.springframework.stereotype.Component //注入到spring自动开启支持此条件
public class UserInDepartmentTerm extends AbstractSqlTermCustomizer{
public String getTermType() {
public Dialect[] forDialect() {
//对特定对数据库类型生效,返回null时对全部支持对数据库类型生效
public SqlAppender accept(String wherePrefix, Term term, RDBColumnMetaData column, String tableAlias) {
//当传入了my-term条件对时候,会调用此方法进行拼接
ChangedTermValue termValue =createChangedValue(term);
List<Object> idList = BoostTermTypeMapper.convertList(column, termValue.getOld());
SqlAppender appender= new SqlAppender();
appender.add(createColumnName(column,tableAlias),"in (select user_id from user_department where t_id");
Object newValue= appendCondition(idList,wherePrefix,appender);
termValue.setValue(newValue);