1. 程式人生 > 其它 >Spring全解-08-整合Mybatis

Spring全解-08-整合Mybatis

整合Mybatis

pom.xml裡匯入相關jar包,新增靜態資源過濾

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
</dependency>
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId
> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.springframework</
groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.10.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version> </dependency> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>

要和Spring一起使用Mybatis,需要在Spring應用上下文中定義至少兩樣東西:

1.SqlSessionFactory

2.資料對映器類

在Spring中使用SqlSessionFactoryBean來建立SqlSessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />
</bean>

SqlSessionFactory需要一個DataSource(資料來源),這可以是任意的,只需要和配置其它Spring資料庫連線一樣配置它就可以了。

在之前的Mybatis中,是通過SqlSessionFactoryBuild來建立SqlSessionFactory的,但是在Spring中是使用SqlSessionFactoryBean來建立的。

在Mybatis中,你可以使用SqlSeseionFactory來建立SqlSession。一旦以獲得一個session後,你可以使用它來執行映射了的語句,提交或者回滾,最後不需要的時候,關閉資源。

SqlSessionFactory有一個唯一的必要屬性,那就是用於JDBC的DataSource。這可以是任意的DataSource物件,它的配置方法和其他Spring資料庫是一樣的。

一個常用的屬性是configLocation,它用來指定Mybatis的xml配置檔案路徑。

SqlSessionTemplate是Mybatis-Spring的核心。作為SqlSession的一個實現,這意味著可以使用它無縫代替程式碼中已經在使用的SqlSession。

可以使用 SqlSessionFactory 作為構造方法的引數來建立 SqlSessionTemplate 物件。使用構造器方式進行注入。

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
 <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

現在,這個 bean 就可以直接注入到你的 DAO bean 中了。你需要在你的 bean 中新增一個 SqlSession 屬性,就像下面這樣:

public class UserDaoImpl implements UserDao {

 private SqlSession sqlSession;

 public void setSqlSession(SqlSession sqlSession) {
   this.sqlSession = sqlSession;
}

 public User getUser(String userId) {
   return sqlSession.getMapper...;
}
}

按下面這樣,注入 SqlSessionTemplate:

<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl">
 <property name="sqlSession" ref="sqlSession" />
</bean>