使用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());
}
}