私は現在、サードパーティの請負業者によって構築されたレガシープロジェクトに取り組んでいます。これは、SpringとMyBatisを使用してMySQLサーバーと通信するJavaサーバーです。Spring DTOの仕組みを理解できない
私は、CamelCaseとアンダースコアの両方を含むDTO getters/setterでいくつかの醜いメソッド名をリファクタリングしようとしています。私は例としてgetCommon_name()
メソッドを使用します。名前をgetCommonName()
に変更すると、そのメソッドのデータベース検索が機能しなくなります。私は、メソッドが呼び出されたコード内のオカレンスを見つけるためにテキスト検索を試みましたが、DTO定義内にしか存在しないようです。データベースに自動的にマッピングされている可能性もあります。その方法はcommon_name
というテーブルを検索しますが、それはわかりません。
何が起きているのか、誰にでも分かりますか?これはSpring/MyBatisを初めて使ったときです。詳細と
編集:
の答えはこれまでのところ、私のマッピングが設定されているかについて尋ねてきました。
mybatis-config.xml
<configuration>
<typeAliases>
<typeAlias type="com.example.dto.SpeciesDTO" alias="species" />
<!--aliases for other DTOs-->
</typeAliases>
<mappers>
<mapper resource="com/example/dao/species/speciesSQL.xml" />
<!--aliases for other DAOs-->
</mappers>
</configuration>
mybatis-context.xml
<beans>
<bean id="SpeciesDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface"
value="com.example.dao.species.SpeciesDAO" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!--beans for other DAOs-->
</beans>
また、DAOはすべて、このような何かを見て.xmlファイルを関連付けられているファイル:
それはこのようなものが見えます<mapper namespace="com.example.species.speciesDAO">
<select id="getSpecies" parameterType="String" resultType="species">
SELECT * FROM SPECIES
</select>
<!--other methods executing SQL-->
</mapper>
私は、DAOメソッドがどのようにDTO getters/setterを明示的にマップするか見ていません。たとえば、メソッドgetCommon_name()
を検索すると、DTO自体の定義と、自分のサービスの1つでそのメソッドへの呼び出しが発生します(メソッドの名前を変更するときに両方の出現を確実に編集しました)。すべてのメソッドは、common_name
というプロパティを返します。
DTOと注釈/マッピングファイルが表示されていないとわかりにくいです。あなたのように、あなたのフィールド名に基づいてマッピングを自動化することができます。 – yogidilip
事実ですが、フルプロジェクトのテキスト検索では、もし存在すれば、私が変更したメソッドへのマッピングが返されているはずです。私のコードの外のどこかでマッピングが起こっているようです。 – Ecliptica