springboot mybatis 整合

springboot for mybatis

首先說明一下,我很討厭使用jdbc的方式(雖然我之前也用過一段時間),等我使用mybatis之后我就徹底拋棄了把SQL寫在代碼這種做法了,還有我認為mybatis比較靈活可以有 if else choose 等更加靈活,同時代碼和SQL也完美的分開了,并沒有耦合在一起。

  • 使用mybatis需要的pom
<!-- mysql and druid -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.29</version>
</dependency>

<!-- mybatis springboot -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${mybatis.spring.boot.version}</version>
</dependency>
  • 配置mybatis相關(guān)的配置文件

這里肯定有人說我要打臉了不是時候,springboot就一個配置文件嗎?這。。。這里我要給自己洗白一下,只是說我們可以只用一個配置文件,如果我們想用其他的配置文件它當(dāng)然也是支持的,這里我們就展示一下這兩種情況

1 添加額外的配置文件

spring:
    datasource:
        name: test
        url: jdbc:mysql://localhost:3306/maoyan?useUnicode=true&connectTimeout=6000&socketTimeout=12000&characterEncoding=UTF-8
        username: root
        password: root
        # 使用druid數(shù)據(jù)源
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        filters: stat
        maxActive: 16
        initialSize: 4
        maxWait: 3000
        minIdle: 4
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: select 1
        testWhileIdle: true
        testOnBorrow: false
        dbc_connectionInitSqls: SET NAMES utf8mb4

//這里就添加了一個mybatis的配置文件
mybatis:
    configLocation: classpath:/mybatis-config.xml

那就配置這個文件吧(mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
        "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 全局映射器啟用緩存 -->
        <setting name="cacheEnabled" value="false"/>
        <!-- 設(shè)置關(guān)聯(lián)對象加載的形態(tài),此處為按需加載字段(加載字段由SQL指 定),不會加載關(guān)聯(lián)表的所有字段,以提高性能 -->
        <setting name="aggressiveLazyLoading" value="false"/>
        <!-- 允許JDBC支持生成的鍵。需要適合的驅(qū)動。如果設(shè)置為true則這個設(shè)置強制生成的鍵被使用,盡管一些驅(qū)動拒絕兼容但仍然有效(比如Derby) -->
        <setting name="useGeneratedKeys" value="false"/>
        <!-- 給予被嵌套的resultMap以字段-屬性的映射支持 -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!-- 對于批量更新操作緩存SQL以提高性能 -->
        <setting name="defaultExecutorType" value="REUSE"/>
        <!-- 列名自動映射 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- null值數(shù)據(jù)庫映射 -->
        <setting name="jdbcTypeForNull" value="NULL"/>
        <!-- 取消Session內(nèi)的緩存,防止同一事務(wù)內(nèi)多次查詢拿到同樣的對象 -->
        <setting name="localCacheScope" value="STATEMENT"/>
    </settings>


    <mappers>
        <mapper resource="com/yuxi/db/mapper/Account.xml"/>
    </mappers>


</configuration>

2 無需配置的方式
在 application.yml 里把配置文件修改為:

mybatis:
  mapper-locations: classpath:mappers/*.xml

這里需要注意mappers這個文件夾的命令不要是帶"."的不然會掃描不到

  • 添加mybatis的掃描注解
//這個玩意可是不能沒有的,不然會報錯的,親測
@MapperScan("com.yuxi.dao")

好了,代碼就不貼了,可以直接下載下來看,每個例子我都跑過的,

當(dāng)然數(shù)據(jù)庫你需要換成你自己的哦!

源碼地址:
http://git.oschina.net/xiaoyuxi/springbootlearning

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容