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

本文共 3391 字,大约阅读时间需要 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);    }

 

转载地址:http://joaxx.baihongyu.com/

你可能感兴趣的文章
Hyper-V用差异磁盘克隆系统
查看>>
CentOS4.4平台下安装EXTMAIL手记V1.3
查看>>
“稿费+股权”能打造亿万富翁作家?
查看>>
Windows XP客户端加域操作手册下
查看>>
开发分布式网络监控分析之前端ajax展现那些事
查看>>
关于权限的数据库设计
查看>>
3COM SS3 4400系列交换机VLAN功能设置
查看>>
linux安全问答(1)
查看>>
装了flash player却打不开swf ?
查看>>
VS2008中文版MSDN订阅下载问题
查看>>
Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序
查看>>
Android Ap 开发 设计模式第四篇:工厂方法模式
查看>>
Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
查看>>
权威媒体、专家对新书的推荐
查看>>
门槛低的行业看天赋,门槛高的行业看毅力
查看>>
11_HTML5_Local_Storage本地存储
查看>>
UBoot常用命令手册
查看>>
全过程项目结构总结
查看>>
cas单点注销失败Error Sending message to url endpoint
查看>>
使用SerialPort 对象实现串口拨号器通信[下]
查看>>