質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.83%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

解決済

mbGeneratorを実行すると自作したメソッドが上書きされてなくなってしまう。

asdfasfff
asdfasfff

総合スコア3

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

1回答

0グッド

0クリップ

1516閲覧

投稿2022/08/21 11:04

下記コマンドを実行してマッパーファイルなどを自動生成をしております。
./gradlew mbGenerator

自動生成したsqlとは別に自作のsqlもxxMapper.xmlやxxMapper.javaに記載しています。
xxMapper.xmlは自作したsqlは上書きされず残っています。
ただ、Mapper.javaの方はファイルごと上書きされているようで、自作のメソッドが削除されています。
上記コマンドを実行した際にxxMapper.javaで自作したsqlが消されないようにするにはどうしたらよろしいでしょうか。

解消法などご存知でしたら教えていただけないでしょうか。
(自作したsqlに@mbg.generatedはつけていません。)

gradleの設定は下記です。

// プラグイン plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' id 'java-library' id 'eclipse' id "com.thinkimi.gradle.MybatisGenerator" version "2.4" // MyBatis Generatorプラグイン } // グループ名 group = 'xxx' // java version sourceCompatibility = '17' repositories { mavenCentral() } dependencies { // spring mybatis starter implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2' // mybatis generator core implementation 'org.mybatis.generator:mybatis-generator-core:1.3.7' // mybatis 3rd party pulugin implementation 'com.itfsw:mybatis-generator-plugin:1.3.9' // spring jdbc implementation 'org.springframework.boot:spring-boot-starter-jdbc' // mysql connector runtimeOnly 'mysql:mysql-connector-java' // spring starter testImplementation 'org.springframework.boot:spring-boot-starter-test' // spring dev tools implementation 'org.springframework.boot:spring-boot-devtools' // lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' } configurations { mybatisGenerator compileOnly { extendsFrom annotationProcessor } } // mybatis設定 mybatisGenerator { verbose = true // 設定ファイル configFile = "src/main/resources/mybatis/generatorConfig.xml" dependencies { mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7' mybatisGenerator 'com.itfsw:mybatis-generator-plugin:1.3.9' mybatisGenerator 'mysql:mysql-connector-java' } }

mybatisGeneratorConfigの設定は下記です。

<?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> <!-- 実行方法は ./gradle clean mbGenerator --> <context id="schema" targetRuntime="MyBatis3"> <property name="javaFileEncoding" value="UTF-8" /> <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin"> <property name="searchString" value="Example$"/> <property name="replaceString" value="Criteria"/> </plugin> <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> <plugin type="org.mybatis.generator.plugins.VirtualPrimaryKeyPlugin" /> <plugin type="org.mybatis.generator.plugins.MapperAnnotationPlugin" /> <plugin type="com.itfsw.mybatis.generator.plugins.LombokPlugin"> <property name="@Data" value="true"/> <property name="@Builder" value="false"/> <property name="@AllArgsConstructor" value="true"/> <property name="@NoArgsConstructor" value="true"/> <property name="@Accessors(chain = true)" value="false"/> <property name="supportSuperBuilderForIdea" value="false"/> </plugin> <plugin type="com.itfsw.mybatis.generator.plugins.ModelBuilderPlugin"/> <plugin type="com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin"> <property name="enableAndIf" value="true"/> </plugin> <plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"> <property name="allowMultiQueries" value="false"/> </plugin> <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/> <plugin type="com.itfsw.mybatis.generator.plugins.UpsertPlugin"> <property name="allowMultiQueries" value="false"/> <property name="allowBatchUpsert" value="fasle"/> </plugin> <commentGenerator> <property name="suppressDate" value="true"/> </commentGenerator> <jdbcConnection driverClass="xxx" connectionURL="xxx" userId="xxx" password="xxx" /> <javaTypeResolver> <property name="useJSR310Types" value="true"/> </javaTypeResolver> <javaModelGenerator targetPackage="xxx" targetProject="xxx"> </javaModelGenerator> <!-- mapper.xmlの出力先と設定 --> <sqlMapGenerator targetPackage="xxx" targetProject="xxx"> </sqlMapGenerator> <!-- mapper.javaの出力先と設定 --> <javaClientGenerator targetPackage="xxx" targetProject="xxx" type="XMLMAPPER"> </javaClientGenerator> <table schema="xxx" tableName="M\_%"> <property name="ignoreQualifiersAtRuntime" value="true"/> </table>

実行時のログは下記になります。

[ant:mbgenerator] Existing file C:\Users\.....\mapper\xxMapper.java was overwritten

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

MyBatis Generatorのドキュメント を見る限りだと、Javaファイルが上書きされてしまうのは、MyBatis Generatorの仕様のようです。

MBG will not merge Java files, it can either overwrite existing files or save newly generated files with a different unique name. If you make changes to the generated Java files and run MBG iteratively you will have to merge the changes by hand. When run as an Eclipse plugin, then MBG can automatically merge Java files.

自動生成したJavaファイルには手を加えない運用にするか、上にある通りEclipseのプラグインを利用して自動生成を行う必要がありそうです。

投稿2022/08/22 04:52

neko_the_shadow

総合スコア1892

asdfasfff👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

asdfasfff

2022/08/22 14:51

ご丁寧にありがとうございます!eclipse pluginで対応するようにしました。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.83%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。