天天看點

SpringBoot快速內建MyBatis-plus---(第二篇)以下是MyBatisPlus的方法可以參考

今天我們主要講在實際開發中所用到的一些方法,不知道怎麼整合的可以看我上一篇部落格

項目已已上傳gitee,請移步gitee下載下傳完整項目

SpringBoot快速內建MyBatis-plus—(第一篇)

最終目錄結構

SpringBoot快速內建MyBatis-plus---(第二篇)以下是MyBatisPlus的方法可以參考

整合Swagger文檔 引入坐标依賴

<!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
           

在目前目錄下建立一個util處理Swagger文檔

SpringBoot快速內建MyBatis-plus---(第二篇)以下是MyBatisPlus的方法可以參考

entity

package com.gxh.modules.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Objects;

@TableName("sys_user")//mybatisPlus 注解:映射表名
@Data// lombok代碼簡化注解,包裝Get/Set/構造器
public class SysUser implements Serializable {

    //@TableId(type = IdType.ASSIGN_ID)       //雪花算法--->MyBatisPlus 支援的Id政策
    //@TableId(type = IdType.ASSIGN_UUID)     //雪花算法_不含中劃線的UUID--->MyBatisPlus 支援的Id政策
    //@TableId(type = IdType.ID_WORKER_STR)   //利用了雪花算法--->MyBatisPlus 支援的Id政策
    /**ID*/
    @TableId(type = IdType.AUTO)              //自增--->MyBatisPlus 支援的Id政策
    private Integer id;

    /**使用者名*/
    private String username;

    /**密碼*/
    private String password;

    //請不要在意單詞拼寫是否正确
    //虛拟字段-代表在資料庫中不存在(不會被MybatisPlus抛出Know Null Column異常)
    @TableField(exist = false)//Type Is boolean(there defaultValue is true)
    private String note;
    /**
     * 重寫父類Object 提供的 toString方法,友善測試
     * @return
     */
    @Override
    public String toString() {
        return "SysUser{" +
                "id='" + id + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SysUser sysUser = (SysUser) o;
        return Objects.equals(id, sysUser.id) &&
                Objects.equals(username, sysUser.username) &&
                Objects.equals(password, sysUser.password);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, username, password);
    }
}




附上SwaggerConfig

```java
package com.gxh.modules.util;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Author gxh
 * @Data 2021/8/23
 */

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.gxh.modules.controller"))
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder()
                        .title("SpringBoot-MyBatisPlus")
                        .description("MyBatis-Plus在開發中常用的方法")
                        .version("1.0")
                        .licenseUrl("http://www.lxito.com")
                        .build());
    }
}
           

在SpringBoot啟動類打開Swagger文檔

package com.gxh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.net.InetAddress;

/***
 * @author gxh
 * @date 2021-8-21
 */
@EnableSwagger2         //開啟swagger文檔
@EnableScheduling       //開啟異步
@SpringBootApplication
public class SpringBootAndMpApplication {
    public static void main(String[] args) throws Exception{
        Long s1 = System.currentTimeMillis();
        ConfigurableApplicationContext application = SpringApplication.run(SpringBootAndMpApplication.class, args);
        Long s2 = System.currentTimeMillis();

        Environment env = application.getEnvironment();
        String ip = InetAddress.getLocalHost().getHostAddress();
        String port = env.getProperty("server.port");
        String path = env.getProperty("server.servlet.context-path");

        System.out.println("=======================================>");
        System.out.println("啟動耗時=======>"+(s2-s1));
        System.out.println("Local:http://localhost:" + port + "/swagger-ui.html");
        System.out.println("serve start-up success");
        System.out.println("=======================================>");
    }
}
           

定義Result

package com.gxh.modules.constant;

/**
 *  響應結果 常量接口
 * @Author gxh
 * @Data 2021/8/23
 */
// interface 不會繼承 Object,所有作為常量效率會好點.
public interface ResultMessageConstant {

    /**添加成功*/
    //接口常量預設就是被  public static final String  修飾
    String MESSAGE_ADD_SUCCESS = "添加成功";

    /**200*/
    String MESSAGE_SUCCESS_200 = "200";

    /**删除成功*/
    String MESSAGE_DEL_SUCCESS = "删除成功";
}
           

1,使用MyBatisPlus的分頁清單查詢

/***
     * 使用MybatisPlus QueryWapper  分頁查詢
     * @return
     */
    @GetMapping("/pageList")
    public Map<String,Object> pageList(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
                                       @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
        QueryWrapper<SysUser> query = new QueryWrapper<SysUser>();
        IPage<SysUser> page = new Page<SysUser>(pageNo,pageSize);
        IPage<SysUser> pageList = sysUserService.page(page, query);

        result.put("code",ResultMessageConstant.MESSAGE_SUCCESS_200);
        result.put("success",true);
        result.put("data",pageList);
        return result;
    }
           

2.使用MyBatisPlus的不分頁list查詢

/**
     * 不分頁list查詢
     * @return
     */
    @GetMapping("/list")
    public Map<String,Object> userList(){
        List<SysUser> users = this.sysUserService.list();
        result.put("userList",users);
        return result;
    }
           

3.自定義添加

/**
     * 添加使用者 1
     * 使用自定義SQL + DTO
     * @param userDto
     * @return
     */
    @PostMapping("/addByDto")
    public Map<String,Object> addByDto(@RequestBody UserDto userDto){
		//調用業務層自定義的添加方法
        boolean isFlag = this.sysUserService.insertUser(userDto);
        if (isFlag){
            result.put("code",ResultMessageConstant.MESSAGE_SUCCESS_200);
            result.put("success",true);
            result.put("msg", ResultMessageConstant.MESSAGE_ADD_SUCCESS);
            result.put("data",userDto);
        }
        return result;
    }
           
3.1接口層
/**
     * 添加使用者
     * @param userDto
     * @return
     */
    boolean insertUser(UserDto userDto);
           
3.1.1接口實作層
@Override
    public boolean insertUser(UserDto userDto) {
        boolean isFlag = false;
        Integer count = this.sysUserMapper.insertUserByDto(userDto);
        if (null !=count || count>0){
            isFlag = true;
        }
        return isFlag;
    }
           
4.Dao(Mapper)層
/**
     * 添加使用者
     * @param userDto
     * @return
     */
    Integer insertUserByDto(@Param("userDto") UserDto userDto);
           
4.1 xml映射
<insert id="insertUserByDto" parameterType="com.gxh.modules.entity.dto.UserDto">
        insert into sys_user(`username`,`password`)
        values (#{userDto.username},#{userDto.password})
    </insert>
           

5.使用MyBatisPlus的save方法進行添加操作

/**
     * 添加使用者 2
     * 使用MyBatisPlus + entity(SysUser)
     * @param sysUser
     * @return
     */
    @PostMapping("/add")
    public Map<String,Object> add(@RequestBody SysUser sysUser){
        boolean save = sysUserService.save(sysUser);
        //更新
        //sysUserService.update(sysUser);
        if (save){
            result.put("code",ResultMessageConstant.MESSAGE_SUCCESS_200);
            result.put("success",true);
            //這裡使用一下 當時SysUser定義的虛拟字段       SysUser note(虛拟字段,不存在于資料表中)
            sysUser.setNote("添加成功");
            result.put("sysUser.note", sysUser.getNote());
            result.put("data",sysUser);
        }
        return result;
    }
           

6.使用MyBatisPlus的removeId放法進行删除操作

/***
     * 根據id删除資訊
     * @param id
     * @return
     */
    @GetMapping("deleteById")
    public Map<String,Object> deleteById(@RequestParam("id") Integer id){
        boolean isDel = sysUserService.removeById(id);
        if (isDel){
            result.put("code",ResultMessageConstant.MESSAGE_SUCCESS_200);
            result.put("success",true);
            result.put("msg", ResultMessageConstant.MESSAGE_DEL_SUCCESS);
        }
        return result;
    }
           

7.使用MyBatisPlus的removeByIds方法進行批量删除

/***
     * MyBatisPlus 批量删除
     * @param id
     * @return
     */
    @GetMapping("deleteByIds")
    public Map<String,Object> deleteByIds(@RequestParam("id") String id){
        List<String> idList = Arrays.asList(id.split(","));
        boolean isDel = this.sysUserService.removeByIds(idList);
        if (isDel){
            result.put("code",ResultMessageConstant.MESSAGE_SUCCESS_200);
            result.put("success",true);
            result.put("msg", ResultMessageConstant.MESSAGE_DEL_SUCCESS);
        }
        return result;
    }
           

8.使用自定義的批量删除方法

8.1controller
/***
     * 自定義SQL 批量删除
     * @param id
     * @return
     */
    @GetMapping("deleteBatch")
    public Map<String,Object> deleteBatch(@RequestParam("id") String id){
        List<String> idList = Arrays.asList(id.split(","));
        this.sysUserService.deleteBatchByIds(idList);
        result.put("code",ResultMessageConstant.MESSAGE_SUCCESS_200);
        result.put("success",true);
        result.put("msg", ResultMessageConstant.MESSAGE_DEL_SUCCESS);
        return result;
    }
           
8.2 Service層
/**
     * 自定義SQL 批量删除
     * @param idList
     */
    @Async//Spring 的異步注解
    //異步執行
    //使用此注解需要在  啟動類上開啟  @EnableScheduling
    void deleteBatchByIds(List<String> idList);
           
8.2.1ServiceImpl(業務實作層)
@Override
    public void deleteBatchByIds(List<String> idList) {
        sysUserMapper.deleteBatchByIds(idList);
    }
           
8.3Dao(Mapper)層
/**
     * 通過 id 集合批量删除
     * @param idList
     */
    void deleteBatchByIds(@Param("idList") List<String> idList);
           
8.3.1xml映射
<!--通過id 集合批量删除-->
    <delete id="deleteBatchByIds" parameterType="java.lang.String">
        delete from `sys_user`
        <where>
            <if test="idList !=null and idList.size() > 0">
                id in
                <foreach collection="idList" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </where>
    </delete>
           

以下是MyBatisPlus的方法可以參考

SpringBoot快速內建MyBatis-plus---(第二篇)以下是MyBatisPlus的方法可以參考