MyBatis-Spring le permite inyectar mapeadores en granos de servicio. Cuando se usa un mapeador, está bien llamar al mapeador al igual que llamar a DAO, pero en este momento no necesita codificar ninguna implementación de DAO, porque MyBatis lo hará por usted.
Con el mapeador inyectado, su código no tendrá dependencias mybatis-spring y dependencias mybatis. Hay un mapeador tan simple en nuestra aplicación. También debe saber que el mapeador es solo una interfaz:
interfaz pública usermapper {user getUser (string userId); }Así es como usas MyBatis-Spring para crear mapeadores:
<bean id = "usermapper"> <propiedad name = "sqlsessionFactory" ref = "sqlsessionFactory" /> <propiedad name = "mapperinterface" value = "sample.usermapper" /> < /bean>
Ahora su mapeador está listo para inyectar en el objeto de servicio:
<bean id = "fooservice"> <Property name = "usermapper" ref = "usermapper"/> </bean>
Nota: El nombre de clase completa de la interfaz Mapper corresponde al espacio de nombres del archivo de configuración XML de mapper.
Sobre mapperfactorybean
La clase proxy creada por mapperFactoryBean implementa la interfaz mapper (como en el ejemplo anterior: usermapper) y se inyecta en la aplicación. Debido a que el agente se crea en el entorno de ejecución, el mapeador especificado debe ser una interfaz. En lugar de una clase de implementación concreta.
No es necesario registrar todos los mapeadores en el archivo de configuración XML de Spring. En su lugar, puede usar un mapperscannerconfigurer, que buscará mapeadores en el classpath y los creará automáticamente en mapperFactoryBeans. Para crear un mapperscannerconfigurer, puede agregar el siguiente código a la configuración de Spring:
<Bean> <propery name = "basepackage" value = "org.mybatis.spring.sample.mapper"/> </bean>
La propiedad Basepackage le permite establecer la ruta del paquete básico para el archivo de la interfaz Mapper. Puede establecer más de una ruta de paquete utilizando un punto y coma o una coma como separador. Cada mapeador se buscará recursivamente en la ruta del paquete especificada.
Tenga en cuenta que no es necesario especificar SQLSessionFactory o SQLSessionTemplate, porque el MappersCannerConfigurer creará un mapperFactoryBean y luego lo ensamblará automáticamente. Sin embargo, si usa más de una fuente de datos (y, por lo tanto, múltiples SQLSessionFactory), el ensamblaje automático puede fallar. En este caso, puede usar la propiedad SQLSessionFactory o SQLSessionTemplate para establecer la fábrica/plantilla correcta.
MappersCannerConfigurer admite el filtrado para crear mapeadores mediante interfaces o anotaciones de creación especificadas. La propiedad AnnotationClass especifica el nombre de anotación a buscar. La propiedad MarkerInterface especifica la interfaz principal a buscar. Si se especifican ambos, el mapeador agregado a la interfaz coincide con ambos criterios. Por defecto, ambas propiedades son nulas, por lo que todas las interfaces dadas en el paquete base se pueden cargar como mapeadores.
El mapeador descubierto se nombrará utilizando la política de nombres predeterminada de Spring para el componente de detección automática. Es decir, si no se encuentra una anotación, utiliza el nombre de clase no fértiles no fértiles calificado del mapeador. Pero si encuentra el @Component o JSR-330 @llamado Annotation, obtendrá el nombre.