专栏首页Web项目聚集地MyBatis-逆向工程「Generator使用指南」

MyBatis-逆向工程「Generator使用指南」

这篇我们学习MyBatis Generator的使用,Generator是Mybatis的一个代码生成器,它可以根据数据库表生成类、映射文件Mapper、数据操作的接口。并且Generator可以自动为每个表生成简单得CRUD(插入,查询,更新,删除)的实现代码,这是非常强大和方便的。但是如果有别的业务许需求,还是得自己写SQL,教程利用Maven的方式来逆向生成代码。

Maven是什么?

当你利用搜索引擎搜索Maven会出来很多名词:对象模型、标准集合、依赖管理系统这是啥啊?差不多得你会用了Maven才会理解这些名称吧,我找到了一个博主的博客

blog.csdn.net/qq_27376871/article/details/51612742他做了不错的总结,Maven可以干什么:

1 . 帮你下载jar包

maven项目会有一个 pom.xml文件, 在这个文件里面,只要你添加相应配置,他就会自动帮你下载相应jar包,不用你铺天盖地的到处搜索你需要的jar包了 。maven都会通过:项目名-项目模块-项目版本来maven在互联网上的代码库中下载相应jar包。寻找jar的地址:http://search.maven.org

所以这就是maven的功能之一,帮你下载jar包

2 . 寻找依赖,帮你下载依赖

寻找jar包是第一基本功能,寻找依赖在这个是在这个基础上的功能。

在maven的代码库中,每一个jar包也有自己的 pom.xml文件,而这个文件里面也会有<dependency>配置,什么依赖范围我就不细说了,我想表达的就是,只要你配置的jar包所依赖的其他jar包都会被maven自动下载下来。

例如:你配置了

<dependency>         
<groupId>org.springframework</groupId>      
<artifactId>spring-core</artifactId>       
<version>3.6</version>   
</dependency>

你需要maven帮你下载spring-core-3.6.jar包 ,而这个jar包里面需要用到commons-logging.jar这个包, 这叫就依赖,spring-core-3.6.jar依赖于commons-logging.jar。 这就是maven第二个作用,帮你下载依赖包。

3 . 热部署,热编译

意思就是,在你web项目已经运行的时候,修改代码的能直接被web服务器所接受,就不需要你 重启服务器了,或者重新部署代码了,而且你可以直接通过maven 打包war或者jar项目。

搭建

1. 创建Maven工程

2. 设置GroupId

3. 控制台打印:BUILD SUCCESS 创建成功

4. 自己创建resource目录

注:通过右键->Mark directory As来设置文件为源码目录或者资源目录(即更改文件夹得颜色)

5. 配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.generator</groupId>
 <artifactId>generator</artifactId>
 <version>1.0-SNAPSHOT</version>
 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <maven.compiler.source>1.7</maven.compiler.source>
   <maven.compiler.target>1.7</maven.compiler.target>
 </properties>
 <build>
   <finalName>mybatis_generator</finalName>
   <plugins>
     <!--mybatis反向生成代码的插件配置-->
     <plugin>
       <groupId>org.mybatis.generator</groupId>
       <artifactId>mybatis-generator-maven-plugin</artifactId>
       <version>1.3.3</version>
     </plugin>
   </plugins>
 </build>
</project>

给出的pox.xml是用来配置依赖和插件的配置文件,记住上方<plugin>标签中配置了mybatis generator的插件,IDE会自动帮我们下载。

6. 创建存放pojo、mapper等所在包

注意:上方Mappers、dao、pojo包是空的

7. 配置generatorConfig.xml

在src/main/resource目录下创建generatorConfig.xml配置文件,这个文件用来做mapper、pojo生成位置、数据库相关等配置,具体看代码注释。

generatorConfig.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>
   <!-- 数据库驱动包位置 -->
   <classPathEntry location="D:\mysql-jar\mysql-connector-java-5.1.35.jar" />
   <context id="mysql" targetRuntime="MyBatis3" defaultModelType="flat">

       <!-- 为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 -->
       <commentGenerator>
           <property name="suppressAllComments" value="true" />
           <property name="suppressDate" value="true"/>
       </commentGenerator>

       <!-- 必须要有的,使用这个配置链接数据库,url、密码等 -->
       <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="rootadmin">
           <!-- 这里面可以设置property属性,每一个property属性都设置到配置的Driver上 -->
           <property name="useUnicode" value="true"/>
           <property name="characterEncoding" value="UTF-8"/>
       </jdbcConnection>

       <javaModelGenerator targetPackage="com.generator.pojo" targetProject="D:\文档\项目\Generator\src\main\java">
           <property name="constructorBased" value="false"/>
           <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
           <property name="enableSubPackages" value="true" />
           <!-- for MyBatis3 / MyBatis3Simple
               是否创建一个不可变的类,如果为true,
               那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类
            -->
           <property name="immutable" value="false"/>
           <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
           <property name="trimStrings" value="true"/>
       </javaModelGenerator>

       <!--
           生成SQL map的XML文件生成器,
           注意,在Mybatis3之后,我们可以使用mapper.xml文件+Mapper接口(或者不用mapper接口),
               或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的话,这个元素就必须配置
               targetPackage/targetProject:同javaModelGenerator
       -->
       <sqlMapGenerator targetPackage="Mappers" targetProject="D:\文档\项目\Generator\src\main\resources">
           <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
           <property name="enableSubPackages" value="true"/>
       </sqlMapGenerator>

       <!-- dao包名和位置 -->
       <javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.dao" targetProject="D:\文档\项目\Generator\src\main\java">
           <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
           <property name="enableSubPackages" value="true"/>
       </javaClientGenerator>

       <!-- 表配置 -->
       <table tableName="user" domainObjectName="User" >
           <!-- 参考 javaModelGenerator 的 constructorBased属性-->
           <property name="constructorBased" value="false"/>
           <!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; -->
           <property name="ignoreQualifiersAtRuntime" value="false"/>
           <!-- 指定是否只生成domain类,如果设置为true,只生成domain类,如果还配置了sqlMapGenerator,那么在mapper XML文件中,只生成resultMap元素 -->
           <property name="modelOnly" value="false"/>
           <!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
           <property name="useActualColumnNames" value="true"/>
       </table>
   </context>
</generatorConfiguration>

对于上面的配置文件都已经做了注释,简单提取出来可以总结为下方几条,只需要正确配置,便可以完成逆向工程的功能:

  • classPathEntry 配置数据库驱动包位置
  • commentGenerator下配置是否去掉注释
  • jdbcConnection数据库链接URL、用户名、密码
  • javaModelGenerator生成模型的包名和位置
  • sqlMapGenerator生成映射文件包名和位置
  • javaClientGenerator生成DAO的包名和位置
  • table要生成哪些表

当然上方generatorConfig.xml仅仅是简单配置,还有很多配置参数没有给出,我有一份比较详细的配置,每一条配置都做了非常详细注释,比如下图:

我把上面这份非常详细注释的配置文件放到公众号,你可以读完本文中在公众号内回复:「generatorConfig.xml」就可以获取了,以后配置看不懂,读这个配置文件的注释就可以了。

8. 运行插件

9. 在右侧栏Maven Project->plugin->mybatis-generator

10. 双击mybatis-generator:generate 运行

11. 运行结果

控制台打印出:BUILD SUCCESS 证明成功

发现pojo、dao、Mappers包多出了自动生成的代码

12. 查看生成的代码

在com.generator.dao包生成了相关接口,和Mappers中的mapper相对应

在com.generator.user包中根据数据库表生成了对应的实体类

UserMapper.xml中生成了对user表进行增删改查的简单SQL

到这里我们关于mybati-generator的使用介绍的差不多了,非常基础,相信对刚刚学习这门技术的同学来说是不错的指导。

本文分享自微信公众号 - Web项目聚集地(web_resource)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Maven学习笔记(一)

    本教程作者是「小灯光环」,作者简介:全栈开发工程师,CSDN博客专家,CSDN论坛 Java Web/Java EE版主,热爱技术,乐于分享,在分布式Web开发...

    用户1093975
  • 前端面试题(HTML和CSS)

    我会推出前端面试题的专栏,每一期我会推出10个经典面试题,面试题一部分由小伙伴提供,一部分从面试真题中选出,最后会来一个大汇总。主要目的是帮助那些还没有前端开...

    用户1093975
  • 设计一个秒杀系统

    最近在部门内部分享了原来在电商业务做秒杀活动的整体思路,大家对这次分享反馈还不错,所以我就简单整理了一下,分享给大家参考参考

    用户1093975
  • shell脚本-三行变一行 原

    (adsbygoogle = window.adsbygoogle || []).push({});

    阿dai学长
  • 别再傻傻地写代码,程序认证安全防护的知识你了解吗?

    Web的安全防护已经讲过一些知识了,下面继续说一下安全防护中的密码传输、敏感操作二次认证、客户端强验证、认证的错误消息、防止暴力破解、日志与监控等。

    申霖
  • Nginx 配置生成神器

    YP小站
  • 营销渠道的经典效果评估方法

    一维评估方法就是指标评估法,通过一个指标去评估渠道流量的价值,可以将指标做从数量上、质量上和核心交互上去划分:

    GA小站
  • 自动化工作流助力精细化用户运营,衍生新的增长点​

    说到营销,就不可避免地谈到流量,也就是用户。当我们通过营销活动吸引用户进入线索系统,后续的流程就是对用户数据进行清洗、下发跟进,直到用户转化,而用户的转化率是有...

    盒子菌
  • 互联网金融产品的设计思考

    导语 | 互联网金融是近年来的热门词,刚进入2017,腾讯金融、蚂蚁金融、百度金融就吹响了新的冲锋号:腾讯推出黄金红包,小马哥亲自站台指导;蚂蚁金服并购美国Mo...

    腾讯大讲堂
  • 想要成为Linux大神,你应该和我一样这样做!

    大神终究是孤独的,在Linux这条路上,有太多的人,而我们走着走着就分离了,我们在各自的道路上按照我们自己的方法去寻找着属于我们的道路,属于我们的那一片领土! ...

    思梦php

扫码关注云+社区

领取腾讯云代金券