Spring和mybaits的整合
阿新 • • 發佈:2021-11-28
1.導maven依賴
除了 mysql, spring-mvc mybaits 還需要匯入下面的mybaits-spring 和spring -jdbc依賴
注意spring-mvc的依賴跟spring-jdbc的版本要一致,不然報錯!
mybaits-spring的版本要求官方文件有說明
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.0.RELEASE</version> </dependency>
2.複習mybaits的相關
3.Spring和mybaits整合涉及到主要幾點
1.spring配置(applicationcontext.xml)來管理資料來源,不用mybaits的mybaits-config.xml中的environment來管理資料來源了,這個資料來源的配置要在sqlSessionFactory裡使用。
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybaits?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean>
2.sqlSessionFactory不再使用工具類來建立了。用spring配置將它裝在spring容器中。並且在這裡還可以關聯之前的mybaits的核心配置檔案
他的注入需要資料來源
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!--這裡是可以關聯mybaits-config.xml以及代替核心配置檔案去裝配Mapper.xml--> <property name="configLocation" value="classpath:mybaits-config.xml"/> <property name="mapperLocations" value="classpath:com/chen/dao/*.xml"/> </bean>
3.資料對映器類SqlSessionTemplate(模板)。這個bean會生成我們用的sqlsession。
他的注意需要sqlSessionFactory,沒有set方法,只能用構造器注入的方式注入
<bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate"> <!--看這個類的原始碼,沒有set方法,只能通過構造器來注入 注意這裡是ref--> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
4.給原來的mybaits介面編寫實現類,使用SqlSessionTemplate
實現類來通過sqlsession獲得mapper,mapper實現資料庫操作
注意使用註解的時候自動Autowired,不然彙報空指標異常
import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; @Component public class UserMapperImpl implements UserMapper{ private SqlSessionTemplate sqlSession; @Autowired public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public List getUser() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); List user = mapper.getUser(); return user; } }
5.將實現類註冊到spring容器中並測試使用
注意ref和value
<context:annotation-config/> <context:component-scan base-package="com.chen.dao"/> <import resource="mybaits-spring.xml"/>
<!--測試類註冊到容器中,注意ref--> <bean id="userMapperImpl" class="com.chen.dao.UserMapperImpl"> <property name="sqlSession" ref="sqlsession"/> </bean>
@Test public void mybaitspringTest(){
//測試程式碼!!!! ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper userMapperImpl = context.getBean("userMapperImpl", UserMapper.class); //代理介面.class List user = userMapperImpl.getUser(); for (Object o : user) { System.out.println(o); } }
測試結果如下:
注意前三步的邏輯: