如何整合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(1);
        System.out.println(user.toString());

    }
}

猜你喜欢

转载自blog.csdn.net/qq_36520235/article/details/79692297