學Spring Boot之集成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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章