>  기사  >  Java  >  Java 개발에서 SSM 통합을 위한 Spring+mabatis

Java 개발에서 SSM 통합을 위한 Spring+mabatis

无忌哥哥
无忌哥哥원래의
2018-07-23 10:35:281736검색

Spring과 mybatis 통합

통합 아이디어
Spring은 싱글톤을 통해 SqlSessionFactory를 관리해야 합니다.
Spring과 myatis 통합은 프록시 개체를 생성하고 SqlSessionFactory를 사용하여 SqlSession을 생성합니다. (Spring과 mybatis의 통합은 자동으로 완료됩니다.)
Persistence 레이어의 Mapper와 dao는 관리를 위해 Spring이 필요합니다.
환경 통합 및 새로운 Java 프로젝트 생성(실제 개발 프로젝트 구조와 유사)
jar 패키지:
mybatis3.2.7 jar 패키지
spring 4.3.9 jar 패키지
mybatis 및 spring 통합 패키지: 초기 ibatis 및 spring 통합 공식 제공 봄에는 mybatis와 spring 통합이 mybatis에 의해 제공됩니다.

sqlSessionFactory

applicationContext.xml에서 sqlSessionFactory 구성

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
	
	<!-- 加载配置文件 -->
	<context:property-placeholder location="classpath:db.properties" />
	
	<!-- 数据源,使用dbcp -->        
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"   destroy-method="close">
		<property name="driverClassName" value="${jdbc.driver}"/>
		<property name="url" value="${jdbc.url}"/><!-- jdbc:mysql://localhost:3306/test?characterEncoding=utf8 -->
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
		<property name="maxActive" value="10"/>
		<property name="maxIdle" value="5"/>
	</bean>

	<!-- sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 加载mybatis的配置文件 -->

		<property name="configLocation" value="mybatis/SqlMapConfig.xml"/>
		<!-- 数据源 -->
		<property name="dataSource" ref="dataSource"></property>
		
	</bean>
	<!-- 原始dao接口 -->
 	<bean id="userDao" class="cn.itcast.ssm.dao.UserDaoImpl">
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean> 

</beans>

원래 dao 개발(spring과 통합 후)

mapper.xml

 <!-- 加载映射文件 -->
 <mappers>
 <mapper resource="sqlmap/User.xml"/>

dao

public interface UserDao {

	//根据id查询用户信息
	public User findUserById(int id)throws Exception;	

dao 인터페이스 구현 클래스는 spring Inject를 통해 SqlsessionFactory를 주입해야 합니다.

여기서 spring은 구성 방법을 선언하고 dao bean을 구성합니다.

UserDaoImpl 구현 클래스가 SqlSessionDaoSupport 클래스를 상속받도록 하세요

	public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{

        @Override
	public User findUserById(int id) throws Exception {
		//继承SqlSessionDaoSupport ,通过this.getSqlSession()得到sqlSession
		SqlSession sqlSession = this.getSqlSession();
		User user = sqlSession.selectOne("test.findUserById", id);
		//释放资源
		//sqlSession.close();
		return user;
	}
        }

dao를 구성하세요

applicationContext.xml에서 dao를 구성하세요.

	<!-- 原始dao接口 -->
 	<bean id="userDao" class="cn.itcast.ssm.dao.UserDaoImpl">
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>

테스트 실행

public class UserDaoImplTest {
	
	private ApplicationContext applicationContext;
	//在setUp这个方法中得到spring容器
	@Before
	public void setUp()throws Exception{
		applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
		
	}
	
	@Test
	public void testFindUserById() throws Exception {
		UserDao userDao=(UserDao) applicationContext.getBean("userDao");
//		//调用userDao的方法
		User user=userDao.findUserById(1);
		System.out.println(user);
	}

위 내용은 Java 개발에서 SSM 통합을 위한 Spring+mabatis의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.