Spring Boot學習筆記(三)—— 新增Mybatis、Druid
一、前言
之前我們對Spring Boot的View和Control配置都有了一定的瞭解,在Model層配置上,我們將使用Mybatis、Druid進行開發,下面就對其進行配置。
二、開始配置
MyBatis 是一款優秀的持久層框架,Druid是一個高效能的資料庫連線池,並且提供了監控功能,二者均提供了官方的starter pom來支援Spring Boot,我們只需引入依賴即可:
<dependency>
<!-- mysql jdbc驅動 -->
<groupId> mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId >
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.6</version>
</dependency >
新增資料庫連線配置:
# application.yml
spring:
datasource:
dirver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring_boot_demo?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123456
#druid相關配置可檢視官方文件 https://github.com/alibaba/druid
druid:
initial-size: 3
max-active: 10
druid就算配置完了,在配置Mybatis之前,先引入一個外掛來幫助我們自動生成程式碼。
...
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<verbose>true</verbose>
<overwrite>false</overwrite>
</configuration>
</plugin>
...
在src/main/resources
下新建檔案generatorConfig.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- 命令列執行命令:java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -->
<!-- maven命令:mvn mybatis-generator:generate -->
<generatorConfiguration>
<!-- 驅動包路徑! -->
<classPathEntry location="D:\software\myJar\MybatisGenerator\mysql-connector-java-5.1.38.jar"/>
<context id="MysqlTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- jdbc url地址 ! -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/spring_boot_demo?useSSL=false" userId="root" password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 實體類生成位置 -->
<javaModelGenerator targetPackage="com.hl.spring_boot_demo.domain" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- mapping檔案生成位置 -->
<sqlMapGenerator targetPackage="com.hl.spring_boot_demo.domain.mapping" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- dao介面生成位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.hl.spring_boot_demo.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 表配置 tableName 表名 domainObjectName java類名,首字母必須大寫,否則報字串越界錯誤 -->
<table tableName="tb_user" domainObjectName="SysUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
然後在mysql裡建一個表:
CREATE TABLE `tb_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接下來就可以直接在eclipse裡run as>maven build>mybatis-generator:generate
,重新整理以下專案就會發現外掛已經自動為我們生成了SysUserMapper.xml
,SysUser.hava
,SysUserMapper.java
,此時專案結構如下:
com
+- hl
+- spring_boot_demo
+- SpringBootDemoApplication.java
|
+- dao
| +- SysUserMapper.java
+- domain
| +- mapping
| +- SysUserMapper.xml
| +- SysUser.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
接下來新增配置:
#application.yml
mybatis:
# mapper.xml的存放位置
mapper-locations: classpath:com/szb/application_manage_system/domain/mapping/*.xml
# 實體類包名
type-aliases-package: com.szb.application_manage_system.domain
# 完整Mybatis配置可檢視官方文件 http://www.mybatis.org/mybatis-3/zh/configuration.html
configuration:
lazyLoadingEnabled: false
aggressiveLazyLoading: true
useGeneratedKeys: true
在主類上添加註釋掃描介面類:
@MapperScan("com.hl.spring_boot_demo.dao")
public class SpringBootDemoApplication {
Druid、Mybatis已經配置完成,現在我們寫個測試類測試以下crud。
//定義一個測試基類,後續測試直接繼承
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringBootDemoApplication.class)
public class BaseJunit4Test {
}
在src/test/java/com/hl/spring_boot_demo/domain
下新建UserTest.java
:
public class UserTest extends BaseJunit4Test{
@Autowired
SysUserMapper mapper;
@Test
@Transactional
//事務控制,為true則回滾
@Rollback(false)
public void testInsert() {
SysUser user = new SysUser();
user.setUsername("admin");
user.setPassword("123456");
mapper.insertSelective(user);
}
}
執行後檢視是否成功,然後開啟資料庫檢視資料是否已經插入。
三、總結
在Spring Boot中使用Duid、Mybatis及其簡單,我們只需:
- 新增相應starter pom,資料庫驅動
- 主類上新增
@MapperScan
自動掃描*Mapper.java
- 配置
mapper-locations
自動掃描*Mapper.xml
- 我們可以使用
mybatis-generator-maven-plugin
自動生成實體類、介面類和xml
更多關於Spring Boot整合Mybatis、Druid的詳細說明可以參考官方文件:
mybatis: http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure
Druid: https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter