千家信息网

怎么把Mybatis整合到Spring中

发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,这篇文章给大家分享的是有关怎么把Mybatis整合到Spring中的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、基本介绍所谓的Spring整合Mybatis其实说白了就
千家信息网最后更新 2024年10月19日怎么把Mybatis整合到Spring中

这篇文章给大家分享的是有关怎么把Mybatis整合到Spring中的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、基本介绍

所谓的Spring整合Mybatis其实说白了就是将mybatis的加载过程全权交给Spring托管,不再需要加载配置工具等一些操作,而具体的dao层操作依旧是使用mybatis去操作数据库。

1.1 mybatis使用步骤:

1.首先要写一个mybatis-config.xml核心配置文件,配置基本的环境支持:数据源、驱动、url、username、password…

2.然后编写mybatisUtil工具类,先以IO流的形式加载mybatis-config.xml资源Resource,然后通过SqlSessionFactoryBuilder工厂建造者创建一个SqlSessionFactory工厂,并且将SqlSessionFactory工厂封装为单例工厂;最后对外只抛出一个SqlSession会话获取接口!

3.最后dao层通过SqlSession获取Mapper映射器进行SQL的执行!

1.2 Spring整合mybatis步骤:

首先将mybatis-config.xml环境的配置:数据源、驱动、url、username、password…这些基础配置移交给Spring的核心配置文件application.xml文件中!创建bean对象dataSource顶替Resource。

再通过dataSource对象,创建bean对象SqlSessionFactory,这时候SqlSessionFactory工厂就交给Spring托管了!(建议按照mybatis的习俗配置成单例)

然后将mybatis-config.xml配置文件中的Configration配置以依赖注入的形式注入到SqlSessionFactory,mybatis-config.xml中的所有东西就可以在Spring中生效了。

最后将SqlSession的获取也交给Spring托管,以构造器注入的形式将SqlSessionFactory工厂注入SqlSession的依赖中!

之后所有的dao层操作都通过getBean的形式获取SqlSession,然后在执行SQL;对比上面mybatis使用步骤,整合基本上就是将mybatis的加载全权交由Spring掌管,仅此而已。

二、mybatis核心配置

                                                                                                                

三、Spring核心配置

                                                                                                                                      

四、数据库与对应的POJO实体类


package com.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@AllArgsConstructor@NoArgsConstructor@Datapublic class User {    private int id;    private String username;    private String password;    }

五、dao层

5.1 UserMapper接口

package com.dao;import com.pojo.User;import java.util.List;public interface UserMapper {    public List getUserList();}

5.2 UserMapper.xml配置

                                               

5.3 接口实现类(一)

单独使用mybatis时是不需要这个实现类的,将impl实现类做的操作数据库事情移交到service层执行。而现在需要这个实现类,内部聚合SqlSessionTemplate对象(等价于SqlSession),然后在实现方法中通过反射获取mapper,然后执行SQL即可!

import com.pojo.User;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import java.util.List;@Repository("userMapperImpl")public class UserMapperImpl implements UserMapper{    @Autowired    private SqlSessionTemplate sqlSession;    @Override    public List getUserList() {        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        List list = mapper.getUserList();        return list;    }}

5.4 接口实现类(二)

在Spring - Mybatis最新的整合中提供了SqlSessionDaoSupport抽象类来取代内部聚合SqlSessionTemplate对象,只需要继承这个类即可。虽然明面上不需要依赖注入,但是父类是需要依赖注入一个SqlSessionFactory工厂的!

import com.pojo.User;import org.apache.ibatis.session.SqlSession;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{    @Override    public List getUserList() {        SqlSession sqlSession = getSqlSession();        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        List list = mapper.getUserList();        return list;    }}
            

六、测试

@Testpublic void test1(){    ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");    UserMapper userMapperImpl = context.getBean("userMapperImpl", UserMapper.class);    List list = userMapperImpl.getUserList();    for (User user : list) {        System.out.println(user.toString());    }}

感谢各位的阅读!关于"怎么把Mybatis整合到Spring中"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0