我今天自己用的时候遇到的,不管怎么调整配置都还是这个com.mysql.cj.jdbc.Driver错误,今天解决了更大家分享一下成果。

一、检查配置

  1. 🧐 驱动类是不是写成了com.mysql.jdbc.Driver?(NO!MySQL8.0必须用cj版本!)
  2. 🔍 URL里的反斜杠是不是被转义成&了?(删掉!直接写localhost:3306
  3. 🔐 数据库密码有没有写错?(别打码!直接明文测试最有效)
    对比一下下面的代码哦
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/xxx?useSSL=false&amp;serverTimezone=UTC"
                        userId="root" password="xxx">
      <property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>

二、添加mysql-connector-java的路径

其次需要找到你maven本地仓库的数据库连接的jar包,写在上面,这是我自己的,版本号要自己去maven本地仓库去找,windows复制过来需要改一下"",改成“/”,这是我解决的关键

<!-- 旧版阴间写法 -->
<path>C:\Users\12050\.m2\repository\mysql\mysql-connector-java\8.0.23\mysql-connector-java-8.0.23.jar</path>

<!-- 新版优雅写法(亲测跨平台有效) -->
<path>${user.home}/.m2/repository/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar</path>

三、用maven集成

<!-- 在pom里加这个插件就再也不怕依赖丢失啦! -->
<plugin>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-maven-plugin</artifactId>
  <version>1.4.0</version>
  <executions>
    <execution>
      <id>Generate MyBatis Artifacts</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>
  </executions>
</plugin>

四、用properties文件统一管理配置

<!-- 用properties文件统一管理配置 -->
<properties>
  <db.driver>com.mysql.cj.jdbc.Driver</db.driver>
  <db.url>jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai</db.url>
  <db.username>root</db.username>
  <db.password>123456</db.password>
</properties>

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

生成注释加上以下的代码

<!-- 想要生成注释?取消注释这三行就行! -->
<commentGenerator>
  <property name="suppressAllComments" value="false"/>
  <property name="addRemarkComments" value="true"/>
</commentGenerator>

让JDBC的TIMESTAMP自动转成LocalDateTime‘

<typeHandlers>
  <!-- 让JDBC的TIMESTAMP自动转成LocalDateTime -->
  <typeHandler javaType="java.time.LocalDateTime" jdbcType="TIMESTAMP" handler="org.mybatis.type.LocalDateTimeTypeHandler"/>
</typeHandlers>

五、注意表名大写

<!-- 错误示范:MySQL表名是user_info,写成User_Info会报错 -->
<table tableName="User_Info" domainObjectName="UserInfo"/>

<!-- 正确姿势:直接写表名,让工具自动处理驼峰命名 -->
<table tableName="user_info" domainObjectName="UserInfo"/>

六、设置分页查询

<!-- 手动写limit的时候记得带上offset -->
<select id="selectUsers" parameterType="map" resultType="User">
  SELECT * FROM user 
  LIMIT #{limit} OFFSET #{offset}
</select>

<!-- 自动生成时记得勾选useLimitClause=true -->
<javaModelGenerator targetPackage="..." enableSubPackages="false">
  <property name="useLimitClause" value="true"/>
</javaModelGenerator>

七、多数据库解决方案

<!-- 动态数据源配置示例 -->
<jdbcConnection driverClass="..." connectionURL="jdbc:mysql://tenant1-db:3306/db_name" .../>
<jdbcConnection driverClass="..." connectionURL="jdbc:mysql://tenant2-db:3306/db_name" .../>

<context id="tenant1" targetRuntime="MyBatis3">
  <jdbcConnection .../>
</context>

<context id="tenant2" targetRuntime="MyBatis3">
  <jdbcConnection .../>
</context>

八、generatorConfig.xml代码全

我把整体的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="C:/Users/12050/.m2/repository/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar"/>

    <!-- 数据库连接 -->
    <context id="default" targetRuntime="MyBatis3">
        <property name="autoDelimitKeywords" value="true"/>
        <!--可以使用``包括字段名,避免字段名与sql保留字冲突报错-->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <property name="useExample" value="false" />
        <!-- optional,旨在创建class时,对注释进行控制 -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/xxx?useSSL=false&amp;serverTimezone=UTC"
                        userId="root" password="xxx">
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection>

        <!-- Java类型处理器 -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- Java模型生成 -->
        <javaModelGenerator targetPackage="com.example.mystore.model.pojo"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- SQL映射文件生成 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="src/main/resources/">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- Mapper接口生成 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.mystore.model.dao"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!--生成对应表和类名-->
        <table schema="root" tableName="imooc_mall_cart" domainObjectName="Cart" />
        <table tableName="category" domainObjectName="Category"  />
        <table tableName="order" domainObjectName="Order" />
        <table tableName="order_item" domainObjectName="OrderItem"  />
        <table tableName="product" domainObjectName="Product"  />
        <table tableName="" domainObjectName="User"  />
</context>
</generatorConfiguration>

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐