springboot for mybatis
首先說明一下,我很討厭使用jdbc的方式(雖然我之前也用過一段時間),等我使用mybatis之后我就徹底拋棄了把SQL寫在代碼這種做法了,還有我認(rèn)為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è)置強(qiáng)制生成的鍵被使用,盡管一些驅(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ù)庫你需要換成你自己的哦!