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&characterEncoding=utf8
&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已经不用了。

Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题的更多相关文章

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

    MyBatis Generator使用com.mysql.cj.jdbc.Driver Mybatis Generator 1.3.5 新建了一个decision库,并创建了一张user表 impor ...

  2. Spring Boot整合Mybatis出现错误java.lang.IllegalStateException: Cannot load driver class:com.mysql.cj.jdbc.Driver

    错误描述: Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver ...

  3. mySql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver

    Mysql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver 1. 在使用mysql时,控制台日志报错如下: Loading class `c ...

  4. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

    java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass(URLC ...

  5. mysql的驱动类com.mysql.jdbc.Driver过时了,需要用com.mysql.cj.jdbc.Driver代替

    springboot项目整合mybatis,配置文件如下: server: port: 8081 mybatis: config-location: classpath:mybatis/mybatis ...

  6. com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的区别

    概述:com.mysql.jdbc.Driver是mysql-connector-java 5中的,而com.mysql.cj.jdbc.Driver是mysql-connector-java 6中的 ...

  7. com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定

    转自: http://blog.csdn.net/superdangbo/article/details/78732700 com.mysql.jdbc.Driver 和 com.mysql.cj.j ...

  8. com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别

    com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的 ...

  9. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb ...

随机推荐

  1. U3d 入门

    环境搭建: 1.安装exe; 2.破解 ,百度

  2. ReactDom.render调用后没有渲染

    可能发生问题的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. BZOJ3613 南园满地堆轻絮 二分/贪心

    正解:贪心 解题报告: 传送门! 这题似乎是可以二分水过的,,,但数据可以加强一下就能简单把二分卡住了,或者修改下空间限制什么的反正就很容易能卡住 所以这里介绍一个优秀的贪心做法,O(n)的时间复杂度 ...

  4. $ sudo python -m pip install pylint 出错解决方法

    问题:在unbuntu执行$ sudo python -m pip install pylint出错解决方法支行以下命令sudo pip install pylint==1.9.3这样roboware ...

  5. docker私有仓库搭建和资源限制

    Docker 私有仓库的搭建 docker 私有仓库默认只支持https协议的访问  不支持http协议 如果需要允许通过http协议访问 必须手动修改配置文件 docker官方默认提供的仓库  提供 ...

  6. Linux系统启动排错实验集合

    Centos6系统启动流程 1. post  加电自检  检查硬件环境 2. 选择一个硬件类型引导启动           mbr 446字节   grub  stage1 3. 加载boot分区的文 ...

  7. 20165236 实验四 Android程序设计

    20165236  实验四 Android程序设计 一.实验报告 课程:Java程序设计          班级:1652班 姓名:郭金涛       学号:20165236 指导教师:娄嘉鹏  实验 ...

  8. CentOS7.0+Zend Guard Loader for PHP 5.6环境搭建

    本文是在centos7.0环境下搭建的, 由于我的php是5.6版本的, 所以需要去下载对应的Zend Guard Loader. 下载地址: http://www.zend.com/en/produ ...

  9. @property用法总结

    1.当方法需要传入别的参数时,不能定义成@property. 比如_table(self, owner)

  10. Spark SQL DataFrame新增一列的四种方法

    方法一:利用createDataFrame方法,新增列的过程包含在构建rdd和schema中 方法二:利用withColumn方法,新增列的过程包含在udf函数中 方法三:利用SQL代码,新增列的过程 ...