小代學Spring Boot之集成MyBatis

想要獲取更多文章能夠訪問個人博客 - 代碼無止境php

上一篇小代同窗在Spring Boot項目中配置了數據源,可是一般來說咱們訪問數據庫都會經過一個ORM框架,不多會直接使用JDBC來執行數據庫操做的。這麼多ORM框架,選擇哪一個好呢?html

小代選ORM框架

小代同窗最終選用的ORM框架是MyBatis,他選擇MyBatis的緣由主要有如下幾點:java

  1. 能夠簡化咱們操做數據庫的步驟。
  2. 相對來講學習成本較低,Hibernate還須要學習其HQL查詢規範。
  3. 使用相對普遍。

集成MyBatis

如何集成MyBatis呢?其實很簡單,在咱們上一篇文章《小代學Spring Boot之數據源》的基礎之上,咱們只須要在pom.xml文件中加入如下內容便可。git

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
複製代碼

配置MyBatis

集成MyBatis以後咱們還須要相關配置纔可以使用它。首先咱們須要配置回話工廠和事務管理器,在DruidDatasourceConfig.java類中添加以下內容便可:github

@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上加了這個註解:spring

@MapperScan(value = { "cn.itweknow.sbdatasource.mapper" }, sqlSessionFactoryRef = "sqlSessionFactory")
複製代碼

Mapper.xml文件的地址則須要在初始化會話工廠的過程當中指定,以下所示,咱們在sqlSessionFactory方法中增長了一些內容:sql

@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接口,以下所示:bash

public interface UserMapper {
    User selectById(@Param("id") Integer id);
}
複製代碼

3.新建UserMapper.xml文件,而且實現selectById,以下所示:session

<?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:學習不止,碼不停蹄!若是您喜歡個人文章,就關注我吧!

掃碼關注「代碼無止境」
相關文章
相關標籤/搜索