spring :整合mybatis

需要的jar

除了普通spring项目需要的jar、mybatis需要的jar;还需要一个mybatis-spring.jar

在applicationContext.xml中配置数据库信息

mybatis操作数据库,对应于数据访问层。spring整合mybatis就是将dao层用mybatis处理。以往的mybatis项目中中通过mybatis的config.xml文件加载数据库信息获得SQLSessionFactory对象。现在通过spring整合mybatis就需要将其加入到spring容器中。所以我们可以将数据库配置信息加入到spring应用上下文配置文件中

<!-- 加载db.properties文件 -->
	<bean id="dbProperties" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
		<property name="locations">
			<array>
				<value>classpath:db.properties</value>
			</array>
		</property>
	</bean>
<!-- 配置数据库信息 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${driver}"/>
		<property name="jdbcUrl" value="${url}"/>
		<property name="user" value="${username}"/>
		<property name="password" value="${password}"/>
	</bean>

将SQLSessionFactory添加到spring容器中

在mybatis中通过加载config.xml文件获得SQLSessionFactory对象,进而获得session对象,最后通过session获得mapper对象。SQLSessionFactory作为mybatis的核心,需要将其加入到spring容器中。
方法是使用SqlSessionFactoryBean。若在config.xml中配置了mapper映射则可以通过配置configLocation属性加载,否则则需要通过mapperLocations指定mapper文件的位置。

<!-- 在spring IOC容器中创建Mybatis的核心类 SQLSessionFactory  SqlSessionFactoryBean在mybatis-spring.jar中-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<!-- 加载mybatis配置文件
		<property name="configLocation" value="classpath:conf.xml"></property>
		 -->
		<property name="mapperLocations" value="com/yang/mapper/*.xml"></property>
	</bean>

将mapper添加到容器中,并将其注入到service对象中

生成mapper的方式有多种,可以通过让dao的实现类继承SqlSessionDaoSupport实现然后将dao的实现类加入spring容器中,需要注意的是,dao需要SQLSessionFactory,需要将其注入到dao实现类中<property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 属性sqlSessionFactory就继承自父类SqlSessionDaoSupport

还可以通过MapperFactoryBean实现。使用MapperFactoryBean时和mybatis最为相似,可以省略dao的实现类。

	<bean id="personMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<!-- 指定接口和sqlSessionFactory  -->
		<property name="mapperInterface" value="com.yang.mapper.PersonMapper"></property>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>
	<bean id="personService" class="com.yang.service.impl.PersonServiceImpl">
		<property name="personMapper" ref="personMapper"></property>
	</bean>

也可以通过MapperScannerConfigurer批量的将mapper加入到容器中,但是要遵循约定:id值为首字母小写的接口名

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<!--  value可指定多个包 -->
		<property name="basePackage" value="com.yang.mapper"></property>
	</bean>

测试

public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		PersonServiceImpl personService = context.getBean(PersonServiceImpl.class);
		Person person = new Person(1,"罗志祥",40,"male");
		boolean result = personService.addPerson(person);
		System.out.println(result);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值