博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合
阅读量:6713 次
发布时间:2019-06-25

本文共 3480 字,大约阅读时间需要 11 分钟。

转载请注明出处: 

前面讲到:

1.整合思路

需要Spring通过单例方式管理SqlSessionFactory。

Spring和MyBatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(Spring和MyBatis整合自动完成)

持久层的mapper都需要由Spring进行管理。

2.整合环境

创建一个java工程(接近实际开发的工程结构)

jar包:

mybatis3.2.7的jar包

spring3.2.0的jar包

dbcp连接池

数据库驱动

mybatis和spring的整合包:早期ibatis和spring整合是由spring官方提供,mybatis和spring整合由mybatis提供。

3.spring配置文件

在applicationContext.xml配置sqlSessionFactory和数据源。SqlSessionFactory在mybatis和spring的整合包下。

4.Mapper编写的三种方法

4.1原始dao开发(和spring整合后)

4.1.1User.xml

在SqlMapConfig.xml中加载User.xml

4.1.2 dao(实现类继承SqlSessionDaoSupport)

public interface UserDao {    //根据id查询用户信息    public User findUserById(int id) throws Exception;}

dao接口实现类需要注入SqlSessionFactory,通过spring进行注入。

这里用spring声明配置方式,配置dao的bean:让UserDaoImpl实现类继承SqlSessionDaoSupport。

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{    @Override    public User findUserById(int id) throws Exception {        //继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSession        SqlSession sqlSession=this.getSqlSession();        User user=sqlSession.selectOne("test.findUserById", id);        return user;    }}

4.1.3配置dao

在applicationContext.xml中配置dao。

4.1.4测试程序

public class UserDaoImplTest {    private ApplicationContext applicationContext;        @Before    public void setUp(){        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");    }        @Test    public void findUsetByIdTest() throws Exception{        UserDao userDao=(UserDao) applicationContext.getBean("userDao");        User user=userDao.findUserById(1);        System.out.println(user);    }}

4.2mapper代理开发

4.2.1mapper.xml和mapper.java

public interface UserMapper {    public User findUserById(int id) throws Exception;}

4.2.2通过MapperFactoryBean创建代理对象

在applicationContext.xml中配置mapper。

4.2.3测试程序

public class UserMapperTest {    private ApplicationContext applicationContext;        @Before    public void setUp(){        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");    }        @Test    public void findUsetByIdTest() throws Exception{        UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");        User user=userMapper.findUserById(1);        System.out.println(user);    }}

此方法的问题:需要针对每个mapper进行配置,麻烦。

4.3通过MapperScannerConfigurer进行mapper扫描(建议使用)

在applicationContext.xml中配置mapper批量扫描。

此时,SqlMapConfig.xml中批量加载joanna.yan.mapper下mapper的配置就可以省略掉了。

测试程序:

@Test    public void findUsetByIdTest() throws Exception{        UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");        User user=userMapper.findUserById(1);        System.out.println(user);    }

如果此文对您有帮助,微信打赏我一下吧~ 

转载于:https://www.cnblogs.com/Joanna-Yan/p/6964162.html

你可能感兴趣的文章
心痛的感觉
查看>>
class - function ES6类的方法的两种定义方式及调用方式
查看>>
flex容器主轴上的部分元素单独设置位置
查看>>
window10安装Ubuntu虚拟机踩坑系列
查看>>
JavaScript倒计时
查看>>
ArrayList源码分析
查看>>
golang后端库gin笔记
查看>>
数据如何埋点?Mob统计分析电商类APP埋点需求
查看>>
图片 文件 转base64
查看>>
Vuex源码学习(四)module与moduleCollection
查看>>
python基础总结 Part.1
查看>>
【OC梳理】description
查看>>
一篇不太一样的RxJava介绍(二):关于操作符背后的故事
查看>>
FFmpeg模块介绍
查看>>
张家口a货翡翠,梧州a货翡翠
查看>>
JS Object的静态方法汇总( 上 )
查看>>
java B2B2C Springcloud多租户电子商城系统-Eureka服务端与客户端常用配置
查看>>
jvm疯狂吞占内存,罪魁祸首是谁?
查看>>
表格存储Tablestore权威指南(持续更新)
查看>>
java B2B2C源码电子商城系统-Kafka快速入门
查看>>