1. 程式人生 > >Spring Boot學習筆記(三)—— 新增Mybatis、Druid

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及其簡單,我們只需:

  1. 新增相應starter pom,資料庫驅動
  2. 主類上新增@MapperScan自動掃描*Mapper.java
  3. 配置mapper-locations自動掃描*Mapper.xml
  4. 我們可以使用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