解決mybatis-generator無法產生除insert外的方法的問題

來源:互聯網
上載者:User

mybatis架構提供了非常好用的逆向工程外掛程式,但是在使用過程中會有很多問題。

我在使用中就遇到了只產生insert和insertSeletive方法,而不產生其他根據primary key查詢更新刪除的方法。

解決方案:

1.檢查資料庫中的表是否有主鍵,如果沒有主鍵是不會產生類似selectByPrimaryKey之類的方法的。

2.檢查generatorConfig.xml設定檔中的table標籤是否把這些屬性設為了false,預設是true,如果設為了false則無法產生。

enableSelectByPrimaryKey="true"enableUpdateByPrimaryKey="true"enableDeleteByPrimaryKey="true"
前兩點都是網上很容易找到的,第三點是真正的坑點,希望大家不要被坑了。

3.如果使用的mysql驅動是6.x的,那就無法產生,使用5.x版本的就可以產生。

順便附上一份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>    <!--匯入屬性配置-->    <properties resource="datasource.properties"/>    <!--指定特定資料庫的jdbc驅動jar包的位置-->    <classPathEntry location="E:/JavaWeb_WorkSpace/YYMall/src/main/resources/mysql-connector-java-5.1.41.jar"/>    <context id="default" targetRuntime="MyBatis3">        <!-- optional,旨在建立class時,對注釋進行控制 -->        <commentGenerator>            <property name="suppressDate" value="true"/>            <property name="suppressAllComments" value="true"/>        </commentGenerator>        <!--jdbc的資料庫連接 -->        <jdbcConnection                driverClass="com.mysql.jdbc.Driver"                connectionURL="${db.url}"                userId="${db.username}"                password="${db.password}">        </jdbcConnection>        <!-- 非必需,類型處理器,在資料庫類型和java類型之間的轉換控制-->        <javaTypeResolver>            <property name="forceBigDecimals" value="false"/>        </javaTypeResolver>        <!-- Model模型產生器,用來產生含有主鍵key的類,記錄類 以及查詢Example類            targetPackage     指定產生的model產生所在的包名            targetProject     指定在該項目下所在的路徑        -->        <!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">-->        <javaModelGenerator targetPackage="com.yykj.mall.pojo" targetProject="./src/main/java">            <!-- 是否允許子包,即targetPackage.schemaName.tableName -->            <property name="enableSubPackages" value="false"/>            <!-- 是否對model添加 建構函式 -->            <property name="constructorBased" value="true"/>            <!-- 是否對類CHAR類型的列的資料進行trim操作 -->            <property name="trimStrings" value="true"/>            <!-- 建立的Model對象是否 不可改變  即產生的Model對象不會有 setter方法,只有構造方法 -->            <property name="immutable" value="false"/>        </javaModelGenerator>        <!--mapper對應檔產生所在的目錄 為每一個資料庫的表產生對應的SqlMap檔案 -->        <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->        <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">            <property name="enableSubPackages" value="false"/>        </sqlMapGenerator>        <!-- 用戶端代碼,產生便於使用的針對Model對象和XML設定檔 的代碼                type="ANNOTATEDMAPPER",產生Java Model 和基於註解的Mapper對象                type="MIXEDMAPPER",產生基於註解的Java Model 和相應的Mapper對象                type="XMLMAPPER",產生SQLMap XML檔案和獨立的Mapper介面        -->        <!-- targetPackage:mapper介面dao產生的位置 -->        <javaClientGenerator type="XMLMAPPER" targetPackage="com.yykj.mall.dao" targetProject="./src/main/java">            <!-- enableSubPackages:是否讓schema作為包的尾碼 -->            <property name="enableSubPackages" value="false" />        </javaClientGenerator>        <table tableName="shipping" domainObjectName="Shipping" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"        enableUpdateByPrimaryKey="true"        enableDeleteByPrimaryKey="true" />        <table tableName="cart" domainObjectName="Cart" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>        <table tableName="cart_item" domainObjectName="CartItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>        <table tableName="category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>        <table tableName="order" domainObjectName="Order" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>        <table tableName="order_item" domainObjectName="OrderItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>        <table tableName="pay_info" domainObjectName="PayInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>        <table tableName="product" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true">            <columnOverride column="detail" jdbcType="VARCHAR" />            <columnOverride column="sub_images" jdbcType="VARCHAR" />        </table>        <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" enableSelectByPrimaryKey="true"               enableUpdateByPrimaryKey="true"               enableDeleteByPrimaryKey="true"/>    </context></generatorConfiguration>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.