使用MyBatis-Spring-Boot-Starter快速整合mybatis
阿新 • • 發佈:2019-02-16
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);
}
}