mybatis生成的dao和对应的*.xml文件有误

在使用mybatis-generator.xml自动生成DAO层、Model层和Mapping时遇到主键识别问题及XML重复SQL。解决方案包括在配置文件中添加`useInformationSchema=true`以解决主键问题,以及添加`nullCatalogMeansCurrent=true`防止JDBC 8.x版本的表名生成问题。多次运行可能造成XML文件追加而非覆盖,需注意。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做课程时使用了spring-boot来搭建后台。

使用mybatis-generator.xml自动生成dao层、model层和mapping时碰到了一些问题,记录下来:

mybatis无法识别主键,不能生成selectByPrimary等方法,需要在mybatis-generator.xml中添加:

            <property name="useInformationSchema" value="true"/>

 

之后发现,在mapping目录下的xml文件中生成了重复的同名sql函数并且生成实体类并不对应我指定的表单,可能有以下两个原因:

  1. 多次运行mybatis-generator.xml,对mapping目录下的xml文件实现的是追加而不是覆盖功能。
  2. 如果对于使用的JDBC是8.x,可能生成的dao都不是你想要的表单的,这是因为JDBC8.x版本生成表单名的方式与以前不一样了,你需要在mybatis-generator.xml配置文件中添加

           <property name="nullCatalogMeansCurrent" value="true"/>

 所以最终你的mybatis-generator.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>

    <context id="DB2Tables" targetRuntime="MyBatis3">

        <commentGenerator>

            <property name="suppressDate" value="true"/>

            <property name="suppressAllComments" value="true"/>

        </commentGenerator>

        <!--数据库链接地址账号密码-->

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"

                        connectionURL="jdbc:mysql://127.0.0.1:3306/jwxt?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Hongkong"

                        userId="root"

                        password="${spring.datasource.password}">

            <!--尝试加入看能否生成selectByPrimaryKey-->

            <property name="useInformationSchema" value="true"/>

                          <property name="nullCatalogMeansCurrent" value="true"/>

        </jdbcConnection>

        <javaTypeResolver>

            <property name="forceBigDecimals" value="false"/>

        </javaTypeResolver>

        <!--生成Model(DataObject)类存放位置-->

        <javaModelGenerator targetPackage="com.wky.dataobject" targetProject="src/main/java">

            <property name="enableSubPackages" value="true"/>

            <property name="trimStrings" value="true"/>

        </javaModelGenerator>

        <!--生成映射文件存放位置-->

        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">

            <property name="enableSubPackages" value="true"/>

        </sqlMapGenerator>

        <!--生成Dao类存放位置-->

        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码

                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象

                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象

                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口

        -->

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.wky.dao" targetProject="src/main/java">

            <property name="enableSubPackages" value="true"/>

        </javaClientGenerator>

        <!--生成对应表及类名-->

        <!--<table tableName="stocktradeinfo" domainObjectName="StockTradeInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->

    </context>

</generatorConfiguration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值