1. 程式人生 > >springboot集成mybatisplus

springboot集成mybatisplus

args dao tomcat onf actor tro llc www sources

每天學習一點點 編程PDF電子書、視頻教程免費下載: http://www.shitanlife.com/code

介紹:

Mybatis-Plus(簡稱MP)是一個 Mybatis 的增強工具,在 Mybatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。(摘自mybatis-plus官網)Mybatis雖然已經給我們提供了很大的方便,但它還是有不足之處,MP的存在就是為了稍稍彌補Mybatis的不足。在我們使用Mybatis時會發現,每當要寫一個業務邏輯的時候都要在DAO層寫一個方法,再對應一個SQL,即使是簡單的條件查詢、即使僅僅改變了一個條件都要在DAO層新增一個方法,針對這個問題,MP這樣一個框架,一種集Mybatis與Hibernate的優點一起的框架。它提供了Hibernate的單表CURD操作的方便同時,又保留了Mybatis的特性。

本章只教大家怎麽使用MybatisPlus,如果想深入了解底層是怎麽實現的可以去官網下載源代碼進行解讀。

一、創建項目

  這裏就不一步一步來了,我直接給出創建後的項目結構,在本章的最後我會給出源碼地址需要看效果的可以進行下載。

技術分享圖片

二、引入依賴

技術分享圖片
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.chaoqi</groupId>
    <artifactId>springboot_mybatisplus</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot_mybatisplus</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <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>
        <!--添加jsp依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- SpringBoot - MyBatis 逆向工程 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- MyBatis 通用 Mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.1.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>3.5.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>


</project>
技術分享圖片

三、編輯application.yml

技術分享圖片
server:
  port: 8080

spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  datasource:
    url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.chaoqi.springboot_mybatisplus.domain
技術分享圖片

四、逆向生成pojo,mapper

創建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>

    <properties resource="application.yml"/>
    <classPathEntry location="D:/mysql/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar"/>
    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <property name="javaFileEncoding" value="UTF-8"/>
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
        </plugin>
        <!-- 註釋 -->
        <commentGenerator>
            <!-- 是否生成註釋代時間戳 -->
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!-- JDBC連接 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"
                userId="root"
                password="123456">
        </jdbcConnection>
        <!-- 生成實體類地址 -->
        <javaModelGenerator targetPackage="com.chaoqi.springboot_mybatisplus.dao.domain" targetProject="src/main/java"/>
        <!-- 生成mapper xml文件 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
        <!-- 生成mapper xml對應Client-->
        <javaClientGenerator targetPackage="com.chaoqi.springboot_mybatisplus.dao.mapper" targetProject="src/main/java"
                             type="XMLMAPPER"/>
        <!-- 配置表信息 -->
        <table tableName="%">
            <!--mysql 配置-->
            <generatedKey column="id" sqlStatement="Mysql"/>
            <!--oracle 配置-->
            <!--<generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>-->
        </table>
    </context>
</generatorConfiguration>
技術分享圖片

maven運行generator

技術分享圖片

生成完後的項目結構如下

技術分享圖片

五、整合mybatisplus

創建service接口以及service實現類

技術分享圖片
package com.chaoqi.springboot_mybatisplus.service;


import com.chaoqi.springboot_mybatisplus.dao.domain.MusicInfo;

import java.util.List;

public interface MusicInfoService {

    public List<MusicInfo> getMusicInfo();
}
技術分享圖片

技術分享圖片
package com.chaoqi.springboot_mybatisplus.service.impl;

import com.chaoqi.springboot_mybatisplus.dao.domain.MusicInfo;
import com.chaoqi.springboot_mybatisplus.dao.mapper.MusicInfoMapper;
import com.chaoqi.springboot_mybatisplus.service.MusicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MusicInfoServiceImpl implements MusicInfoService {

    @Autowired
    private MusicInfoMapper musicInfoMapper;

    @Override
    public List<MusicInfo> getMusicInfo() {
        List<MusicInfo> musicInfos = musicInfoMapper.selectAll();
        return musicInfos;
    }
}
技術分享圖片

創建Controller

技術分享圖片
package com.chaoqi.springboot_mybatisplus.web;

import com.chaoqi.springboot_mybatisplus.dao.domain.MusicInfo;
import com.chaoqi.springboot_mybatisplus.service.MusicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping(value = "/music")
public class MusicInfoController {

    @Autowired
    private MusicInfoService musicInfoService;

    @RequestMapping("/showMusic")
    public List<MusicInfo> getMusicInfo() {
        List<MusicInfo> musicInfo1 = musicInfoService.getMusicInfo();
        return musicInfo1;
    }

}
技術分享圖片

這裏我的mapper並不要寫sql,一些簡單的sqlmybatiplus都給封裝好了,節省了許多開發時間,如果是一些復雜的sql,也可以通過寫原生sql來實現,在我的第二篇博客中有講到http://www.cnblogs.com/caichaoqi/p/8580521.html

運行SpringbootMybatisplusApplication主函數

技術分享圖片
package com.chaoqi.springboot_mybatisplus;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.chaoqi.springboot_mybatisplus.dao.mapper")
public class SpringbootMybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisplusApplication.class, args);
    }
}
技術分享圖片

技術分享圖片

查看數據庫

技術分享圖片

下面給出mybatisplus封裝的一些方法,這些方法具體怎麽使用,感興趣的小夥伴可以查看下源代碼,mybatisplus還有一個強大的分頁功能,如果有興趣也可以去學習http://mp.baomidou.com

技術分享圖片

(源碼下載地址:https://github.com/caicahoqi/ChaoqiIsPrivateLibrary)

springboot集成mybatisplus