spring整合mybatis


spring框架的核心是控制反轉和依賴注入,在使用mybatis時,我們可以回想一下,我們使用mybatis的步驟

1.創建配置文件,進行數據源配置(上一篇寫了spring的數據源,同樣都是數據源,那么能不能使用spring的數據源注入到mybatis中呢)

2.使用SqlSessionFactoryBuilder來加載配置文件,獲取SqlSessionFacotory,

(也就是創建SqlSessionFacory,那么我們可以想一下能不能使用spring來創建呢)

3.獲取sqlSession對象(獲取這個對象是為了通過getMapper獲取dao對象,在spring種我們使用自動裝配來注入dao對象,那么我們能讓spring來管理這個對象的創建呢?如果我們自己創建還需要進行事務提交以及關閉SqlSession)

4關閉SqlSession

下面我們就來學習如何使用spring來整合mybatis,

mybatis中提供了一個mybatis-spring.jar來幫助整合,首先導入jar包

然后就可以在spring的配置文件中配置mybatis了

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--加載配置文件-->
    <context:property-placeholder location="jdbc.properties"/>

    <!--配置數據源,這里只進行一個簡單的配置-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--為mybatis的sqlSessionFactory注入數據源-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--注入數據源后,sqlSessionFactory就可以創建sqlSession對象了,然后我們需要配置mapper文件的位置-->
        <property name="mapperLocations" value="classpath:com/zs/dao/mapper/*.xml"/>
    </bean>

    <!--上面配置了mapper文件的位置,我們之前創建dao對象時,使用sqlSession的getMapper(dao.class)來創建對象
    那么使用spring來創建對象,spring如何找到dao接口的位置呢?-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zs.dao"/>
    </bean>
    
</beans>

創建一個實體類

package com.zs.entity;

public class User {
    private int uid;
    private String username;
    private String password;

    public User() {
    }

    public User(int uid, String username, String password) {
        this.uid = uid;
        this.username = username;
        this.password = password;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
View Code

創建dao層接口:

配置上面文件后可以發現這里dao接口前有一個spring管理的標識

mapper文件:

進行測試:

@ContextConfiguration(locations = {"classpath:spring-config.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class SqlTest {

    @Autowired
    private IUserDao userDao;
    @Test
    public void fun1() {
        List<User> users = userDao.allUsers();
        System.out.println(users);
    }
}

項目目錄如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM