zoukankan      html  css  js  c++  java
  • mysql mybatis-generator plugin 有page实体类的分页

    page实体类

    package cn.zsmy.tmp;
    
    import java.io.Serializable;
    
    /**
     * 分页对象.
     * 
     */public final class Page implements Serializable {
    
        /**
         * 默认的序列化版本 id.
         */
        private static final long serialVersionUID = 1L;    
        /**
         * 分页查询开始记录位置.
         */
        private int               begin;    
        /**
         * 分页查看下结束位置.
         */
        private int               end;    
        /**
         * 每页显示记录数.
         */
        private int               length           = 20;    
        /**
         * 查询结果总记录数.
         */
        private int               totalRecords;    
        /**
         * 当前页码.
         */
        private int               pageNo;    
        /**
         * 总共页数.
         */
        private int               pageCount;    public Page() {
        }   
        
        /**
         * 构造函数.
         * 
         * @param begin
         * @param length
         */
        public Page(int begin, int length) {        
            this.begin = begin;        
            this.length = length;        
            this.end = this.begin + this.length;        
            this.pageNo = (int) Math.floor((this.begin * 1.0d) / this.length) + 1;
        }    
        
        /**
         * @param begin
         * @param length
         * @param count
         */
        public Page(int begin, int length, int totalRecords) {        
            this(begin, length);        
            this.totalRecords = totalRecords;
        }    
        
        /**
         * 设置页数,自动计算数据范围.
         * 
         * @param pageNo
         */
        public Page(int pageNo) {        
            this.pageNo = pageNo;
            pageNo = pageNo > 0 ? pageNo : 1;        
            this.begin = this.length * (pageNo - 1);        
            this.end = this.length * pageNo;
        }    
        
        /**
         * @return the begin
         */
        public int getBegin() {        
            return begin;
        }    
        
        /**
         * @return the end
         */
        public int getEnd() {        
            return end;
        }    
        /**
         * @param end
         * the end to set
         */
        public void setEnd(int end) {        
            this.end = end;
        }    
        
        /**
         * @param begin
         * the begin to set
         */
        public void setBegin(int begin) {        
            this.begin = begin;        
            if (this.length != 0) {            
                this.pageNo = (int) Math.floor((this.begin * 1.0d) / this.length) + 1;
            }
        }    
        
        /**
         * @return the length
         */
        public int getLength() {        
            return length;
        }    
        
        /**
         * @param length
         * the length to set
         */
        public void setLength(int length) {        
            this.length = length;        
            if (this.begin != 0) {            
                this.pageNo = (int) Math.floor((this.begin * 1.0d) / this.length) + 1;
            }
        }    
        
        /**
         * @return the totalRecords
         */
        public int getTotalRecords() {        
            return totalRecords;
        }    
        
        /**
         * @param totalRecords
         * the totalRecords to set
         */
        public void setTotalRecords(int totalRecords) {        
            this.totalRecords = totalRecords;       
            this.pageCount = (int) Math.floor((this.totalRecords * 1.0d) / this.length);        
            if (this.totalRecords % this.length != 0) {            
                this.pageCount++;
            }
        }    
        
        /**
         * @return the pageNo
         */
        public int getPageNo() {        
            return pageNo;
        }    
        
        /**
         * @param pageNo
         * the pageNo to set
         */
        public void setPageNo(int pageNo) {        
            this.pageNo = pageNo;
            pageNo = pageNo > 0 ? pageNo : 1;        
            this.begin = this.length * (pageNo - 1);        
            this.end = this.length * pageNo;
        }    
        
        /**
         * @return the pageCount
         */
        public int getPageCount() {        
            if (pageCount == 0) {            
                return 1;
            }        
            return pageCount;
        }    
        
        /**
         * @param pageCount
         * the pageCount to set
         */
        public void setPageCount(int pageCount) {       
            this.pageCount = pageCount;
        }    
        
        @Override
        public String toString() {        
            final StringBuilder builder = new StringBuilder("begin=").append(begin).append(", end=")
                    .append(end).append(", length=").append(length).append(", totalRecords=").append(
                            totalRecords).append(", pageNo=").append(pageNo).append(", pageCount=")
                    .append(pageCount);        return builder.toString();
        }
    }

    插件类

    package cn.zsmy.tmp;
    
    import java.util.List;
    
    import org.mybatis.generator.api.CommentGenerator;
    import org.mybatis.generator.api.IntrospectedTable;
    import org.mybatis.generator.api.PluginAdapter;
    import org.mybatis.generator.api.dom.java.Field;
    import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
    import org.mybatis.generator.api.dom.java.JavaVisibility;
    import org.mybatis.generator.api.dom.java.Method;
    import org.mybatis.generator.api.dom.java.Parameter;
    import org.mybatis.generator.api.dom.java.TopLevelClass;
    import org.mybatis.generator.api.dom.xml.Attribute;
    import org.mybatis.generator.api.dom.xml.TextElement;
    import org.mybatis.generator.api.dom.xml.XmlElement;
    
    /**
     * MySQL 分页生成插件。
     *
     */public final class MySQLPaginationPlugin extends PluginAdapter {
    
         @Override
            public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,
                    IntrospectedTable introspectedTable) {        // add field, getter, setter for limit clause
                addPage(topLevelClass, introspectedTable, "page");        return super.modelExampleClassGenerated(topLevelClass, introspectedTable);
            }   
         @Override
            public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element,
                    IntrospectedTable introspectedTable) {
                XmlElement page = new XmlElement("if");
                page.addAttribute(new Attribute("test", "page != null"));
                page.addElement(new TextElement("limit #{page.begin} , #{page.length}"));
                element.addElement(page);        return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable);
            }    /**
             * @param topLevelClass
             * @param introspectedTable
             * @param name
             */
            private void addPage(TopLevelClass topLevelClass, IntrospectedTable introspectedTable,
                    String name) {
                topLevelClass.addImportedType(new FullyQualifiedJavaType("cn.zsmy.tmp.Page"));
                CommentGenerator commentGenerator = context.getCommentGenerator();
                Field field = new Field();
                field.setVisibility(JavaVisibility.PROTECTED);
                field.setType(new FullyQualifiedJavaType("cn.zsmy.tmp.Page"));
                field.setName(name);
                commentGenerator.addFieldComment(field, introspectedTable);
                topLevelClass.addField(field);        char c = name.charAt(0);
                String camel = Character.toUpperCase(c) + name.substring(1);
                Method method = new Method();
                method.setVisibility(JavaVisibility.PUBLIC);
                method.setName("set" + camel);
                method.addParameter(new Parameter(new FullyQualifiedJavaType("cn.zsmy.tmp.Page"), name));
                method.addBodyLine("this." + name + "=" + name + ";");
                commentGenerator.addGeneralMethodComment(method, introspectedTable);
                topLevelClass.addMethod(method);
                method = new Method();
                method.setVisibility(JavaVisibility.PUBLIC);
                method.setReturnType(new FullyQualifiedJavaType("cn.zsmy.tmp.Page"));
                method.setName("get" + camel);
                method.addBodyLine("return " + name + ";");
                commentGenerator.addGeneralMethodComment(method, introspectedTable);
                topLevelClass.addMethod(method);
            }    /**
             * This plugin is always valid - no properties are required
             */
            public boolean validate(List<String> warnings) {        
                return true;
            }
        }

     要注意的地方,page类地址要写对,可以和插件类放一起

    generator.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
        <!-- oracle lib location -->
        <classPathEntry location="E:ackup
    epositorymysqlmysql-connector-java5.1.40mysql-connector-java-5.1.40.jar" />
        <context id="DB2Tables" targetRuntime="MyBatis3">
              <!-- 生成的pojo,将implements Serializable -->  
            <!-- <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>   -->
            
            <plugin type="cn.zsmy.tmp.DeleteLogicByIdsPlugin"></plugin>
            <plugin type="cn.zsmy.tmp.MySQLPaginationPlugin"></plugin>
            
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://192.168.1.2:3306/palm_2_0_16" userId="root"
                password="sqj888">
            </jdbcConnection>
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
            
            <!-- model package and location -->
            <javaModelGenerator targetPackage="cn.zsmy.entity" targetProject="palmdoctor.codesrcmainjava">
                <property name="enableSubPackages" value="true" />
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
            <!-- mapping package and location -->
            <sqlMapGenerator targetPackage="cn.zsmy.mapper" targetProject="palmdoctor.codesrcmainjava">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
            <!-- dao package and location -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="cn.zsmy.mapper" targetProject="palmdoctor.codesrcmainjava">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
            
            
            <!-- enableSelectByExample不为true就不能生成分页的示例 -->
            <table tableName="tb_hello" domainObjectName="Hello"            
                
                 />
            
                
        </context>
    </generatorConfiguration>
  • 相关阅读:
    Atitit.随时间变色特效 ---包厢管理系统的规划
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit.执行cli cmd的原理与调试
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6252976.html
Copyright © 2011-2022 走看看