Mybatis三剑客

一、Mybatis-generator

Mybatis-generator可以帮助开发人员快速实现从表到java对象的生成工作,让开发人员解放出来更专注于业务逻辑的开发。

1、在pom.xml中添加插件,并配置对表重复生成时会覆盖

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.7</version>

    <configuration>
        <overwrite>true</overwrite>
    </configuration>
</plugin>

2、在resources目录下新建generatorConfig.xml,从官网http://mybatis.org/generator/configreference/xmlconfig.html中粘贴示例,再根据自身项目修改

<?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="G:\Projects\JavaProjects\mysql-connector-java-5.1.6.jar" />

    <context id="DB2Tables" targetRuntime="MyBatis3">

        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />

        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/mall?characterEncoding=utf-8"
                        userId="root"
                        password="root">
        </jdbcConnection>

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

        <javaModelGenerator targetPackage="com.imooc.mall.pojo" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.imooc.mall.dao"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <table tableName="mall_order" domainObjectName="Order" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>


    </context>
</generatorConfiguration>

3、generatorConfig.xml配置详解:http://www.imooc.com/article/21444

(1)配置连接数据库所用的驱动,这里选用5.1.6版本

<classPathEntry location="G:\Projects\JavaProjects\mysql-connector-java-5.1.6.jar" />

(2)配置不再追加xml内容和不添加注释

<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />

<commentGenerator>
    <property name="suppressAllComments" value="true"/>
</commentGenerator>

(3)配置数据库相关设置

<jdbcConnection 
    driverClass="com.mysql.jdbc.Driver"
    connectionURL="jdbc:mysql://127.0.0.1:3306/mall?characterEncoding=utf-8"
    userId="root"
    password="root">
</jdbcConnection>

(4)配置pojo,即实体类生成位置

<javaModelGenerator targetPackage="com.imooc.mall.pojo" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
</javaModelGenerator>

(5)配置mapper,即Mapper.xml的位置

<sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
</sqlMapGenerator>

(6)配置dao,即接口文件的位置

<javaClientGenerator type="XMLMAPPER" targetPackage="com.imooc.mall.dao"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
</javaClientGenerator>

(7)配置需要生成的表,并确定生成的前缀,取消一些example方法

 <table tableName="mall_order" domainObjectName="Order" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/>

4、开始生成。在idea的终端中输入命令

mvn mybatis-generator:generate

img

二、Mybatis-plugin

1、在idea中下载插件,并重启idea

img

2、通过点击箭头实现dao接口中的方法与对应xml实现的相互跳转

img

三、Mybatis-PageHelper

官方文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md

1、引入依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.13</version>
</dependency>

2、在调用dao前加上PageHelper.startPage(pageNum, pageSize),pageNum指第几页,pageSize指一页的数量

PageHelper.startPage(pageNum, pageSize);
List<ProductVO> productVOList = productMapper.selectByCategoryIdSet(categoryIdSet);

3、查找完成后获取相关信息

PageInfo pageInfo = new PageInfo<>(productList);
pageInfo.setList(productVOList);

“`java
{
"status": 0,
"data": {
"total": 4,
"list": [],
"pageNum": 3,
"pageSize": 4,
"size": 0,
"startRow": 0,
"endRow": 0,
"pages": 1,
"prePage": 2,
"nextPage": 0,
"isFirstPage": false,
"isLastPage": false,
"hasPreviousPage": true,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1
}
}
“`

发表评论

后才能评论