en utilisant des types de MyBatis/Printemps

Je suis à l'aide de MyBatis avec le Printemps de l'Intégration comme décrit ici.

Je suis plus à l'aide de la Joda Date API au lieu de Java Date de l'API, maintenant le problème est de s'assurer que MyBatis reconnaît le Joda Date de l'API, et me permet d'interroger le même.

Maintenant documenté la façon d'y parvenir est d'utiliser un DateTypeHandler

Je pars du principe que si nous utilisons la bonne annotations, Mybatis sera ramasser le gestionnaire personnalisé et l'enregistrer avec le sqlsessionfactory.

Donc ma classe ressemble à

@MappedTypes(value = DateTime.class)
@MappedJdbcTypes(value = {JdbcType.DATE,JdbcType.TIME,JdbcType.TIMESTAMP})

public class MyBatisJodaDateTimeType extends DateTypeHandler {
......
.....
}

Une certaine façon cela ne veut pas enregistrer mon Type Personnalisé gestionnaire ...., Ce que je vais avoir à faire, c'est écrire du code comme ceci au démarrage de l'application ...

 SqlSessionFactory mybatisSessionFactory = applicationContext.getBean("sqlSessionFactory", SqlSessionFactory.class);
        MyBatisJodaDateTimeType myBatisJodaDateTimeType = applicationContext.getBean("myBatisJodaDateTimeType", MyBatisJodaDateTimeType.class);

        mybatisSessionFactory.getConfiguration().getTypeHandlerRegistry().register(DateTime.class, myBatisJodaDateTimeType);
        mybatisSessionFactory.getConfiguration().getTypeHandlerRegistry().register(DateTime.class, JdbcType.DATE, myBatisJodaDateTimeType);
        mybatisSessionFactory.getConfiguration().getTypeHandlerRegistry().register(DateTime.class, JdbcType.TIME, myBatisJodaDateTimeType);
        mybatisSessionFactory.getConfiguration().getTypeHandlerRegistry().register(DateTime.class, JdbcType.TIMESTAMP, myBatisJodaDateTimeType);
        mybatisSessionFactory.getConfiguration().getTypeHandlerRegistry().register(DateTime.class, null, myBatisJodaDateTimeType);

Je sais que cela ressemble à de la merde et je veux l'éviter, ne puis-je pas obtenir MyBatis analyse de mon application pour ces annotations, puis d'enregistrer mon type personnalisé gestionnaire automatiquement ?

Je suis sûr que mon type n'a pas été enregistré (en Utilisant seulement les annotations) parce que j'ai fait inspecter dans le MYBatis code et ne pouvait pas trouver mon gestionnaire de là ....

OriginalL'auteur Sudarshan | 2012-01-11