1. 程式人生 > >使用MyBatis-Spring-Boot-Starter快速整合mybatis

使用MyBatis-Spring-Boot-Starter快速整合mybatis

MyBatis-Spring-Boot-Starter是什麼?

The MyBatis-Spring-Boot-Starter help you build quickly MyBatis applications on top of the Spring Boot.

MyBatis-Spring-Boot-Starter可以幫助你快速建立基於Spring Boot的MyBatis應用程式。

使用MyBatis-Spring-Boot-Starter可以達到什麼效果?

  • 構建獨立的MyBatis應用程式
  • 零模板
  • 更少的XML配置檔案

引入MyBatis-Spring-Boot-Starter

模組之後,其可以:

  • 自動檢測DataSource
  • 使用SqlSessionFactoryBean註冊SqlSessionFactory 例項,並設定DataSource資料來源
  • 基於SqlSessionFactory自動註冊SqlSessionTemplate例項
  • 自動掃描@Mapper註解類,並通過SqlSessionTemplate註冊到Spring Context中

其實,簡單來講,MyBatis-Spring-Boot-Starter就是參照Spring Boot的設計思想,化繁為簡,以簡單註解的方式讓使用者快速上手。

首先,我們引入依賴:

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

配置資料來源

spring:
  application:
    name: spring-mybatis
  datasource:
    driver-class-name: com
.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: "jdbc:mysql://192.168.43.61:3306/cib" username: icbc password: icbc

MyBatis的配置,主要是開啟資料庫中的欄位名與實體物件屬性的駝峰轉換

mybatis:
  configuration:
    map-underscore-to-camel-case: true
    default-statement-timeout: 30
    default-fetch-size: 100

定義一個簡單的Mapper類,包含增、改、查操作,這裡我們沒有使用@Mapper註解,而是通過在應用程式啟動時通過@MapperScann註解指定掃描目錄,這樣避免了每一個Mapper類都要增加@Mapper註解的繁瑣。

@Service
public interface UserMapper {
    @Select("select * from cib_user where id = #{id}")
    /**
     * 或者使用Results來對映
     @Results(
     {
     @Result(property = "createTime", column = "create_time"),
     @Result(property = "userName", column = "user_name")
     }
     )
     */
    User findUserById(@Param("id") int id);

    @Select("select * from cib_user")
    List<User> findAllUsers();

    @Insert("insert into cib_user (user_name,create_time) values(#{userName},#{createTime})")
    void addUser(User user);

    @Update("update cib_user set user_name=#{userName},create_time=#{createTime} where id = #{id}")
    void updateUser(User user);
}

啟動我們的應用程式

@SpringBootApplication
@MapperScan("cn.cib.service")
public class SpringMyBatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringMyBatisApplication.class, args);
    }
}