Este artículo presenta principalmente tres métodos de integración comunes entre Spring y Mybatis. El paquete de marco de integración requerido es mybatis-spring.jar, al que se puede acceder a través del enlace.
Descargar desde http://code.google.com/p/mybatis/.
1. Utilizando el método del asignador de datos (MapperFactoryBean), no es necesario escribir archivos de mapeo mybatis, y las declaraciones SQL correspondientes y los parámetros de entrada se proporcionan mediante anotaciones.
(1) Archivo de configuración de Spring:
<!--Introducir el archivo de configuración jdbc--> <context:property-placeholder location="jdbc.properties"/> <!--Crear fuente de datos jdbc--> <bean id="dataSource" destroy-method="close "> <nombre de propiedad="nombreClaseDeConductor" valor="${conductor}"/> <nombre de propiedad="url" valor="${url}"/> <nombre de propiedad="nombre de usuario" valor="${nombre de usuario}"/> <nombre de propiedad="contraseña" valor="${contraseña}"/> <nombre de propiedad="initialSize" valor="${initialSize}"/> <nombre de propiedad="maxActive " valor="${maxActive}"/> <nombre de propiedad="maxIdle" valor="${maxIdle}"/> <nombre de propiedad="minIdle" valor="${minIdle}"/> </bean> <!--Crear SqlSessionFactory y especificar la fuente de datos--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--Crear datos Mapeador, el mapeador de datos debe ser una interfaz --> <bean id="userMapper"> <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl2"> <property name="userMapper" ref="userMapper"/> </bean>(2) Mapeador de datos UserMapper, el código es el siguiente:
interfaz pública UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") Usuario getUser(@Param("userId") long id);(3) clase de interfaz dao UserDao, el código es el siguiente:
interfaz pública UserDao { Usuario público getUserById (Usuario usuario);(4) clase de implementación dao UserDaoImpl2, el código es el siguiente:
clase pública UserDaoImpl2 implementa UserDao { userMapper privado userMapper; public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper } usuario público getUserById(Usuario usuario) { return userMapper.getUser(user.getId());2. Utilice la clase de implementación org.mybatis.spring.SqlSessionTemplate de la interfaz org.apache.ibatis.session.SqlSession.
En mybatis, SqlSessionFactoryBuilder puede crear sessionFactory.
En MyBatis-Spring, se utiliza SqlSessionFactoryBean en su lugar.
SqlSessionFactoryBean tiene un atributo requerido dataSource y también tiene un atributo común configLocation (utilizado para especificar la ruta del archivo de configuración xml de mybatis).
(1) Archivo de configuración de Spring:
<!-- Cree SqlSessionFactory y especifique la fuente de datos -->
<bean id="sqlSessionFactory">
<nombre de propiedad="fuente de datos" ref="fuente de datos" />
<!-- Especifique el archivo de configuración general sqlMapConfig y el entorno personalizado ya no tendrá efecto en el contenedor Spring -->
<nombre de propiedad="configLocation" valor="classpath:sqlMapConfig.xml"/>
<!--Especifique el archivo de asignación de clase de entidad. Puede especificar un determinado paquete y todos los archivos de configuración en el subpaquete al mismo tiempo. Solo se requieren un mapperLocations y configLocation. , Puede especificar el atributo configLocation y luego Usar mapper para introducir archivos de mapeo de clases de entidad en el archivo de configuración general de mybatis -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<frijol>
(2)archivo de configuración total de mybatis sqlMapConfig.xml:
<configuración> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="Usuario" /> </typeAliases> <mappers> <mapper recurso="com/xxt/ibatis/ dbcp/ dominio/usuario.map.xml" /> </mappers> </configuration>
(3) Archivo de mapeo de clases de entidad user.map.xml:
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="Usuario" id="userMap"> <id propiedad="id" column="id" /> <resultado propiedad=" nombre" columna="nombre" /> <resultado propiedad="contraseña" columna="contraseña" /> <resultado propiedad="createTime" columna="createtime" /> </resultMap> <select id="getUser" parámetroType="Usuario" resultMap="userMap"> seleccione * del usuario donde id = #{id} </select> <mapper/>(4) clase de implementación de interfaz de capa dao UserDaoImpl:
código java
clase pública UserDaoImpl implementa UserDao { public SqlSessionTemplate sqlSession; usuario público getUserById(Usuario usuario) { return (Usuario)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", usuario } public void setSqlSession( Plantilla de sesión Sql sqlSession) { this.sqlSession = sqlSession;3. Utilice la clase abstracta org.mybatis.spring.support.SqlSessionDaoSupport para proporcionar SqlSession.
(1) archivo de configuración de resorte:
código java
<bean id="sqlSessionFactory"> <nombre de propiedad="fuente de datos" ref="fuente de datos" /> <nombre de propiedad="configLocation" valor="classpath:sqlMapConfig.xml"/> <!-- <nombre de propiedad="mapperLocations" " value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/ > --> </bean> <bean id="sqlSession" > <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl3"> <!--Inyectar instancia de SqlSessionTemplate--> <nombre de propiedad= "sqlSessionTemplate" ref="sqlSession" /> <!--También puede inyectar directamente la instancia de SqlSessionFactory Cuando se especifican ambos, SqlSessionFactory deja de ser válido--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>.
(2) clase de implementación de interfaz de capa dao UserDaoImpl3:
código java
la clase pública UserDaoImpl3 extiende SqlSessionDaoSupport implementa UserDao { Usuario público getUserById (Usuario usuario) { return (Usuario) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", usuario);