MyBatis逆向工程(一)

一、前言

  在讲逆向工程之前,本文默认你是已经了解了mybatis的基本使用,即增删改查和动态SQL语句。

二、数据库文件

这里我们需要用到一个数据表文件,所以你可以通过一下的命令SQL脚本快速创建一个数据表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'Jone', 18, 'test1@baomidou.com');
INSERT INTO `user` VALUES (2, 'Jack', 20, 'test2@baomidou.com');
INSERT INTO `user` VALUES (3, 'Tom', 28, 'test3@baomidou.com');
INSERT INTO `user` VALUES (4, 'Sandy', 21, 'test4@baomidou.com');
INSERT INTO `user` VALUES (5, 'Billie', 24, 'test5@baomidou.com');

SET FOREIGN_KEY_CHECKS = 1;

三、mybatis环境迅速搭建

        我们迅速创建一个maven环境,我们这里用的是weapp模板

   pom.xml需要引入的依赖

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.10</version>
      </dependency>
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
      </dependency>

   接下来我们再resources目录下添加mapper目录、properties目录、mybatis-config.xml核心配置文件

 

 mybaits-config.xml的配置文件信息,这里就不过多赘述,直接上文件内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 配置文件信息 -->
    <properties resource="properties/db.properties"></properties>
    <!--配置别名-->
    <typeAliases></typeAliases>
    <!--分页插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>
    <!--配置myabtis的数据库使用环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- 从配置文件中加载属性 -->
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.user}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 加载前面编写的SQL语句的文件(还没有生成) -->
    </mappers>
</configuration>

  接下来就是数据库配置文件:db.propertis的配置内容

db.url=jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf8
db.user=root
db.password=root
db.driver=com.mysql.jdbc.Driver

   接下来,再java目录下,创建两个包

 

四、创建逆向工程的配置文件:generatorConfig.xml

  这个文件创建再resources目录下

      

直接先看整个配置文件: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>
    <properties resource="properties/db.properties"></properties>

    <classPathEntry
            location="D:\apache-maven-3.8.5\resp\mysql\mysql-connector-java\5.1.10\mysql-connector-java-5.1.10.jar"/>

    <context id="default" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="${db.driver}"
                        connectionURL="${db.url}"
                        userId="${db.user}"
                        password="${db.password}">
        </jdbcConnection>


        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <javaModelGenerator targetPackage="cn.com.sise.model"
                            targetProject=".\src\main\java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper"
                         targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.com.sise.dao" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <table tableName="user"/>
    </context>
</generatorConfiguration>

 具体的分析:

        1、配置文件的约束是固定的,一定要有的:

<?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">

        2、配置文件的根标签是<generatorConfiguration>

        3、导入属性配置一定放在第一位: <properties resource="properties/db.properties"></properties>

        4、指定数据库驱动的jdbc驱动jar包的位置(用的一定是jar包)

        <classPathEntry location="D:\apache-maven-3.8.5\resp\mysql\mysql-connector-java\5.1.10\mysql-connector-java-5.1.10.jar"/>

        5、 context 标签是逆向工程的主要配置信息,其中id:配置名字、targetRuntime:设置生成的文件适用于那个 mybatis 版本

        6、commentGenerator标签是可选标签,旨在创建class时,对注释进行控制

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGeneratqor>

        7、配置数据的连接信息

        <jdbcConnection driverClass="${db.driver}"
                        connectionURL="${db.url}"
                        userId="${db.user}"
                        password="${db.password}">
        </jdbcConnection>

        8、 <javaTypeResolver>类型处理器,非必须的,在数据库类型和java类型之间的转换控制,

默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类,不是 double 和 long 类型 ,使用常用的基本类型代替 sql 包下的引用类型 

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        9、 生成java model层,targetPackage:生成的实体类所在的包; targetProject:生成的实体类所在的硬盘位置 

        <javaModelGenerator targetPackage="cn.com.sise.model"
                            targetProject=".\src\main\java">
            <!-- 是否允许子包 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

       10、mapper.xml文件的生成。targetPackage 和 targetProject:生成的 mapper.xml 文件的包和位置 

        <sqlMapGenerator targetPackage="mapper"
                         targetProject=".\src\main\resources">
            <!-- 针对数据库的一个配置,是否把 schema 作为子包名,非必须 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        11、mapper接口的生成。targetPackage 和 targetProject:生成的 mapper接口文件的包和位置 

        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.com.sise.dao"                 
                             targetProject=".\src\main\java">
            <!-- 针对 oracle 数据库的一个配置,是否把 schema 作为子包名 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        12、这里指定要生成的表 ,可以有多个

        <table tableName="user"/>
        <table tableName="product"/>

五、在pom.xml中引入插件

       插件坐标

      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
          <!-- 输出日志 -->
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
      </plugin>

         引入之后:

        

         双击运行此插件就可以看到逆向生成的mapper.xml 和mapper接口啦

        

六、逆向工程总结

       mybatis官方提供了mapper自动生成工具mybatis-generator-core来针对单表,生成PO类,以及Mapper接口和mapper.xml映射文件。针对单表,可以不需要再手动编写xml配置文件和mapper接口文件了,非常方便。美中不足的是它不支持生成关联查询。一般做关联查询,就自己单独写SQL就好了。至于生成的实体类中UserExample和Usermapper的具体使用,我们下篇文章再具体讲解,如果对你有帮助的话点个关注和赞吧!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值