Mybatis逆向工程 与 走过的坑!!

近日我在搭建springboot+mybatis+mysql 的整合项目(自己测试玩)的时候用到了mybatis的逆向工程,来这里记录一下我的菜鸟编码过程

首先我在maven中引入这些依赖

<dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
</dependency>
<!-- mysql -->
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
</dependency>

这里的org.mybatis.generator是mybatis的自动生成类的工具,我的是generator-1.3.5搭配mysql-5.1.44

项目模块截图:

在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="application.properties"/>

    <!-- 一个数据库一个context -->
    <context id="MysqlContext">
        <!-- 注释 -->
        <commentGenerator >
            <property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->
            <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
        </commentGenerator>

        <!-- jdbc连接 -->
        <jdbcConnection driverClass="${spring.datasource.driver-class-name}"
                        connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}"
                        password="${spring.datasource.password}" />

        <!-- 类型转换 -->
        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成实体类地址 targetPackage是指定生成的路径 targetProject是项目的相对路径-->
        <javaModelGenerator targetPackage="com.boot.model"
                            targetProject="src\main\java" >
            <!-- 是否在当前路径下新加一层schema,eg:fase -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 生成mapxml文件 targetPackage是指定生成的路径 targetProject是项目的相对路径-->
        <sqlMapGenerator targetPackage="com.boot.dao.mapper"
                         targetProject="src\main\java" >
            <!-- 是否在当前路径下新加一层schema,eg:fase -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 生成mapxml对应client,也就是接口dao targetPackage是指定生成的路径 targetProject是项目的相对路径-->
        <javaClientGenerator targetPackage="com.boot.dao.mapper"
                             targetProject="src\main\java" type="XMLMAPPER" >
            <!-- 是否在当前路径下新加一层schema,eg:fase -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 配置表信息 -->
        <table schema="test" tableName="user"
               domainObjectName="UserDataBase" enableCountByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               enableUpdateByExample="false">
            <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample
                是否生成 example类   -->

            <!-- 忽略列,不生成bean 字段 -->
            <!--<ignoreColumn column="FRED" />-->
            <!-- 指定列的java数据类型 -->
            <!--<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->
        </table>

    </context>
</generatorConfiguration>

在generatorConfig.xml文件中有引用application.properties文件内的值,所以我们还需要在resources文件下建一个application.properties文件

application.properties:

server.port=8082

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=******

接下来就是编写一个Generator的生成实体的类来进行运行

package com.boot;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Generator {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

  

本地运行编写的Generator类,就会自动生成相应的实体,mapper,mapper.XML了。

这是我的后台输出:

刷新一下项目就可以看到生成的类和mapper文件了。

重点注意:

1.数据库连接错误!

报错信息:

For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false‘.
You need either to explicitly disable SSL by setting useSSL=false, or
set useSSL=true and provide truststore for server certificate verification.

解决办法: 

在mysql连接字符串url中加入ssl=true或者false即可,如下所示。
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false

2.日志正常输出!但是没有生成文件!!

首先要查看generator.xml文件的javaModelGenerator、sqlMapGenerator、javaClientGenerator标签内的 targetPackage、targetProject属性是否写对!!

如果正确在查看编写的Generator类内File文件路径是否正确!!切记查看正确! 作者吃了大亏……

原文地址:https://www.cnblogs.com/nhdlb/p/10904567.html

时间: 2024-08-01 16:04:39

Mybatis逆向工程 与 走过的坑!!的相关文章

从零搭建springboot+mybatis逆向工程

一.从零搭建springboot+mybatis逆向工程 1.新建项目 2.next到这里要勾选这两项 第一次有点慢,等一会儿就好 3.在pom.xml中添加mybatis-generator插件 只把图片中的复制到项目中即可 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q

Mac下使用mybatis逆向工程遇到的问题

2017-08-29 使用mybatis逆向工程生成代码时工程运行成功,但是没有代码生成. 出现问题的代码: <sqlMapGenerator targetPackage="xx.xx.mapper" targetProject=".\src"> mac下应将".\src" 改为"./src" 代码生成成功!

Mybatis逆向工程

Mybatis逆向工程可以针对数据库中的单表自动生成Mybatis执行时所需要的代码.包括实体类PO.mapper.java接口.mapper.xml映射文件. 步骤: 在src下添加GeneratorSqlmap.java类 import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.confi

ssm项目之mybatis逆向工程与修改测试

以员工和部门表为例 一.mybatis生成代码 本来要写dao,bean,和mapper文件,但是使用mybatis逆向工程可以自动生成 http://www.mybatis.org/generator/ 引入quick start guide里面的jar包,我们可以用Maven引入mybatis generator,同样去http://mvnrepository.com/ 找(我用的是1.3.5) 可以按这个http://www.mybatis.org/generator/configrefe

记录一次升级https走过的坑

记录一次升级https过程中走过的坑 curl: (51) SSL: certificate subject name 'mp3.xxx.com' does not match target host name 'static.xxx.com' 升级 http://mp3.xxx.com http://static.xxx.com 为 https://mp3.xxx.com https://static.xxx.com 因在一台服务器上配置的两个域名都解析到本机,配置完后,发现页面的静态文件都无

Mybatis 逆向工程

Mybatis逆向工程: 推荐用Java和XML Configuration的方式生成逆向文件 Java类: package generation; import java.io.File; import java.util.ArrayList; import java.util.List; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; i

阿里云centos7.2 搭建 laravel 框架走过的坑

centos7.2 搭建 laravel框架走过的坑 前言 公司正在处于发展阶段最近开发的伙伴和运维的伙伴一直在忙碌着 开发人员一直在写laravel架构的代码以及新项目的拓展,时间很赶所以作为linux运维的我也不能怠慢. 首先搭建lnmp架构 nginx php 我选择的yum,wget的安装方法 mysql选择编译安装 因为我只认为MySQL我还有编译安装的需要(熟悉熟悉). 准备 : 1.PHP 7版本  2.openssl(yum安装)3.pdo扩展 mysql 4.安装compose

Appium 走过的坑( Mac+java )--Apple 篇

最近随着手机测试盛行,经朋友推荐,selenium的新家庭成员Appium算比较好用的一款自动化手机测试工具.本想,selenium出的东西都是好东西,IDE-->RC-->WebDriver-->PhantomJS,个个都是好东西,当然其中有些不适selenium做的,算半个推荐,但真心不错,那这个Appium也不会差吧...抱着试试的心态,开始了踏坑之旅.下面就让我描述下我走过的坑: 首先先说下环境: Mac pro (OS X 10.10.3) Java (1.6 , 后续会介绍怎

Appium 走过的坑( Mac+java )--Android 篇

Apple的坑走完后,终于打开了界面,想想还是有点小激动的,然后进入了更坑的Android环境搭建. 如果你以为这环境就和Apple这样easy能解决(虽然不少坑 - -),那就大错特错,android环境等于另外一套东西,比Apple难弄多了,机制也很傻... 牢骚话少说,咱们来跨坑,第一个坑随即而来,之前我在说Apple环境时,下载安装完appium工具,Apple环境自动已经完善(前提是你已经安装完xcode).那么android环境应该怎么配置呢? 我就绕过我求寻真理的沼泽了,直接说怎么