Cet article présente principalement trois méthodes d'intégration courantes entre Spring et Mybatis. Le package de cadre d'intégration requis est mybatis-spring.jar, accessible via le lien.
Téléchargez depuis http://code.google.com/p/mybatis/.
1. Grâce à la méthode du mappeur de données (MapperFactoryBean), il n'est pas nécessaire d'écrire des fichiers de mappage mybatis, et les instructions SQL et paramètres d'entrée correspondants sont fournis à l'aide d'annotations.
(1) Fichier de configuration Spring :
<!--Introduire le fichier de configuration jdbc--> <context:property-placeholder location="jdbc.properties"/> <!--Créer une source de données jdbc--> <bean id="dataSource" destroy-method="close "> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="initialSize" value="${initialSize}"/> <property name="maxActive " value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> </bean> <!--Créez SqlSessionFactory et spécifiez la source de données--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--Créez des données Mappeur, le mappeur de données doit être une interface --> <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) Mappeur de données UserMapper, le code est le suivant :
interface publique UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") Utilisateur getUser(@Param("userId") long id }(3) classe d'interface dao UserDao, le code est le suivant :
interface publique UserDao { utilisateur public getUserById (utilisateur utilisateur });(4) classe d'implémentation dao UserDaoImpl2, le code est le suivant :
public class UserDaoImpl2 implémente UserDao { private UserMapper userMapper; public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } public User getUserById(User user) { return userMapper.getUser(user.getId() } );2. Utilisez la classe d'implémentation org.mybatis.spring.SqlSessionTemplate de l'interface org.apache.ibatis.session.SqlSession.
Dans mybatis, sessionFactory peut être créé par SqlSessionFactoryBuilder.
Dans MyBatis-Spring, SqlSessionFactoryBean est utilisé à la place.
SqlSessionFactoryBean a un attribut obligatoire dataSource, ainsi qu'un attribut commun configLocation (utilisé pour spécifier le chemin du fichier de configuration XML de mybatis).
(1) Fichier de configuration Spring :
<!-- Créez SqlSessionFactory et spécifiez la source de données -->
<identifiant du bean="sqlSessionFactory">
<property name="dataSource" ref="dataSource" />
<!-- Spécifiez le fichier de configuration globale sqlMapConfig, et l'environnement personnalisé ne prendra plus effet dans le conteneur Spring -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--Spécifiez le fichier de mappage de classe d'entité. Vous pouvez spécifier un certain package et tous les fichiers de configuration sous le sous-package en même temps. Un seul mapperLocations et configLocation sont requis lorsque vous devez spécifier un alias pour la classe d'entité. , vous pouvez spécifier l'attribut configLocation, puis utiliser le mappeur pour introduire les fichiers de mappage de classe d'entité dans le fichier de configuration générale mybatis -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<haricot>
(2)fichier de configuration totale mybatis sqlMapConfig.xml :
<configuration> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper resource="com/xxt/ibatis/ dbcp/ domain/user.map.xml" /> </mappers> </configuration>
(3) Fichier de mappage de classe d'entité user.map.xml :
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" column="id" /> <result property=" nom" column="nom" /> <result property="password" column="password" /> <result property="createTime" column="createtime" /> </resultMap> <select id="getUser" paramètreType="Utilisateur" resultMap="userMap"> sélectionnez * de l'utilisateur où id = #{id} </select> <mapper/>(4) classe d'implémentation d'interface de couche dao UserDaoImpl :
Code Java
public class UserDaoImpl implémente UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } public void setSqlSession( Modèle de session SQL sqlSession) { this.sqlSession = sqlSession;3. Utilisez la classe abstraite org.mybatis.spring.support.SqlSessionDaoSupport pour fournir SqlSession.
(1) fichier de configuration du printemps :
Code Java
<bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <property name="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"> <!--Injecter l'instance SqlSessionTemplate--> <property name= "sqlSessionTemplate" ref="sqlSession" /> <!--Vous pouvez également injecter directement l'instance SqlSessionFactory Lorsque les deux sont spécifiées, SqlSessionFactory devient invalide--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) classe d'implémentation d'interface de couche dao UserDaoImpl3 :
Code Java
classe publique UserDaoImpl3 étend SqlSessionDaoSupport implémente UserDao { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } })