小代学Spring Boot之集成MyBatis

想要获取更多文章能够访问个人博客 - 代码无止境html

上一篇小代同窗在Spring Boot项目中配置了数据源,可是一般来说咱们访问数据库都会经过一个ORM框架,不多会直接使用JDBC来执行数据库操做的。这么多ORM框架,选择哪一个好呢?java

小代选ORM框架

小代同窗最终选用的ORM框架是MyBatis,他选择MyBatis的缘由主要有如下几点:git

  1. 能够简化咱们操做数据库的步骤。
  2. 相对来讲学习成本较低,Hibernate还须要学习其HQL查询规范。
  3. 使用相对普遍。

集成MyBatis

如何集成MyBatis呢?其实很简单,在咱们上一篇文章《小代学Spring Boot之数据源》的基础之上,咱们只须要在pom.xml文件中加入如下内容便可。github

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

配置MyBatis

集成MyBatis以后咱们还须要相关配置才可以使用它。首先咱们须要配置回话工厂和事务管理器,在DruidDatasourceConfig.java类中添加以下内容便可:spring

@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上加了这个注解:sql

@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了。下面就一块儿来测试一下看下效果吧。session

测试

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

public interface UserMapper {
    User selectById(@Param("id") Integer id);
}

3.新建UserMapper.xml文件,而且实现selectById,以下所示:app

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.itweknow.sbdatasource.mapper.UserMapper">
  <resultMap id="BaseResultMap" type="cn.itweknow.sbdatasource.dao.User">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
  </resultMap>

  <select id="selectById" resultMap="BaseResultMap">
    select * from t_user where id = #{id}
  </select>
</mapper>

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'}

PS:学习不止,码不停蹄!若是您喜欢个人文章,就关注我吧!

扫码关注“代码无止境”
相关文章
相关标签/搜索