In diesem Artikel werden hauptsächlich drei gängige Integrationsmethoden zwischen Spring und Mybatis vorgestellt. Das erforderliche Integrationsframework-Paket ist mybatis-spring.jar, auf das über den Link zugegriffen werden kann
Von http://code.google.com/p/mybatis/ herunterladen.
1. Bei Verwendung der Datenzuordnungsmethode (MapperFactoryBean) müssen keine Mybatis-Zuordnungsdateien geschrieben werden, und die entsprechenden SQL-Anweisungen und Eingabeparameter werden mithilfe von Anmerkungen bereitgestellt.
(1) Spring-Konfigurationsdatei:
<!--JDBC-Konfigurationsdatei einführen--> <context:property-placeholder location="jdbc.properties"/> <!--JDBC-Datenquelle erstellen--> <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> <!--SqlSessionFactory erstellen und Datenquelle angeben--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--Daten erstellen Mapper, der Datenmapper muss eine Schnittstelle sein --> <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) Data Mapper UserMapper, der Code lautet wie folgt:
öffentliche Schnittstelle UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") User getUser(@Param("userId") long id);(3) Dao-Schnittstellenklasse UserDao, der Code lautet wie folgt:
öffentliche Schnittstelle UserDao { public User getUserById(User user }(4) Dao-Implementierungsklasse UserDaoImpl2, der Code lautet wie folgt:
öffentliche Klasse UserDaoImpl2 implementiert UserDao { private UserMapper userMapper; public void setUserMapper(UserMapper) { this.userMapper = userMapper } public User getUserById(User user) { return userMapper.getUser(user.getId());2. Verwenden Sie die Implementierungsklasse org.mybatis.spring.SqlSessionTemplate der Schnittstelle org.apache.ibatis.session.SqlSession.
In mybatis kann sessionFactory mit SqlSessionFactoryBuilder erstellt werden.
In MyBatis-Spring wird stattdessen SqlSessionFactoryBean verwendet.
SqlSessionFactoryBean verfügt über ein erforderliches Attribut dataSource und ein gemeinsames Attribut configLocation (wird zur Angabe des XML-Konfigurationsdateipfads von mybatis verwendet).
(1) Spring-Konfigurationsdatei:
<!-- SqlSessionFactory erstellen und Datenquelle angeben -->
<bean id="sqlSessionFactory">
<property name="dataSource" ref="dataSource" />
<!-- Geben Sie die Gesamtkonfigurationsdatei sqlMapConfig an, und die angepasste Umgebung wird im Spring-Container nicht mehr wirksam -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--Geben Sie die Entitätsklassenzuordnungsdatei an. Sie können ein bestimmtes Paket und alle Konfigurationsdateien unter dem Unterpaket gleichzeitig angeben. Es sind nur ein MapperLocations und eine ConfigLocation erforderlich Sie können das configLocation-Attribut angeben und dann den Mapper verwenden, um Entitätsklassenzuordnungsdateien in die allgemeine Mybatis-Konfigurationsdatei einzuführen ->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<Bohne>
(2)Mybatis-Gesamtkonfigurationsdatei sqlMapConfig.xml:
<configuration> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper resources="com/xxt/ibatis/ dbcp/ domain/user.map.xml" /> </mappers> </configuration>
(3) Entitätsklassenzuordnungsdatei user.map.xml:
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" columns="id" /> <result property=" name" columns="name" /> <result property="password" columns="password" /> <result property="createTime" columns="createtime" /> </resultMap> <select id="getUser" parameterType="User" resultMap="userMap"> select * from user where id = #{id} </select> <mapper/>(4) Implementierungsklasse der Dao-Layer-Schnittstelle UserDaoImpl:
Java-Code
öffentliche Klasse UserDaoImpl implementiert UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } public void setSqlSession( SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; }3. Verwenden Sie die abstrakte Klasse org.mybatis.spring.support.SqlSessionDaoSupport, um SqlSession bereitzustellen.
(1) Federkonfigurationsdatei:
Java-Code
<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"> <!--Inject SqlSessionTemplate-Instanz--> <property name= „sqlSessionTemplate“ ref="sqlSession" /> <!--Sie können die SqlSessionFactory-Instanz auch direkt einfügen. Wenn beide angegeben sind, wird SqlSessionFactory ungültig--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) Implementierungsklasse der Dao-Layer-Schnittstelle UserDaoImpl3:
Java-Code
öffentliche Klasse UserDaoImpl3 erweitert SqlSessionDaoSupport implementiert UserDao { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);