MyBatis 如何集成到 Spring 框架中

Posted

技术标签:

【中文标题】MyBatis 如何集成到 Spring 框架中【英文标题】:How MyBatis intergrated into Spring Framework 【发布时间】:2022-01-16 14:50:44 【问题描述】:

网络上的每一位真诚的人,我是这个网站的新手,渴望你的帮助!昨天刚刚通过Annotation方式配置bean,将MyBatis集成到Spring Boot中。

这是我的代码:

@Configuration
public class MyBatisBuild 

    @Bean
    public SqlSessionFactory createSqlSessionFactory() throws IOException 
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        InputStream inputStream = Resources.getResourceAsStream("MyBatis.config.xml");
        return sqlSessionFactoryBuilder.build(inputStream);
    

相对控制人:

@RestController
public class DiaryController 

    private DiaryService diaryService;

    @GetMapping("/diary/all")
    public List<Diary> getAll() 
        return diaryService.getAll();
    

    @Autowired
    public void setDiaryService(DiaryService diaryService) 
        this.diaryService = diaryService;
    

注入的服务:

@Service
public class DiaryService 

    private final SqlSessionFactory sqlSessionFactory;

    public DiaryService(@Autowired SqlSessionFactory sqlSessionFactory) 
        this.sqlSessionFactory = sqlSessionFactory;
    

    public List<Diary> getAll() 
        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_UNCOMMITTED);
        List<Diary> list = sqlSession.selectList("com.qlintonger.xxlint.dao.DiaryDao.getAllDiaries");
        sqlSession.close();
        return list;
    

请求流并发测试结果:

My-Own Concurrency Test result

为了比较,官方把 MyBatis-Spring 集成并发结果证明每个 Model、Mapper、Service 和 Controller 设置都是一样的:

MyBatis-Spring Concurrency Test result

如您所见,两者之间几乎不存在 600 多个并发请求。请问我的执行是否不准确?这是关于我没有融入 Spring Beans 生命周期的问题吗?提前致谢!

【问题讨论】:

欢迎来到 Stack Overflow!这里的某些问题更有可能得到有用的答案。将代码共享为图像而不是代码块的问题通常表明您还没有阅读How to Ask,人们经常跳过它们。因此,按照指示分享您的代码。如果您在尝试期间遇到特定的技术问题,我们可以提供帮助,我们希望 - 这就是我们在这里的部分原因。如果你真的有野心,请阅读tour。 【参考方案1】:

为什么不使用 mybatis-spring-boot-starter

<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>2.2.0</version>
</dependency>

【讨论】:

以上是关于MyBatis 如何集成到 Spring 框架中的主要内容,如果未能解决你的问题,请参考以下文章

持久化框架SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载

SpringSpring集成MyBatis

spring boot学习 ---- spring boot 集成 mybatis

推荐学java——Spring集成MyBatis

Mybatis集成到spring boot

spring和mybatis集成,自动生成modelmapper,增加mybatis分页功能