Mybatis Generator自定义插件

2018-05-26 框架 MyBatis

使用Mybatis就一定离不开MyBatis Generator这款代码生成插件,而这款插件自身还提供了插件拓展功能用于强化插件本身,官方已经提供了一些拓展插件,本文介绍通过该插件机制来强化Mybatis Generator本身,方便和减少我们平时的代码开发量。
项目地址: https://github.com/cayzlh/mybatis-mbg-plugins


直接引入, 在pom.xml的相应节点中添加:

<dependencies>
    <dependency>
        <groupId>com.cayzlh</groupId>
        <artifactId>plugins</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>cayzlh-mvn-repo</id>
        <name>cayzlh-mvn-repo</name>
        <url>https://raw.github.com/cayzlh/mavenRepository/master/repository</url>
    </repository>
</repositories>

或者, 下载代码, 编译后install到本地仓库

MBG的具体用法及配置文件等, 这里不做阐述, 查看 MBG官方文档 即可.
提供一个参考配置模板: generatorConfig.xml

在项目中使用

在pom.xml 中添加:

<build>
    <defaultGoal>install</defaultGoal>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
            <executions>
                <execution>
                    <id>Generate MyBatis Artifacts</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.3.6</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.31</version>
                </dependency>
                <dependency>
                    <groupId>com.cayzlh</groupId>
                    <artifactId>plugins</artifactId>
                    <version>1.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

生成代码

在idea的maven管理界面找到插件, 右键 - run.
生成代码

然后, 生成的代码就到了你指定的目录了.

使用效果

Model

/**
 * Description:
 *   用来测试mbg
 *
 * Table:
 *   t_demo
 *
 * @author Ant丶
 * @mbg.generated
 */
public class Demo implements Serializable {
    /**
     * Description:
     *   ID
     *
     * Column:
     *   t_demo.id
     *
     * @mbg.generated
     */
    private Long id;

    /**
     * Description:
     *   邮箱
     *
     * Column:
     *   t_demo.email
     *
     * @mbg.generated
     */
    private String email;

    /**
     *
     * Column:
     *   t_demo.phone
     *
     * @mbg.generated
     */
    private String phone;

    /**
     *
     * Column:
     *   t_demo.createTime
     *
     * @mbg.generated
     */
    private Date createtime;

    /**
     *
     * Column:
     *   t_demo.updateTime
     *
     * @mbg.generated
     */
    private Date updatetime;
    ....
}

mapper.java

public interface DemoMapper {
    /**
     * Description:  使用Example统计总数
     *
     * @param  example example
     * @return countByExample 的结果.
     * @mbg.generated
     */
    long countByExample(DemoExample example);

    /**
     * Description:  根据Example删除
     *
     * @param  example example
     * @return deleteByExample 的结果.
     * @mbg.generated
     */
    int deleteByExample(DemoExample example);

    /**
     * Description:  根据主键删除
     *
     * @param  id id
     * @return deleteByPrimaryKey 的结果.
     * @mbg.generated
     */
    int deleteByPrimaryKey(Long id);

    /**
     * Description:  插入一条记录
     *
     * @param  record record
     * @return insert 的结果.
     * @mbg.generated
     */
    int insert(Demo record);

    /**
     * Description:  插入一条记录, 实现选择入库
     *
     * @param  record record
     * @return insertSelective 的结果.
     * @mbg.generated
     */
    int insertSelective(Demo record);

    /**
     * Description:  根据Example查询返回数据
     *
     * @param  example example
     * @return selectByExample 的结果.
     * @mbg.generated
     */
    List<Demo> selectByExample(DemoExample example);

    /**
     * Description:  查询结果选择性返回
     *
     * @param  example example
     * @param  selective selective
     * @return selectByExampleSelective 的结果.
     * @mbg.generated
     */
    List<Demo> selectByExampleSelective(@Param("example") DemoExample example, @Param("selective") Demo.Column ... selective);

    /**
     * Description:  根据主键查询返回数据
     *
     * @param  id id
     * @return selectByPrimaryKey 的结果.
     * @mbg.generated
     */
    Demo selectByPrimaryKey(Long id);

    /**
     * Description:  通过主键查询的结果选择性返回
     *
     * @param  id id
     * @param  selective selective
     * @return selectByPrimaryKeySelective 的结果.
     * @mbg.generated
     */
    Demo selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") Demo.Column ... selective);

    /**
     * Description:  Selective选择插入更新增强功能
     *
     * @param  record record
     * @param  example example
     * @return updateByExampleSelective 的结果.
     * @mbg.generated
     */
    int updateByExampleSelective(@Param("record") Demo record, @Param("example") DemoExample example);

    /**
     * Description:  根据Example更新数据
     *
     * @param  record record
     * @param  example example
     * @return updateByExample 的结果.
     * @mbg.generated
     */
    int updateByExample(@Param("record") Demo record, @Param("example") DemoExample example);

    /**
     * Description:  根据主键更新数据, 可选择
     *
     * @param  record record
     * @return updateByPrimaryKeySelective 的结果.
     * @mbg.generated
     */
    int updateByPrimaryKeySelective(Demo record);

    /**
     * Description:  根据主键更新数据
     *
     * @param  record record
     * @return updateByPrimaryKey 的结果.
     * @mbg.generated
     */
    int updateByPrimaryKey(Demo record);

    /**
     * Description:  查询单条数据
     *
     * @param  example example
     * @return selectOneByExample 的结果.
     * @mbg.generated
     */
    Demo selectOneByExample(DemoExample example);

    /**
     * Description:  查询单条数据字段选择性返回
     *
     * @param  example example
     * @param  selective selective
     * @return selectOneByExampleSelective 的结果.
     * @mbg.generated
     */
    Demo selectOneByExampleSelective(@Param("example") DemoExample example, @Param("selective") Demo.Column ... selective);

    /**
     * Description:  批量插入
     *
     * @param  list list
     * @return batchInsert 的结果.
     * @mbg.generated
     */
    int batchInsert(@Param("list") List<Demo> list);

    /**
     * Description:  可选择字段批量插入
     *
     * @param  list list
     * @param  selective selective
     * @return batchInsertSelective 的结果.
     * @mbg.generated
     */
    int batchInsertSelective(@Param("list") List<Demo> list, @Param("selective") Demo.Column ... selective);

    /**
     * Description:  存在即更新(saveOrUpdate)
     *
     * @param  record record
     * @return upsert 的结果.
     * @mbg.generated
     */
    int upsert(Demo record);

    /**
     * Description:  存在即更新, 可选字段(saveOrUpdate)
     *
     * @param  record record
     * @return upsertSelective 的结果.
     * @mbg.generated
     */
    int upsertSelective(Demo record);
}

使用

Demo链式调用

Demo demo = new Demo.Builder()
                .email("243689185@qq.com")
                .phone("13800138000")
                .build();

Example使用

DemoExample example = new DemoExample()
                .createCriteria()
                .andIdEqualTo(1l)
                .example();

以上

MySQL

相关推荐



版权声明




留言区

文章目录