[JAVA] Passé d'iBATIS à MyBatis3

J'ai finalement migré mon ancien système construit avec Spring + iBATIS vers Spring + MyBatis3. J'ai essayé plusieurs fois de migrer, mais le nombre de fichiers de définition SQL dépasse 1000 et la migration manuelle vers le fichier de définition de MyBatis prend trop de temps. Officiel? ne fonctionnait pas bien, alors j'ai abandonné. Cependant, si je ne pouvais pas migrer vers MyBatis, je ne pouvais pas mettre à niveau la version de Spring, j'ai donc pensé que c'était gênant, j'ai donc créé un outil de migration de fichier de définition et terminé la migration en toute sécurité. Je ne pense pas qu'il y ait beaucoup de demande, mais j'ai décidé de le rendre public pour qu'il soit utile aux gens qui sont en difficulté quelque part.

Je n'ai pas pu migrer avec succès avec les outils officiels

Mybatis / ibatis2mybatis sur GitHub semble être l'outil officiel, mais j'ai décidé de créer un outil de migration car cet outil ne pouvait pas migrer correctement dans les cas suivants fait. (Je pense qu'il y en avait d'autres, mais j'ai oublié ...)

Travaux de migration

Modifications de la bibliothèque

Changer avant

compile group: 'org.apache.ibatis', name: 'ibatis-sqlmap', version: '2.3.4.726'

Après le changement

compile group: 'org.mybatis', name: 'mybatis', version: '3.4.5'
compile group: 'org.mybatis', name: 'mybatis-spring', version: '1.3.1'

Modifier les paramètres

Changer avant

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" scope="singleton">
  <property name="configLocations">
    <list>
       <value>classpath:/ibatis.xml</value>
    </list>
  </property>
  <property name="dataSource" ref="dataSource" />
</bean>

Après le changement

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="mapperLocations" value="classpath*:/mybatis/**/*.xml" />
  <property name="configuration">
    <bean class="org.apache.ibatis.session.Configuration">
      <property name="callSettersOnNulls" value="true"/>
      <property name="returnInstanceForEmptyRow" value="true"/>
    </bean>
  </property>
</bean>

Changements de code

Changer avant

public class Dao extends SqlMapClientDaoSupport {
    public Object find(String id) throws SQLException {
        return getSqlMapClient().queryForObject(id);
    }
    public List findList(String id) throws SQLException {
        return getSqlMapClient().queryForList(id);
    }
}

Après le changement

public class Dao extends SqlSessionDaoSupport {
    public Object find(String id) throws SQLException {
        return getSqlSession().selectOne(id);
    }
    public List findList(String id) throws SQLException {
        return getSqlSession().selectList(id);
    }
}

Migrer le fichier sqlMap vers le fichier mappeur

J'ai créé un outil pour migrer le fichier iBATIS sqlMap vers le fichier de mappage MyBatis, je vais donc l'utiliser. Un JDK est nécessaire pour exécuter cet outil, veuillez donc l'installer à l'avance.

GitHub - ogasada/ibatisToMyBatis3

  1. Récupérez le projet sur GitHub $ git clone https://github.com/ogasada/ibatisToMyBatis3.git
  2. Modifiez le fichier de configuration et spécifiez le répertoire dans lequel le fichier sqlMap source est stocké.
  1. Exécutez le programme et migrez vers le fichier mappeur $ ./gradlew convert

L'outil de migration peut être inadéquat car je le limite aux fonctionnalités dont j'ai besoin. Le programme lui-même n'est pas un gros problème, donc je pense que vous pouvez ajouter des fonctions si vous le modifiez correctement.

Recommended Posts

Passé d'iBATIS à MyBatis3
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Migrer de JUnit 4 vers JUnit 5
De Java à Ruby !!
Essayez Spring Boot de 0 à 100.
Migration de Cobol vers JAVA
Passer de slim3-gen à slim3-gen-jsr269
Passer d'AWS à PaizaCloud
Souffrant de My Batis foreach erreur
Nouvelles fonctionnalités de Java7 à Java8
Connectez-vous de Java à PostgreSQL
Conversion de ○ mois en ○ années ○ mois
Réécriture de l'applet à l'application
Passer de SQLite3 à PostgreSQL
De Java inefficace à Java efficace
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
migration du tampon de protocole de 2.x vers 3.x
[Note] Télécharger depuis S3, télécharger vers S3
Arrêter de renvoyer du client au serveur
Mise à niveau d'Ubuntu Desktop de 18.0.4 (?) À 20.04.1 (focal)
Migrer de on-prepukiwiki vers esa.io \ (⁰⊖⁰) /
Passer de JSP + JSTL à Thymeleaf
Java sera impliqué dès aujourd'hui
De Java à VB.NET - Écriture de notes de contraste
Introduction à Ruby (à partir d'autres langues)
Java, interface pour partir du débutant
Comment utiliser l'annotation MyBatis Mapper
Changer la base de données de SQLite en MySQL
Remarques sur la migration de CircleCI 1.0 vers 2.0
Accro à l'importation de projets depuis GitHub
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
De l'introduction à l'utilisation de byebug
Passer d'Eclipse à VS Code
La route de JavaScript à Java
Memorandum Poem (mis à jour de temps en temps)
[Java] Conversion d'un tableau à une liste
Mettre à jour MySQL de 5.7 à 8.0 avec Docker
Comment passer du HTML à Haml
Essayez d'obtenir des données de la base de données en utilisant MyBatis dans le projet Micronaut + Kotlin