MyBatis学习之IOC和注解编写*ServiceImpl

本文介绍了如何在MyBatis中结合Spring进行配置,包括设置DataSource数据源,SqlSessionFactory,以及使用MapperScannerConfigurer扫描Mapper接口,简化了代码,实现了IOC的自动化管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring配置

1、配置DataSource数据源代理对象

 <bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource">
	<property name="driver" value="com.mysql.jdbc.Driver" />
	<property name="url" value="jdbc:mysql://localhost:3306/skeyeoa" />
	<property name="username" value="root" />
	<property name="password" value="root" />
</bean>


2、配置SqlSessionFactory代理对象

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	//注入数据源dataSource
	<property name="dataSource" ref="dataSource"></property>
	//注入数据源dataSource
	<property name="mapperLocations" value="classpath:com/ssm/wgs/dao/*Mapper.xml"></property>
	//注入数据源dataSource
       	<property name="typeAliasesPackage" value="com.ssm.wgs.entity" />
</bean>

在定义SqlSessionFactoryBean的时候,dataSource属性是必须指定的,它表示用于连接数据库的数据源。当然,我们也可以指定一些其他的属性,下面简单列举几个:
  mapperLocations:它表示我们的Mapper文件存放的位置,当我们的Mapper文件跟对应的Mapper接口处于同一位置的时候可以不用指定该属性的值。
configLocation:用于指定Mybatis的配置文件位置。如果指定了该属性,那么会以该配置文件的内容作为配置信息构建对应的SqlSessionFactoryBuilder,但是后续属性指定的内容会覆盖该配置文件里面指定的对应内容。
  typeAliasesPackage:它一般对应我们的实体类所在的包,这个时候会自动取对应包中不包括包名的简单类名作为包括包名的别名。多个package之间可以用逗号或者分号等来进行分隔。(value的值一定要是包的全名)
  typeAliases:数组类型,用来指定别名的。指定了这个属性后,Mybatis会把这个类型的短名称作为这个类型的别名,前提是该类上没有标注@Alias注解,否则将使用该注解对应的值作为此种类型的别名。(value的值一定要是类的完全限定名)

3、配置MapperScannerConfigurer代理对象

它将会找类路径下的映射器并自动将它们创建成MapperFactoryBean(Mapper接口代理对象)

<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	<property name="basePackage" value="com.ssm.wgs.dao" ></property>
</bean>
<property name="sqlSessionFactoryName" value="sqlSessionFactory"/>会根据value的值找到SqlSessionFactory代理对象并注入

basePackage 属性是让你为映射器接口文件设置基本的包路径

JAVA代码

原:

public class RightServiceImpl implements RightService {
	private RightsMapper mapper;
	@Autowired //自动注入注解
	SqlSessionFactory sqlSessionFactory = null;

	public List<Rights> getAllRights() {
		SqlSession session = sqlSessionFactory.openSession();
		mapper = session.getMapper(RightsMapper.class);
		List<Rights> rightList = mapper.selectByExample(null);
		session.close();
		return rightList;
	}
}

改:
public class RightServiceImpl implements RightService {
	@Autowired
	private RightsMapper mapper;

	public List<Rights> getAllRights() {
		List<Rights> rightList = mapper.selectByExample(null);
		return rightList;
	}
}

通过两段代码对比可以看出,第二段省略了很多代码:

其中省略的

SqlSession session = sqlSessionFactory.openSession();

mapper = session.getMapper(RightsMapper.class);

已经交给配置文件中

<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="sqlSessionFactoryName" value="sqlSessionFactory"></property>

<property name="basePackage" value="com.ssm.wgs.dao" ></property>

</bean>

来完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值