1. 程式人生 > 其它 >Spring和mybaits的整合

Spring和mybaits的整合

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&amp;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); } }

  測試結果如下:

  

  注意前三步的邏輯: