天天看點

如何整合Spring和Mybatis的思路分析(使用面向接口的mapper代理,不用再去寫Dao的實作類)#

使用mapper代理的方式去整合spring和mybatis的思路

1.需要先配置Mybatis的全局配置檔案(在此之前需要先把工程結構搭建好)

2.需要配置spring的全局配置檔案

3.然後配置mybatis的mapper的SQL映射配置檔案,并把這個xml檔案路徑加載到Mybatis的全局配置檔案中

4.建立對應資料庫的實體類bean

5.這裡是直接建立一個UserMapper的接口(因為沒有了接口的實作類,是以現在需要去建立一個專門實作UserMapper中接口的功能,也就是映射SQL)

6.然後這裡使用的是mapper代理的方式,是以在用的時候需要先從spring中得到一個UserMapper對象,再通過這個UserMapper對象去調用映射SQL語句的功能id

7.最後是使用Junit測試(使用的時候需要先建構屬性applicationContext來把spring的全局配置檔案加載進來用ClassPathXmlApplicationContext方法)

這裡的前四步和上一篇的步驟都是一樣的,隻是多建了一個mapper的包,來代替之前的那個dao的包,連結如下:

https://blog.csdn.net/qq_36520235/article/details/79691417

5. 這裡是直接建立一個UserMapper的接口(因為沒有了接口的實作類,是以現在需要去建立一個專門實作UserMapper中接口的功能,也就是映射SQL)

package cn.itcast.ssm.mapper;

import cn.itcast.ssm.po.User;

public interface UserMapper {

    //用mapper實作代理的目的就是最直接的就是可以不用寫之前的那種UserDao那樣的時間接口的方法

    //根據id查詢使用者資訊
    public User findUserById(int id) throws Exception;


}
           

6.然後這裡使用的是mapper代理的方式,是以在用的時候需要先從spring中得到一個UserMapper對象,再通過這個UserMapper對象去調用映射SQL語句的功能id

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace命名空間,作用就是對sql進行分類化管理,了解sql隔離 
注意:使用mapper代理方法開發,namespace有特殊重要的作用
-->
<mapper namespace="cn.itcast.ssm.mapper.UserMapper">

    <!-- 在 映射檔案中配置很多sql語句 -->
    <!-- 需求:通過id查詢使用者表的記錄 -->
    <select id="findUserById" resultType="user" parameterType="int">
        SELECT * FROM user WHERE id =#{id}
    </select>


</mapper>

           

7.最後是使用Junit測試(使用的時候需要先建構屬性applicationContext來把spring的全局配置檔案加載進來用ClassPathXmlApplicationContext方法)

#

package test;

import cn.itcast.ssm.mapper.UserMapper;
import cn.itcast.ssm.po.User;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserMapperTest {

    private ApplicationContext applicationContext;
    @Before
    public void setUp() throws Exception {

        //這裡是使用mapper代理的方式的測試類,因為你需要把你的bean都交給spring來去管理,是以你需要得到spring的容器,也就是需要得到spring的全局配置檔案
        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }

    @Test
    public void findUserById() throws Exception {
        //因為使用的是mapper代理的方式,是以也需要把要實作的UserMapper對象(裡面是要實作功能接口)從spring容器中得到
        UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
        User user = userMapper.findUserById();
        System.out.println(user.toString());

    }
}