解决Mybatis方向生成的mapper.xml中对应数据库表名带有引号的问题

解决Mybatis方向生成的mapper.xml中对应数据库表名带有引号的问题_第1张图片
相信有好多情况Mybatis反向生成的xml中表名带有双引号,这种情况在调用的时候会出现错误。

1、方案一

很简单,利用idea的查找替换,讲带有双引号的替换成不带双引号的,但是一个文件还好,要是很多岂不费时。因此我们有了方案二。

2 、方案二

这是很细的一个点,有的情况生成的带有双引号,有的配置文件生成的就不带有,这是我的亲身经历。下面给大家附上生成xml文件无误的代码

  1. 导入依赖:
<!-- Mybatis反向生成   -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.5</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>
  1. 引入插件(< build >下面,注意与< pluginManagement > 是平级的,否则会出错):
	<plugins>
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.5</version>
        <!--告诉插件,配置文件所在的位置-->
        <configuration>
          <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
      </plugin>
    </plugins>
  1. 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="E:\mavencangku\mysql\mysql-connector-java\5.1.37\mysql-connector-java-5.1.37.jar"/>

    <!-- 设置生成代码的规则 targetRuntime开发环境使用Mybatis的版本 -->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--是否去除所有自动生成的文件的时间戳:
        是否去除所有自动生成文件的注释:-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!-- 配置连接mysql四要素 -->
        <jdbcConnection
                connectionURL="jdbc:mysql://localhost:3306/mytest?characterEncoding=utf8"
                driverClass="com.mysql.jdbc.Driver"
                userId="root"
                password="ze200011..">
        </jdbcConnection>

        <!-- java类型处理器
            用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
            注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
        -->
        <javaTypeResolver >
            <!--
            true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
            false:默认,
                scale>0;length>18:使用BigDecimal;
                scale=0;length[10,18]:使用Long;
                scale=0;length[5,9]:使用Integer;
                scale=0;length<5:使用Short;
            -->
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 实体类 bean 带有get和set方法的bean
             targetProject="src/main/java 生成目标位置(将实体类生成在src/main/java目录下)
         -->
        <javaModelGenerator targetPackage="com.qcby.entity" targetProject="src/main/java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true" />

            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- sql语句相关的xml或者注解的生成包路径
                targetPackage="cn.et.resource"   将注解生成在cn.et.resource包下
        -->
        <sqlMapGenerator targetPackage="."  targetProject="src/main/resources/mapper">
            <!--<property name="enableSubPackages" value="true" />-->
        </sqlMapGenerator>

        <!-- 生成的接口所在位置
                type="XMLMAPPER" 生成xml接口映射
                type="ANNOTATEDMAPPER"   生成注解
         -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.qcby.dao"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>


        <!-- 告诉generatorConfig 需要生成代码的表
                schema="DB2ADMIN" 是oracle里的
                tableName="ALLTYPES" 表名-->
        <!-- 如果需要通配所有表 直接用sql的通配符    %即可 -->
        <table tableName="student" domainObjectName="Student" mapperName="StudentDao" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true"
               enableSelectByExample="true" selectByExampleQueryId="true">
            <!-- <property name="useActualColumnNames" value="true"/>-->
        </table>

    </context>
</generatorConfiguration>
  1. 反向生成,如果没有这个命令就去添加一个maven命令
    解决Mybatis方向生成的mapper.xml中对应数据库表名带有引号的问题_第2张图片
  2. 很神奇他成功了 解决Mybatis方向生成的mapper.xml中对应数据库表名带有引号的问题_第3张图片

你可能感兴趣的:(Java,框架知识,IDEA)