wb.ouyang

毕竟几人真得鹿,不知终日梦为鱼

导航

mybatis generator以及分页插件com.qiukeke.mybatis.plugins.MySQLLimitPlugin

1、官网:http://www.mybatis.org/generator/

  mybatis generator 生成的文件,包含三类:

  1)Model 实体文件,一个数据库表生成一个 Model 实体;

  2)ModelExample 文件,此文件和实体文件在同一目录下,主要用于查询条件构造;

  3)Mapper 接口文件,数据数操作方法都在此接口中定义;

  4)Mapper XML 配置文件;

 

2、安装 eclipse 插件 mybatis generator

  Help/Eclipse Marketplace...,在eclipse marketplace中搜索 mybatis generator

  可以查看该插件支持的版本

 

  查看自己使用的eclipse的版本:Help/About Eclipse IDE。另外官网:http://www.mybatis.org/generator/也链接了eclipse的mybatis generator插件:

 

3、eclipse 的 mybatis generator 插件的使用

  3.1、新建一个maven工程test_mybatis_generator,引入依赖

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.36</version>
    </dependency>
    <!-- limit selection -->
    <dependency>
        <groupId>com.qiukeke</groupId>
        <artifactId>mybatis-generator-limit-plugin</artifactId>
        <version>1.0.4</version>
    </dependency>
</dependencies>

  3.2、新建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>  

    <!-- 数据库驱动  
    <classPathEntry  location="C:\Users\xxx\.m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/> 
    -->

    <context id="DB2Tables"  targetRuntime="MyBatis3">  
        <plugin type="com.qiukeke.mybatis.plugins.MySQLLimitPlugin"></plugin>
    
        <commentGenerator>  
            <property name="suppressDate" value="true"/>  
            <property name="suppressAllComments" value="true"/>  
        </commentGenerator>
        
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://xx.xxx.xx.xxx:3306/test" userId="xxx" password="xxx">  
        </jdbcConnection> 

        <javaTypeResolver>  
            <property name="forceBigDecimals" value="false"/>  
        </javaTypeResolver>  

        
        <javaModelGenerator targetPackage="com.oy.model" targetProject="test_mybatis_generator">  
            <property name="enableSubPackages" value="true"/>  
            <property name="trimStrings" value="true"/>  
        </javaModelGenerator>  
        <sqlMapGenerator targetPackage="com.oy.mapping" targetProject="test_mybatis_generator">  
            <property name="enableSubPackages" value="true"/>  
        </sqlMapGenerator>  
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.oy.dao" targetProject="test_mybatis_generator">  
            <property name="enableSubPackages" value="true"/>  
        </javaClientGenerator>  
    
        <table tableName="exp_user" domainObjectName="User" enableCountByExample="true" 
            enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" 
            selectByExampleQueryId="true"></table>
        
    </context>  
</generatorConfiguration>

  3.3、选中generator.xml,右键/Run as

  

 

4、不使用eclipse插件

  4.1、新建一个普通java工程(或maven工程),新建一个含main方法的类:

package com.oy.generator;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class Generator {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/generator.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

  4.2、在src下新建generator.xml,内容与前面的一样。

  targetProject=".\src"
<javaModelGenerator targetPackage="com.oy.model" targetProject=".\src">  
    <property name="enableSubPackages" value="true"/>  
    <property name="trimStrings" value="true"/>  
</javaModelGenerator>  
<sqlMapGenerator targetPackage="com.oy.mapping" targetProject=".\src">  
    <property name="enableSubPackages" value="true"/>  
</sqlMapGenerator>  
<javaClientGenerator type="XMLMAPPER" targetPackage="com.oy.dao" targetProject=".\src">  
    <property name="enableSubPackages" value="true"/>  
</javaClientGenerator>  

 

  4.3、引入jar包,或通过maven导入

   

  4.4、运行main()方法。

 

5、使用maven插件:mybatis-generator-maven-plugin

  参考:https://www.cnblogs.com/Neonuu/p/5865226.html

 

6、在generatro.xml中添加了<plugin type="com.qiukeke.mybatis.plugins.MySQLLimitPlugin"></plugin>,从而生成的mybatis代码支持分页。

也可以参考其他博客实现分页:

  1)https://www.cnblogs.com/fengzheng/p/5889312.html

  2)https://blog.csdn.net/xiao__gui/article/details/51333693/

 

7、如果使用上面的分页插件mybatis-generator-limit-plugin-1.0.4.jar

  简单演示如何在代码中使用分页:

public PageBean<CommissionRecord> getCommissionRecords(CommissionRecord userCommisssion,
        PageBean<CommissionRecord> pageBean) {
    CommissionRecordExample example = new CommissionRecordExample();
    CommissionRecordExample.Criteria criteria = example.createCriteria();

    if (userCommisssion.getUserid() != null) {
        criteria.andUseridEqualTo(userCommisssion.getUserid());
    }
    if (userCommisssion.getBegin() != null) {
        criteria.andBeginEqualTo(userCommisssion.getBegin());
    }
    if (userCommisssion.getEnd() != null) {
        criteria.andEndEqualTo(userCommisssion.getEnd());
    }
    if (userCommisssion.getType() != null) {
        criteria.andTypeEqualTo(userCommisssion.getType());
    }
    if (userCommisssion.getStatus() != null) {
        criteria.andStatusEqualTo(userCommisssion.getStatus());
    }
    if (pageBean != null && pageBean.getPage() > 0 && pageBean.getRows() > 0) {
        example.setOffset(pageBean.getStart());
        example.setLimit(pageBean.getRows());
    }

    if (pageBean != null && UtilFunctions.isNotEmpty(pageBean.getSortby())) {
        if (UtilFunctions.isEmpty(pageBean.getSort())) {
            example.setOrderByClause(pageBean.getSortby() + " desc");
        } else {
            example.setOrderByClause(pageBean.getSortby() + " " + pageBean.getSort());
        }
    } else {
        example.setOrderByClause("addtime desc");
    }

    List<CommissionRecord> list = commissionRecordDao.selectByExample(example);
    pageBean.setBeanList(list);
    pageBean.setTotalRows(getCount(userCommisssion));
    return pageBean;
}

 

  pageBean.class

public class PageBean<T> {
    private int page;// 当前页
    private int rows;// 每页记录数pageSize、limit
    private long totalRows;// 总记录数
    // private int start;// 起始页offset
    // private int totalPages;// 总页数:totalPages
    private List<T> beanList;// 当前页的记录
    private String url;
    private String sortby;
    private String sort;

    public PageBean() {
        super();
    }

    public PageBean(int page, int rows) {
        super();
        this.page = page;
        this.rows = rows;
    }
    
    public PageBean(String sortby, String sort) {
        super();
        this.sortby = sortby;
        this.sort = sort;
    }
    
    public PageBean(int page, int rows, String sortby, String sort) {
        super();
        this.page = page;
        this.rows = rows;
        this.sortby = sortby;
        this.sort = sort;
    }

    // 通过page和rows计算start
    public int getStart() {
        return (page - 1) * rows;
    }

    // 通过总记录数和每页记录数来计算总页数
    public int getTotalPages() {
        // 总页数=总记录数/每页记录数
        int tp = (int) totalRows / rows;
        return totalRows % rows == 0 ? tp : tp + 1;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public long getTotalRows() {
        return totalRows;
    }

    public void setTotalRows(long totalRows) {
        this.totalRows = totalRows;
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }

    public List<T> getBeanList() {
        return beanList;
    }

    public void setBeanList(List<T> beanList) {
        this.beanList = beanList;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getSortby() {
        return sortby;
    }

    public void setSortby(String sortby) {
        this.sortby = sortby;
    }

    public String getSort() {
        return sort;
    }

    public void setSort(String sort) {
        this.sort = sort;
    }
}

 ---

posted on 2019-05-01 15:59  wenbin_ouyang  阅读(1114)  评论(0)    收藏  举报