学Spring Boot之集成MyBatis

简介: 学Spring Boot之集成MyBatis通常来讲我们访问数据库都会通过一个ORM框架,很少会直接使用JDBC来执行数据库操作的。这么多ORM框架,选择哪个好呢?小代选ORM框架小代同学最终选用的ORM框架是MyBatis,他选择MyBatis的原因主要有以下几点:可以简化我们操作数据库的步骤。

学Spring Boot之集成MyBatis
通常来讲我们访问数据库都会通过一个ORM框架,很少会直接使用JDBC来执行数据库操作的。这么多ORM框架,选择哪个好呢?

小代选ORM框架
小代同学最终选用的ORM框架是MyBatis,他选择MyBatis的原因主要有以下几点:

可以简化我们操作数据库的步骤。
相对来说学习成本较低,Hibernate还需要学习其HQL查询规范。
使用相对广泛。
集成MyBatis
如何集成MyBatis呢?其实很简单,在我们上一篇文章《小代学Spring Boot之数据源》的基础之上,我们只需要在pom.xml文件中加入以下内容即可。

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


配置MyBatis
集成MyBatis之后我们还需要相关配置才能够使用它。首先我们需要配置回话工厂和事务管理器,在DruidDatasourceConfig.java类中添加如下内容即可:

@Bean(name = "transactionManager")
public DataSourceTransactionManager transactionManager(

        @Qualifier("dataSource") DataSource dataSource) {

return new DataSourceTransactionManager(dataSource);
}

@Bean(name = "sqlSessionFactory")
@ConditionalOnMissingBean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
然后我们还需要配置Mapper.java文件和Mapper.xml文件的地址好让Spring知道在那里扫描我们的Mapper文件。Mapper.java文件地址,我们可以通过@MapperScan注解来指定。如下所示,我们在DruidDataSourceConfiguration上加了这个注解:

@MapperScan(value = { "cn.itweknow.sbdatasource.mapper" }, sqlSessionFactoryRef = "sqlSessionFactory")
而Mapper.xml文件的地址则需要在初始化会话工厂的过程中指定,如下所示,我们在sqlSessionFactory方法中增加了一些内容:

@Bean(name = "sqlSessionFactory")
@ConditionalOnMissingBean(name = "sqlSessionFactory")
public SqlSessionFactorysqlSessionFactory(@Qualifier("druidDataSource") DruidDataSource druidDataSource) throws Exception {

final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(druidDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources("classpath:sqlmap/*Mapper.xml"));
return sessionFactory.getObject();

}
就这样,我们的Spring Boot项目已经成功的集成了MyBatis了。下面就一起来测试一下看下效果吧。

测试
1.新建一个名为spring_toturial的数据库,并且新建一张t_user表以及其对应的实体类,具体的数据库结构脚本和实体类可以点击这里获取。
2.新建UserMapper.java接口文件,并且定义一个名为selectById接口,如下所示:

public interface UserMapper {

User selectById(@Param("id") Integer id);

}
3.新建UserMapper.xml文件,并且实现selectById,如下所示:

<?xml version="1.0" encoding="UTF-8"?>


<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />

select * from t_user where id = #{id}



4.新建selectById的Junit测试用例,如下代码所示:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {SbDatasourceApplication.class})
public class UserMapperTest {

@Autowired
private UserMapper userMapper;

@Test
public void testSelectById() {
    User user = userMapper.selectById(1);
    System.out.println(user);
}

}
5.执行Junit方法如果控制台能够输出如下结果,那就恭喜你成功集成MyBatis了。

User{id=1, name='abc'}
原文地址https://www.cnblogs.com/endless-code/p/11211077.html

相关文章
|
21天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
38 0
|
29天前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
10 0
|
29天前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
28天前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
35 1
|
2天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
24 0
【Spring系列】Sping VS Sping Boot区别与联系
|
22天前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
53 0
|
29天前
|
Java Windows Perl
mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
8 0
|
29天前
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
12 0
|
29天前
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
8 0
|
29天前
ssm(Spring+Spring mvc+mybatis)实体类——Dept
ssm(Spring+Spring mvc+mybatis)实体类——Dept
11 0

热门文章

最新文章