Springboot系列之Springboot與Mybatis整合

前言

技術博客那麼多,爲何本身整理呢?太過零散的知識點不易記憶,且查找的時候也不是太方便,眼過千遍不如手過一遍的操做一遍,即便Springboot已經很好的整合了各項的技術框架,但實際操做的時候也會發現一些問題。我會將可能出現的問題記錄一下,博文時刻更新。html

預備知識: Springboot 2.0.6 Mybatis 3.4.6 Maven 3.5.3 Lomlok 1.16.18(能夠參考:lombok 簡化 Java 代碼) Mysql 5.1.47java

代碼地址: 博文只是列舉核心操做步驟,須要本身實際操做。 https://github.com/Tojian/spring-treasure-box/tree/master/tao-springboot-mybatismysql

1、pom文件添加mybatis相關依賴

這裏用到spring-boot-starter基礎和spring-boot-starter-test用來作單元測試驗證數據訪問 引入鏈接mysql的必要依賴mysql-connector-java 引入整合MyBatis的核心依賴mybatis-spring-boot-starter 這裏不引入spring-boot-starter-jdbc依賴,是因爲mybatis-spring-boot-starter中已經包含了此依賴git

<dependency>
            <!--去掉也能夠-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <scope>provided</scope>
        </dependency>

2、利用mybatis generator插件生成代碼

1.加入插件依賴

<plugin>
     <groupId>org.mybatis.generator</groupId>
     <artifactId>mybatis-generator-maven-plugin</artifactId>
     <version>1.3.2</version>
     <configuration>
     <!--插件的位置文件-->
    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
    <overwrite>true</overwrite>
    <verbose>true</verbose>
   </configuration>
</plugin>

2.編寫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">
<generatorConfiguration>
    <!-- 數據庫驅動:選擇你的本地硬盤上面的數據庫驅動包-->
    <classPathEntry  location="/Users/taojian/mvnjar/mysql/mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--數據庫連接URL,用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/mytest" userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.taojian.mybatis.bean" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.taojian.mybatis.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是數據庫中的表名或視圖名 domainObjectName是實體類名-->
        <table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

3.配置啓動插件

核心命令 :mybatis-generator:generate -egithub

4.啓動自動生成代碼

如圖所示,紅色方框便是生成後的代碼,裏面覆蓋了常見的增刪改查,避免重複的CRUD操做。web

@repository是用來註解接口,以下圖:這個註解是將接口UserMapper的一個實現類交給spring管理(在spring中有開啓對@repository註解的掃描),當哪些地方須要用到這個實現類做爲依賴時,就能夠注入了.在mybatis註冊到spring的時候,已經UserMapper變成了一個bean,因此不須要用@Repository也是能夠的,可是爲了規範仍是加上@Repository。spring

@Repository
public interface UserMapper {

    int deleteByPrimaryKey(Integer userId);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer userId);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

3、添加application.properties文件

配置文件請參考:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/sql

## Mybatis 配置
mybatis.typeAliasesPackage=com.taojian.mybatis.bean
mybatis.mapperLocations=classpath:mapping/*.xml


spring.datasource.url=jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

4、啓動項

建立項目的TaoSpringbootMybatisApplication類數據庫

@SpringBootApplication
@MapperScan("com.taojian.mybatis.mapper")
public class TaoSpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(TaoSpringbootMybatisApplication.class, args);
    }

}

springboot會自動加載spring.datasource.*相關配置,數據源就會自動注入到sqlSessionFactory中,sqlSessionFactory會自動注入到Mapper中 在啓動類中添加對mapper包掃描@MapperScan,這個註解很是的關鍵,這個對應了項目中mapper(dao)所對應的包路徑,容易出錯。springboot

原文出處:https://www.cnblogs.com/tojian/p/10213840.html

相關文章
相關標籤/搜索