springboot+mybatis+mysql 通过 generator 配置文件生成代码

本贴最后更新于 2230 天前,其中的信息可能已经时移俗易
第一次写文章!有写错的地方请指出!
此篇文章主要是这两天自己搭springboot时用到generator生成相应的entity,dao以及xml文件的总结。
一、通过https://start.spring.io/生成相应的demo文件

imagepng
注意选择 web、mysql、mybatis 三个模块,能够在 pom 中生成相应的配置文件。

二、将文件下载下来后导入到 idea 中,并在 src.main.java 目录下增加放 entity(实体类)、dao(mapper 接口)的 package,在 resources 下增加放 mapper.xml 的 directory,以及增加一个文件夹放 generate 的配置文件的 directory。具体目录结构如下图

imagepng
三、在 pom.xml 中增加 generate 的配置信息
1、在 dependencies 中添加以下内容

<!--mybatis 自动生成插件-->  
<dependency\>  
   <groupId\>org.mybatis.generator</groupId\>  
   <artifactId\>mybatis-generator-core</artifactId\>  
   <version\>1.3.5</version\>  
</dependency\>  

2、在 plugins 中添加以下内容

<!-- (1)  mybatis generator 自动生成代码插件 -->  
<plugin\>  
   <groupId\>org.mybatis.generator</groupId\>  
   <artifactId\>mybatis-generator-maven-plugin</artifactId\>  
   <version\>1.3.2</version\>  
   <executions\>  
      <execution\>  
         <id\>Generate MyBatis Artifacts</id\>  
         <phase\>deploy</phase\>  
         <goals\>  
            <goal\>generate</goal\>  
         </goals\>  
      </execution\>  
   </executions\>  
   <configuration\>  
      <!-- generator 工具配置文件的位置 -->  
  <configurationFile\>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile\>  
      <verbose\>true</verbose\>  
      <overwrite\>true</overwrite\>  
   </configuration\>  
   <dependencies\>  
      <dependency\>  
         <groupId\>mysql</groupId\>  
         <artifactId\>mysql-connector-java</artifactId\>  
         <scope\>runtime</scope\>  
         <version\>${mysql.version}</version\>  
      </dependency\>  
   </dependencies\>  
</plugin\>

三、在数据库中新建表 sys_user,
1、在 resources 下 mybatis_generator 下新建 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\>  
    <!--执行generator插件生成文件的命令: call mvn mybatis-generator:generate -e -->  
 <!-- 引入配置文件 -->  <properties resource\="mybatis-generator/mybatisGeneratorinit.properties"/>  
    <!-- 一个数据库一个context -->  
 <!--defaultModelType="flat" 大数据字段,不分表 -->  <context id\="MysqlTables" targetRuntime\="MyBatis3Simple" defaultModelType\="flat"\>  
        <!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;  
 一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖 -->  <property name\="autoDelimitKeywords" value\="true" />  
        <!-- 生成的Java文件的编码 -->  
  <property name\="javaFileEncoding" value\="utf-8" />  
        <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是\`反引号; -->  
  <property name\="beginningDelimiter" value\="\`" />  
        <property name\="endingDelimiter" value\="\`" />  
  
        <!-- 格式化java代码 -->  
  <property name\="javaFormatter" value\="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>  
        <!-- 格式化XML代码 -->  
  <property name\="xmlFormatter" value\="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>  
        <plugin type\="org.mybatis.generator.plugins.SerializablePlugin" />  
  
        <plugin type\="org.mybatis.generator.plugins.ToStringPlugin" />  
  
        <!-- 注释 -->  
  <commentGenerator \>  
            <property name\="suppressAllComments" value\="false"/><!-- 是否取消注释 -->  
  <property name\="suppressDate" value\="true" /> <!-- 是否生成注释代时间戳-->  
  </commentGenerator\>  
  
        <!-- jdbc连接 -->  
  <jdbcConnection driverClass\="${jdbc\_driver}" connectionURL\="${jdbc\_url}" userId\="${jdbc\_user}" password\="${jdbc\_password}" />  
        <!-- 类型转换 -->  
  <javaTypeResolver\>  
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
  <property name\="forceBigDecimals" value\="false"/>  
        </javaTypeResolver\>  
  
        <!-- 生成实体类地址 -->  
  <javaModelGenerator targetPackage\="com.zhyq.admin.entity" targetProject\="${project}" \>  
            <property name\="enableSubPackages" value\="false"/>  
            <property name\="trimStrings" value\="true"/>  
        </javaModelGenerator\>  
        <!-- 生成mapxml文件 -->  
  <sqlMapGenerator targetPackage\="mapper" targetProject\="${resources}" \>  
            <property name\="enableSubPackages" value\="false" />  
        </sqlMapGenerator\>  
        <!-- 生成mapxml对应client,也就是接口dao -->  
  <javaClientGenerator targetPackage\="com.zhyq.admin.dao" targetProject\="${project}" type\="XMLMAPPER" \>  
            <property name\="enableSubPackages" value\="false" />  
        </javaClientGenerator\>  
        <!-- table可以有多个,每个数据库中的表都可以写一个table,tableName表示要匹配的数据库表,也可以在tableName属性中通过使用%通配符来匹配所有数据库表,只有匹配的表才会自动生成文件 -->  
  <table tableName\="sys\_user" enableCountByExample\="true" enableUpdateByExample\="true" enableDeleteByExample\="true" enableSelectByExample\="true" selectByExampleQueryId\="true"\>  
            <property name\="useActualColumnNames" value\="false" />  
            <!-- 数据库表主键 -->  
  <generatedKey column\="id" sqlStatement\="Mysql" identity\="true" />  
        </table\>  
    </context\>  
</generatorConfiguration\>

注意:配置文件中需要注意需要生成哪个表的相应代码需要进行配置,最好生成一次后进行注释,如果未注释,会将上次生成的代码覆盖!(具体配置详情都在配置文件中有注释)

imagepng

2、在 resources 下 mybatis_generator 下新建 mybatisGeneratorinit.properties 文件,并在里面加入以下内容,该内容主要是为 generator.xml 中提供相应的配置信息

#Mybatis Generator configuration  
#dao类和实体类的位置  
project \=src/main/java  
#mapper文件的位置  
resources\=src/main/resources  
#根据数据库中的表生成对应的pojo类、dao、mapper  
jdbc\_driver \=com.mysql.jdbc.Driver  
jdbc\_url\=jdbc:mysql://localhost:3306/generator
jdbc\_user\=root  
jdbc\_password\=123

四、在 application.yml 中增加 mybatis 的配置信息

mybatis:  
 mapper-locations: mapper/\*\*Mapper.xml  
  configuration:  
 map-underscore-to-camel-case: true

------------------------------------------到此配置信息结束---------------------------------------------------
五、通过 idea 生成相应的代码,配置 generator.xml 作为 maven 启动项,按照以下图片步骤可以看到在右侧 maven 多了一个启动项。完成后点击启动项则生成了相应的代码。

imagepng

imagepng

imagepng

注:mybatis-generator:generate -e -e 为了在生成过程中输出日志
生成结果如下

imagepng

简单写一个 get 请求通过 postman 进行调试返回结果信息,成功将数据库表数据查出来!

imagepng

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    943 引用 • 1459 回帖 • 29 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    679 引用 • 535 回帖
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 384 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 542 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 3 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 83 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 2 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 3 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 82 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    679 引用 • 535 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 32 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 527 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    7972 引用 • 36476 回帖 • 166 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 61 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    490 引用 • 916 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 480 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 534 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22080 引用 • 88157 回帖 • 2 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖 • 1 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 482 关注
  • 自由行
    9 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    197 引用 • 547 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 682 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4600 回帖 • 700 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 4 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 746 关注