mybatis 扩展插件

607 阅读2分钟
  • 还在为mybatis 生成烦恼吗?扩展市面上大部分需求
  • 为了方便使用,将和mybatis-generator主版本号对齐
  • 简介
    • 支持 Mybatis3 和 mybatis-dynamic-sql
    • 注意:需要先学习mybatis-generator-maven-plugin的使用 mybatis.org/generator/r…
    • 注意:需要先学习生成文件的配置 mybatis.org/generator/c…
    • 提供 Entity,Dao 扩展。
    • 提供 Service,Controller 生成。
添加依赖(示例)
    <dependencies>
        <dependency>
            <groupId>com.github.uinio</groupId>
            <artifactId>mybatis-extension-plugin</artifactId>
            <version>1.4.0</version>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <!--mysql As an example-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.21</version>
                    </dependency>
                    <!--mybatis-extension-plugin-->
                    <dependency>
                        <groupId>com.github.uinio</groupId>
                        <artifactId>mybatis-extension-plugin</artifactId>
                        <version>1.4.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

插件使用

LombokPlugin (lombok生成)

属性默认值简介
datafalse包含getter,setter,toString,equalsAndHashCode,requiredArgsConstructor
getterfalsegetter
setterfalsegetter
toStringfalsetoString
equalsAndHashCodefalseequalsAndHashCode
builderfalsebuilder
noArgsConstructorfalsenoArgsConstructor
allArgsConstructorfalseallArgsConstructor
requiredArgsConstructorfalserequiredArgsConstructor
lombok使用
  • 元素是元素的子元素。可以在上下文中指定任意数量的插件。
 <plugin type="com.github.uinio.mybatis.LombokPlugin">
    <property name="data" value="true"/>
    <property name="builder" value="true"/>
    <property name="noArgsConstructor" value="true"/>
    <property name="allArgsConstructor" value="true"/>
 </plugin>

DomainPlugin (实体类扩展)

属性默认值简介
serializablefalse是否实现Serializable
dateSerializefalse日期序列化只支持JDK8日期类型
jsonnull日期反序列化只支持JDK8日期类型(选项: fastJson , jackson )
实体类使用
  • 元素是元素的子元素。可以在上下文中指定任意数量的插件。
 <plugin type="com.github.uinio.mybatis.DomainPlugin">
    <property name="serializable" value="true"/>
    <property name="dateSerialize" value="true"/>
    <property name="json" value="jackson"/>
 </plugin>

RepositoryPlugin (数据访问对象DAO扩展)

属性默认值简介
suppressAllCommentsfalse是否去掉生成的注释
repositorynullDao父类,默认为null
dao使用
  • 元素是元素的子元素。可以在上下文中指定任意数量的插件。
 <plugin type="com.github.uinio.mybatis.RepositoryPlugin">
   <property name="suppressAllComments" value="true"/>
   <property name="repository" value="org.example.MybatisRepository"/>
 </plugin>

ServicePlugin (Service生成)

属性默认值简介
targetProjectnull生成路径例如:src/main/java
targetPackagenull生成所在包路径例如:org.example.service
basicServicenullservice接口父类, 默认为null
basicServiceImplnullserviceImpl父类, 默认为null
service 使用
  • 元素是元素的子元素。可以在上下文中指定任意数量的插件。
 <plugin type="com.github.uinio.mybatis.ServicePlugin">
    <property name="targetProject" value="src/main/java"/>
    <property name="targetPackage" value="org.example.service"/>
    <property name="basicService" value="org.example.BaseService"/>
    <property name="basicServiceImpl" value="org.example.BaseServiceImpl"/>
 </plugin>

ControllerPlugin (Controller生成)

属性默认值简介
targetProjectnull生成路径例如:src/main/java
targetPackagenull生成所在包路径例如:org.example.controller
restfalsetrue为@RestController,false为@Controller
respondnullcontroller返回结果集 默认为null
controller 使用
  • 元素是元素的子元素。可以在上下文中指定任意数量的插件。
 <plugin type="com.github.uinio.mybatis.ControllerPlugin">
     <property name="targetProject" value="src/main/java"/>
     <property name="targetPackage" value="org.example.controller"/>
     <property name="rest" value="true"/>
     <property name="respond" value="org.example.Respond"/>
 </plugin>
生成展示(部份代码)
@Slf4j
@RestController
@RequestMapping("example")
public class ExampleController {

    @Autowired
    private ExampleService exampleService;

    @GetMapping("findAll")
    public Respond findAll() {
       return null;
    }
    //...
}

生成

  • idea打开右侧 maven->plugins->mybatis-generator-> mybatis-generator:generator 点击执行
  • 或 mvn mybatis-generator:generator