この記事では、Spring と Mybatis の間の 3 つの一般的な統合方法を主に紹介します。必要な統合フレームワーク パッケージは、リンクからアクセスできる mybatis-spring.jar です。
http://code.google.com/p/mybatis/ からダウンロードします。
1. データマッパー (MapperFactoryBean) メソッドを使用すると、mybatis マッピング ファイルを作成する必要がなく、対応する SQL ステートメントと入力パラメーターがアノテーションを使用して提供されます。
(1) Spring 設定ファイル:
<!-- jdbc 設定ファイルを導入します --> <context:property-placeholder location="jdbc.properties"/> <!-- 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> <!--SqlSessionFactory を作成し、データ ソースを指定します--> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!-- データを作成しますマッパー、データ マッパーはインターフェイスである必要があります --> <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) データマッパー UserMapper のコードは次のとおりです。
public Interface UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") User getUser(@Param("userId") long id); }(3) dao インターフェイス クラス UserDao のコードは次のとおりです。
パブリックインターフェイスUserDao {パブリックユーザーgetUserById(ユーザーユーザー);(4) dao 実装クラス UserDaoImpl2 のコードは次のとおりです。
public class UserDaoImpl2 は UserDao { private UserMapper userMapper; public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } public User getUserById(User user) { return userMapper.getUser(user.getId()); }2. org.apache.ibatis.session.SqlSession インタフェースの実装クラス org.mybatis.spring.SqlSessionTemplate を使用します。
mybatisではSqlSessionFactoryBuilderでsessionFactoryを作成できます。
MyBatis-Spring では、代わりに SqlSessionFactoryBean が使用されます。
SqlSessionFactoryBean には必須属性 dataSource があり、また共通属性 configLocation (mybatis の XML 構成ファイルのパスを指定するために使用されます) もあります。
(1) Spring 設定ファイル:
<!-- SqlSessionFactory を作成し、データ ソースを指定します -->
<bean id="sqlSessionFactory">
<property name="データソース" ref="データソース" />
<!-- sqlMapConfig 全体構成ファイルを指定すると、カスタマイズされた環境は Spring コンテナーで有効になりません -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--エンティティ クラス マッピング ファイルを指定します。エンティティ クラスのエイリアスを指定する必要がある場合は、特定のパッケージとサブパッケージ内のすべての構成ファイルを同時に指定できます。 、configLocation 属性を指定してから、マッパーを使用して、mybatis 一般構成ファイルにエンティティ クラス マッピング ファイルを導入できます -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<豆>
(2)mybatis 全体構成ファイル sqlMapConfig.xml:
<configuration> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper resource="com/xxt/ibatis/ dbcp/ドメイン/user.map.xml" /> </mappers> </configuration>
(3) エンティティクラスマッピングファイル user.map.xml:
<mapper namespace="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" column="id" /> <result property=" name" column="name" /> <result property="password" column="password" /> <result property="createTime" column="createtime" /> </resultMap> <select id="getUser"parameterType="User" resultMap="userMap"> select * from user where id = #{id} </select> <mapper/>(4) dao層インターフェース実装クラスUserDaoImpl:
Javaコード
public class UserDaoImpl は UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user); } public void setSqlSession( SQLセッションテンプレートsqlSession) { this.sqlSession = sqlSession } }3. 抽象クラス org.mybatis.spring.support.SqlSessionDaoSupport を使用して SqlSession を提供します。
(1) スプリング設定ファイル:
Javaコード
<bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <property name="mapperLocations" " value="クラスパス*:com/xxt/ibatis/dbcp/domain/user.map.xml"/ > --> </bean> <bean id="sqlSession" > <constructor-argindex="0" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl3"> <!--SqlSessionTemplate インスタンスを挿入します--> <property name= "sqlSessionTemplate" ref="sqlSession" /> <!-- SqlSessionFactory インスタンスを直接挿入することもできます。両方を指定すると、SqlSessionFactory は無効になります --> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) dao 層インターフェース実装クラス UserDaoImpl3:
Javaコード
public class UserDaoImpl3 extends SqlSessionDaoSupportimplements UserDao { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user); }