1. mybatis-generator+plugins

单独的generator是免不了全部人工的,配上各种插件则不然,感谢项目

itfsw/mybatis-generator-plugin

使用如下:

pom.xml

	<dependencies>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${springboot.mybatis.version}</version>
</dependency>
<dependency>
<groupId>com.itfsw</groupId>
<artifactId>mybatis-generator-plugin</artifactId>
<version>${mybatis.generator.itfsw.version}</version>
</dependency>
</dependencies> <build>
<finalName>qna-deploy</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis.generator.version}</version>
<dependencies>
<dependency>
<groupId> mysql</groupId>
<artifactId> mysql-connector-java</artifactId>
<version> 5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>${mybatis.generator.version}</version>
</dependency>
<dependency>
<groupId>com.itfsw</groupId>
<artifactId>mybatis-generator-plugin</artifactId>
<version>${mybatis.generator.itfsw.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>deploy</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!--允许移动生成的文件 -->
<verbose>true</verbose>
<!-- 是否覆盖 -->
<overwrite>true</overwrite>
<!-- 自动生成的配置 -->
<configurationFile>
src/main/resources/mybatis-generator.xml</configurationFile>
</configuration>
</plugin>
</plugins>
</build>

mybatis-generator.xml 这里我根据我自己项目的情况简况选取了部分插件,更多插件可以见上面给出的github链接。

<?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="mysql-connector-java-5.1.16-bin.jar"/>-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 查询单条数据插件(selectOne) -->
<plugin type="com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin"/>
<!-- Example Criteria 增强插件(可以使用.example()方法) -->
<plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"/>
<!-- 数据Model属性对应Column获取插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/>
<!-- 批量插入插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"/>
<!-- 存在即更新插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.UpsertPlugin">
<!--
支持upsertByExample,upsertByExampleSelective操作
!需开启allowMultiQueries=true多条sql提交操作,所以不建议使用!插件默认不开启
-->
<property name="allowMultiQueries" value="false"/>
<!--
开启批量功能,支持batchUpsert,batchUpsertWithBLOBs,batchUpserSelective
!这几个方法中无法支持IncrementsPlugin的方法!插件默认不开启
-->
<property name="allowBatchUpsert" value="true"/>
</plugin>
<!-- Lombok插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.LombokPlugin">
<!-- @Data 默认开启,同时插件会对子类自动附加@EqualsAndHashCode(callSuper = true),@ToString(callSuper = true) -->
<property name="@Data" value="true"/>
<!-- @Builder 必须在 Lombok 版本 >= 1.18.2 的情况下开启,对存在继承关系的类自动替换成@SuperBuilder -->
<property name="@Builder" value="false"/>
<!-- @NoArgsConstructor 和 @AllArgsConstructor 使用规则和Lombok一致 -->
<property name="@AllArgsConstructor" value="true"/>
<property name="@NoArgsConstructor" value="true"/>
<!-- @Getter、@Setter、@Accessors 等使用规则参见官方文档 -->
<property name="@Accessors(chain = true)" value="false"/>
<!-- 临时解决IDEA工具对@SuperBuilder的不支持问题,开启后(默认未开启)插件在遇到@SuperBuilder注解时会调用ModelBuilderPlugin来生成相应的builder代码 -->
<property name="supportSuperBuilderForIdea" value="false"/>
</plugin>
<!-- 状态枚举生成插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.EnumTypeStatusPlugin"/>
<!-- Mapper注解插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.MapperAnnotationPlugin">
<!-- @Mapper 默认开启 -->
<property name="@Mapper" value="true"/>
<!-- @Repository 默认关闭,开启后解决IDEA工具@Autowired报错 -->
<property name="@Repository" value="true"/>
</plugin>
<!-- Example 目标包修改插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.ExampleTargetPlugin">
<!-- 修改Example类生成到目标包下 -->
<property name="targetPackage" value="com.huya.qna.entity.example"/>
</plugin>
<!-- 逻辑删除插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.LogicalDeletePlugin">
<!-- 这里配置的是全局逻辑删除列和逻辑删除值,当然在table中配置的值会覆盖该全局配置 -->
<!-- 逻辑删除列类型只能为数字、字符串或者布尔类型 -->
<property name="logicalDeleteColumn" value="is_del"/>
<!-- 逻辑删除-已删除值 -->
<property name="logicalDeleteValue" value="1"/>
<!-- 逻辑删除-未删除值 -->
<property name="logicalUnDeleteValue" value="0"/>
<!-- 是否生成逻辑删除常量(只有开启时 logicalDeleteConstName、logicalUnDeleteConstName 才生效) -->
<property name="enableLogicalDeleteConst" value="true"/>
<!-- 逻辑删除常量名称,不配置默认为 IS_DELETED -->
<property name="logicalDeleteConstName" value="IS_DELETED"/>
<!-- 逻辑删除常量(未删除)名称,不配置默认为 NOT_DELETED -->
<property name="logicalUnDeleteConstName" value="NOT_DELETED"/>
</plugin> <commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<!-- added by sunboyu@huya.com:在本地generate相关代码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://00.00.00.00:3306/db_name?useUnicode=true&amp;useSSL=false"
userId="balabalabala" password="balabalabala">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.huya.qna.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成xml文件存放位置-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Mapper类存放位置,可选纯注解模式或使用配置文件模式-->
<!-- <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.huya.qna.mapper"-->
<!-- targetProject="src/main/java">-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.huya.qna.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名-->
<table tableName="qna_history" domainObjectName="History"
enableInsert="true"
enableSelectByPrimaryKey="true"
enableSelectByExample="true"
enableUpdateByPrimaryKey="true"
enableUpdateByExample="true"
enableDeleteByPrimaryKey="true"
enableDeleteByExample="true"
enableCountByExample="true"
selectByExampleQueryId="false">
<!--插入此配置则insert后自动填充主键-->
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>

关于这个配置文件有几点说明:

  1. 如果想要使用github中的插件,必须使用配置文件模式而非注解模式。
  2. table中设定主键自动填充,该填充是直接写入到相应对象的。
  3. table中没有重新设定大类的类型,实际上使用插件后大类不会被分开存放,仅仅生成对应的BLOBS类操作方式,使用时要注意,非BLOBS方法无法取得大类字段。

之后,在spring的配置文件加入

mybatis.mapper-locations=classpath:mapper/*Mapper.xml

如果是Druid,则要遵循druid中的配置,暂时略,后详述

最新文章

  1. 部分安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
  2. socket.io 中文手册 中文文档
  3. Android开发学习---sharedpreference的使用
  4. Tree Context Menu
  5. 阿里巴巴JAVA常考面试题及汇总答案
  6. PHP冒泡排序法
  7. [置顶] MVC中使用signalR入门教程
  8. Beta冲刺合集
  9. 【codeforces 516B】Drazil and Tiles
  10. 如何利用GitHub设计一个炫酷的个人网站(含代码)
  11. Thinkphp5背景图片的引入~ 以及图片的引入
  12. Spring MVC 搭建
  13. tensorflow---alexnet training (tflearn)
  14. ES6字符串和正则表达式改动
  15. 【bzoj3064】 CPU监控
  16. Python在自动化运维时经常会用到的方法
  17. 微信小程序滚动Tab实现左右可滑动切换
  18. 深浅 buffer
  19. 湘潭校赛 Bob&#39;s Problem
  20. hibernate学习笔记(5)在数据库中存取图片

热门文章

  1. (14)打鸡儿教你Vue.js
  2. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行
  3. 64位内核开发第十讲,IRQL中断级别了解
  4. Pytest权威教程21-API参考-02-标记(Marks)
  5. Vue编程基础
  6. MySQL事务(脏读、不可重复读、幻读)
  7. Vue 一个组件引用另一个组件
  8. Control.ImeMode属性简释
  9. revenue
  10. Python 线程,with的作用(自动获取和释放锁Lock)