Spring Boot 2 實踐記錄之 MySQL + MyBatis 配置

若是不須要鏈接池,那麼只須要簡單的在pom文件中,添加mysql依賴:java

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>xxx.xxx.xxx</version>
</dependency>

而後在配置文件中添加配置:mysql

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://hostname:port/xxxxxx?autoReconnect=true&failOverReadOnly=false&useSSL=false&allowMultiQueries=true&rewriteBatchedStatements=true
spring.datasource.username=xxxxxx
spring.datasource.password=xxxxxx

MySQL datasource 就配置完了。spring

若是使用鏈接池,則須要一個數據庫配置類,以下是使用 PooledDataSource 的 Java 配置文件:sql

package cn.liuxingwei.judge.config;

import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * 數據源相關配置
 * @author liuxingwei
 */
@Configuration
@EnableTransactionManagement
public class DataConfiguration {

    /**
     * mysql driver 變量,取自外掛配置文件
     * @author liuxingwei
     */
    @Value("${spring.datasource.driver-class-name}")
    private String mysqlDriver;

    /**
     * mysql 鏈接 url,取自外掛配置文件
     * @author liuxingwei
     */
    @Value("${spring.datasource.url}")
    private String mysqlUrl;

    /**
     * mysql 鏈接用戶名,取自外掛配置文件
     * @author liuxingwei
     */
    @Value("${spring.datasource.username}")
    private String mysqlUsername;

    /**
     * mysql 鏈接密碼,取自外掛配置文件
     */
    @Value("${spring.datasource.password}")
    private String mysqlPassword;

    /**
     * 數據源(dataSource)定義
     * @author liuxingwei
     * @return DataSource
     */
    @Bean
    public PooledDataSource dataSource() {
        PooledDataSource dataSource = new PooledDataSource();
        dataSource.setDriver(mysqlDriver);
        dataSource.setUrl(mysqlUrl);
        dataSource.setUsername(mysqlUsername);
        dataSource.setPassword(mysqlPassword);
        return dataSource;
    }

}

MyBatis 也不須要特殊的配置,只要在pom中加上依賴:數據庫

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>xxx.xxx.xxx</version>
</dependency>

而後分別建立實體類、Mapper 接口和 Mapper XML 文件,就能夠使用了。附上一個可用於 Eclipse 的 MyBatis Generator 插件的配置文件:apache

<?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">
<generatorConfiguration>
    <context id="MySqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="autoDelimitKeywords" value="true"/>
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>
       <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://hostname:port/judge?autoReconnect=true&amp;failOverReadOnly=false&amp;useSSL=false&amp;allowMultiQueries=true&amp;rewriteBatchedStatements=true"
                        userId="root"
                        password="123456"></jdbcConnection>
        <javaModelGenerator targetPackage="cn.liuxingwei.judge.domain"
                            targetProject="judge/src/main/java">
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="cn.liuxingwei.judge.mapper"
                         targetProject="judge/src/main/resources"/>
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.liuxingwei.judge.mapper"
                             targetProject="judge/src/main/java"/>
        <table tableName="%">
            <generatedKey column="id" sqlStatement="MySql"/>
            <domainObjectRenamingRule searchString="^T" replaceString="" />
        </table>
    </context>
</generatorConfiguration>

順便提一句,若是數據庫的字符編碼爲 UTF8,能夠在鏈接 url 中添加 characterEncoding=UTF-8 來實現,沒必要管 MySQL 服務器自己的設置:服務器

spring.datasource.url=jdbc:mysql://hostname:port/xxx?characterEncoding=UTF8&autoReconnect=true&failOverReadOnly=false

可是若是數據庫編碼爲 UTF8MB4,是不能簡單地把鏈接串中的 UTF8 換成 UTF8MB4 的,會報錯,只能是在 MySQL 的配置文件(my.cnf)中將 MySQL 的默認字符集設置爲 utf8mb4,鏈接串中再也不設置 characterEncoding。session

相關文章
相關標籤/搜索