MyBatis學習之IOC和註解編寫*ServiceImpl

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>

來完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章