package com.freetmp.mbg.plugin.page; import com.freetmp.mbg.plugin.AbstractXmbgPlugin; import org.mybatis.generator.api.CommentGenerator; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.*; import java.util.ArrayList; import java.util.List; /** * MBG分页插件的抽象基类,提供统一的分页属性及分页操作 * 使用统一的数据模型:offset 当前页离开始记录的偏移,limit 当前页的记录数限制 * Created by LiuPin on 2015/1/30. */ public abstract class AbstractPaginationPlugin extends AbstractXmbgPlugin { public static final String LIMIT_NAME = "limit"; public static final String OFFSET_NAME = "offset"; public static final String BOUND_BUILDER_NAME = "BoundBuilder"; @Override public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { List<Field> fields = new ArrayList<>(); // add field, getter, setter for limit clause Field field = generateFieldDeclarationWithGetterSetterFor(LIMIT_NAME, new FullyQualifiedJavaType(Integer.class.getCanonicalName()), topLevelClass); fields.add(field); field = generateFieldDeclarationWithGetterSetterFor(OFFSET_NAME, new FullyQualifiedJavaType(Integer.class.getCanonicalName()), topLevelClass); fields.add(field); generateBuilderFor(BOUND_BUILDER_NAME, topLevelClass, fields); return true; } /** * This plugin is always valid - no properties are required */ public boolean validate(List<String> warnings) { return true; } }