이 기사에서는 주로 Spring과 Mybatis 간의 세 가지 일반적인 통합 방법을 소개합니다. 필요한 통합 프레임워크 패키지는 링크를 통해 액세스할 수 있는 mybatis-spring.jar입니다.
http://code.google.com/p/mybatis/에서 다운로드하세요.
1. 데이터 매퍼(MapperFactoryBean) 메소드를 사용하면 마이바티스 매핑 파일을 작성할 필요가 없으며 해당 SQL 문과 입력 매개변수를 Annotation을 통해 제공한다.
(1) 스프링 구성 파일:
<!--jdbc 구성 파일 소개--> <context:property-placeholder location="jdbc.properties"/> <!--jdbc 데이터 소스 생성--> <bean id="dataSource" destroy-method="close "> <속성 이름="driverClassName" value="${driver}"/> <속성 이름="url" value="${url}"/> <속성 이름="사용자 이름" value="${username}"/> <속성 이름="password" value="${password}"/> <속성 이름="initialSize" value="${initialSize}"/> <속성 이름="maxActive " value="${maxActive}"/> <속성 이름="maxIdle" value="${maxIdle}"/> <속성 이름="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" /> <속성 이름="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl2"> <속성 이름="userMapper" ref="userMapper"/> </bean>(2) 데이터 매퍼 UserMapper, 코드는 다음과 같습니다.
공용 인터페이스 UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") User getUser(@Param("userId") long id) }(3) dao 인터페이스 클래스 UserDao, 코드는 다음과 같습니다:
공개 인터페이스 UserDao { 공개 사용자 getUserById(사용자 사용자) }(4) dao 구현 클래스 UserDaoImpl2, 코드는 다음과 같습니다:
공용 클래스 UserDaoImpl2는 UserDao를 구현합니다.
2. org.apache.ibatis.session.SqlSession 인터페이스의 구현 클래스 org.mybatis.spring.SqlSessionTemplate을 사용하십시오.
mybatis에서는 SqlSessionFactoryBuilder를 통해 sessionFactory를 생성할 수 있습니다.
MyBatis-Spring에서는 SqlSessionFactoryBean이 대신 사용됩니다.
SqlSessionFactoryBean에는 필수 속성 dataSource가 있으며 공통 속성 configLocation도 있습니다(mybatis의 xml 구성 파일 경로를 지정하는 데 사용됨).
(1) 스프링 구성 파일:
<!-- SqlSessionFactory 생성 및 데이터 소스 지정 -->
<bean id="sqlSessionFactory">
<속성 이름="데이터소스" ref="데이터소스" />
<!-- sqlMapConfig 전체 구성 파일을 지정하면 사용자 정의된 환경이 더 이상 스프링 컨테이너에 적용되지 않습니다. -->
<속성 이름="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--엔티티 클래스 매핑 파일을 지정하면 특정 패키지와 하위 패키지 아래의 모든 구성 파일을 동시에 지정할 수 있습니다. 엔터티 클래스에 대한 별칭을 지정해야 하는 경우에는 mapperLocations 및 configLocation 하나만 필요합니다. , 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 리소스="com/xxt/ibatis/ dbcp/domain/user.map.xml" /> </mappers> </configuration>
(3) 엔터티 클래스 매핑 파일 user.map.xml:
<mapper 네임스페이스="com.xxt.ibatis.dbcp.domain.User"> <resultMap type="User" id="userMap"> <id property="id" column="id" /> <result property=" name" 컬럼="이름" /> <result property="password" 컬럼="password" /> <result property="createTime" 컬럼="createtime" /> </resultMap> <select id="getUser" parameterType="User" resultMap="userMap"> select * id = #{id}인 사용자에서 </select> <mapper/>(4) dao 레이어 인터페이스 구현 클래스 UserDaoImpl:
자바 코드
공개 클래스 UserDaoImpl은 UserDao를 구현합니다. { 공개 SqlSessionTemplate sqlSession; 공개 사용자 getUserById(사용자 사용자) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user); SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession } }3. SqlSession을 제공하기 위해 추상 클래스 org.mybatis.spring.support.SqlSessionDaoSupport를 사용하십시오.
(1) 스프링 구성 파일:
자바 코드
<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"> <!--SqlSessionTemplate 인스턴스 삽입--> <속성 이름= "sqlSessionTemplate" ref="sqlSession" /> <!--SqlSessionFactory 인스턴스를 직접 삽입할 수도 있습니다. 둘 다 지정하면 SqlSessionFactory가 유효하지 않게 됩니다.--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) dao 레이어 인터페이스 구현 클래스 UserDaoImpl3:
자바 코드
공용 클래스 UserDaoImpl3은 SqlSessionDaoSupport를 구현하여 UserDao를 구현합니다. { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);