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项目+源码下载