Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

简介: Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题 今天闲来无事,准备搭一套SSM的环境,当然所有的jar包都用最新的。
+关注继续查看

Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

今天闲来无事,准备搭一套SSM的环境,当然所有的jar包都用最新的。
Mybatis使用3.4.6,Mysql使用最新的8.0,mysql-connector-java用的8.0.11。

安装好数据库后,新建了一个test库,并创建了一张user表。配置好Mybatis的配置文件,如下:

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

<!-- 指定数据连接驱动jar地址 -->
<classPathEntry location="D:\.m2\repository\mysql\mysql-connector-java\8.0.11\mysql-connector-java-8.0.11.jar" />

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

    <!-- jdbc连接 -->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/test?useSSL=false&amp;characterEncoding=utf8
                    &amp;serverTimezone=Asia/Shanghai"
                    userId="root"
                    password="xxxxx" />

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

    <!-- 生成实体类地址 -->
    <javaModelGenerator targetPackage="com.example.xxx.model"
                        targetProject="src\main\java" >
        <property name="enableSubPackages" value="false"/>
        <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
        <property name="trimStrings" value="true"/>
    </javaModelGenerator>

    <!-- 生成mapxml文件 -->
    <sqlMapGenerator targetPackage="mybatis"
                     targetProject="src\main\resources" >
        <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>

    <!-- 生成mapxml对应client,也就是接口dao -->
    <javaClientGenerator targetPackage="com.example.xxx.dao"
                         targetProject="src\main\java" type="XMLMAPPER" >
        <property name="enableSubPackages" value="false" />
    </javaClientGenerator>
    
    <table tableName="user" domainObjectName="User"></table>

</context>
</generatorConfiguration>

安装好Mybatis Generator的maven插件后,直接运行,运行后,生成了UserUser.java.1两个文件,打开一看,
User是test库中的表,只有4个字段,而User.java.1则是mysql库(Mysql的系统用户库)中的user表。怎么会扫描了两个
库(mysql和test)?再看看我的connectionURL,确实指到了/test了,怎么会扫描mysql库呢?
于是我翻阅资料,终于找到了问题。
org.mybatis.generator.internal.db.DatabaseIntrospector的509行,代码如下:

ResultSet rs = databaseMetaData.getColumns(localCatalog, localSchema,
                localTableName, "%");

变量localCatalog是上面配置文件中table中的元素,我们并没有配置,这里localCatalog是null,在底层会执行SHOW DATABASES
得到所有的数据库,但是我们已经在connectionURL="jdbc:mysql://localhost:3306/test?useSSL=false&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai"
中指定了数据test呀,查看源码发现在连接中少配置了一个属性nullCatalogMeansCurrent=true,加上这个属性,再执行,就没有问题了。

尤其是使用com.mysql.cj.jdbc.Driver这个驱动的时候,更要加上这个属性。在项目中不需要加,但是在使用Mybatis Generator时要加上。
com.mysql.cj.jdbc.Driver是mysql官方比较推荐的,旧的驱动com.mysql.jdbc.Driver已经不用了。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
XML Java 数据库连接
Mybatis使用generator逆向工程生成器生成entity、mapper、.xml模版类
今天将表建好了,但是一个一个的建实体类、Mapper接口、Mapper.xml文件就十分的麻烦,所以我就想到了MyBatis逆向,今天就操作一把!这里我们采用maven来进行操作。
|
6月前
|
XML SQL 前端开发
不是吧,你还在使用MyBatis Generator?试试这个工具吧
在企业软件开发过程中,大多数时间都是面向数据库表的增删改查开发。通过通用的增删改查代码生成器,可以有效的提高效率,降低成本;把有规则的重复性劳动让机器完成,解放开发人员。
|
8月前
|
XML Oracle Java
mybatis generator(MyBatis的逆向工程)
mybatis generator(MyBatis的逆向工程)
75 0
mybatis generator(MyBatis的逆向工程)
|
9月前
|
Java 数据库连接 数据库
MyBatis逆向工程 Generator
MyBatis逆向工程 Generator
MyBatis逆向工程 Generator
|
11月前
|
SQL Java 关系型数据库
解决 Mybatis Generator由表字段使用关键字导致的异常方案
解决 Mybatis Generator由表字段使用关键字导致的异常方案
93 0
|
消息中间件 运维 Java
【Mybatis】Mybatis generator如何修改Mapper.java文件
我写的代码生成插件Gitee地址同样是在扩展 Mybatis generator插件的时候,有这样一个需求是需要在生成的,那么 如何修改Mapper.java文件? 跟着Mybatis generator 源码去找一找 哪里可以扩展
|
Java 数据库连接 mybatis
Java:MyBatis Generator自动生成代码
Java:MyBatis Generator自动生成代码
117 0
|
消息中间件 运维 Java
【Mybatis】Mybatis generator自动生成插件如何修改Mapper.xml 的命名空间namespace
这也是在扩展 Mybatis generator 的时候遇到的问题,记录一下; 在上一篇文章 如何继承Mybatis中的Mapper.xml文件很重要的一点就是要让两个Mapper.xml文件的命名空间相同,这样才能够实现继承; 那么既然是自动生成插件,在生成原始 Mapper.xml的时候,我要如何去修改他的命名空间呢? 例如
|
Java 数据库连接 Maven
MyBatis - Mybatis Generator Maven 插件自动生成代码
MyBatis - Mybatis Generator Maven 插件自动生成代码
432 0
|
SQL Java 数据库连接
MyBatis加强(1)~mybatis的代码生成器 Generator
MyBatis加强(1)~mybatis的代码生成器 Generator
190 0
MyBatis加强(1)~mybatis的代码生成器 Generator
推荐文章
更多