SpringBoot整合Mybatis-Plus

duanhao發表於2021-09-09

這篇文章介紹一個SpringBoot整合Mybatis-Plus,提供一個小的Demo供大家參考。

已經很久沒有寫文章了,最近家裡有點事剛剛處理完,順便也趁機休息了一段時間。剛回到公司看了一下碼雲,發現本期碼雲封面人員就是Mybatis-Plus團隊苞米豆的負責人,如下圖。

圖片描述

忽然想到,正好之前別人跟我說過怎麼不出一個SpringBoot整合Mybatis-Plus的,已經很久的事了,正好想起來,這次就弄一個整合的Demo。

言歸正傳,新建一個專案。pom檔案中加入Mybatis依賴,完整pom如下:

4.0.0com.dalaoyangspringboot_mybatisplus0.0.1-SNAPSHOTjarspringboot_mybatisplusspringboot_mybatisplusorg.springframework.bootspring-boot-starter-parent1.5.9.RELEASE<!-- lookup parent from repository --&gtUTF-8UTF-81.8com.baomidoumybatisplus-spring-boot-starter1.0.5com.baomidoumybatis-plus2.3org.mybatis.spring.bootmybatis-spring-boot-starter1.3.1org.springframework.bootspring-boot-devtoolsruntimemysqlmysql-connector-javaruntimeorg.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-maven-plugin

配置檔案配置資料庫配置和對應Mybatis-Plus實體資訊,配置如下:

##埠號
server.port=8888

##資料庫url
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false
##資料庫使用者名稱
spring.datasource.username=root
##資料庫密碼
spring.datasource.password=root
##資料庫驅動
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


##日誌級別
logging.level.com.dalaoyang.dao.UserMapper=debug
##mybatis-plus mapper xml 檔案地址
mybatis-plus.mapper-locations=classpath*:mapper/*Mapper.xml
##mybatis-plus type-aliases 檔案地址
mybatis-plus.type-aliases-package=com.dalaoyang.entity

實體類User程式碼如下:

package com.dalaoyang.entity;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.entity
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
public class User {
    private int id;
    private String user_name;
    private String user_password;

    public User() {
    }

    public User(String user_name, String user_password) {
        this.user_name = user_name;
        this.user_password = user_password;
    }

    public User(int id, String user_name, String user_password) {
        this.id = id;
        this.user_name = user_name;
        this.user_password = user_password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_password() {
        return user_password;
    }

    public void setUser_password(String user_password) {
        this.user_password = user_password;
    }
}

下面要說的都是需要注意的地方,新增一個MybatisPlus配置類,其中沒有做過多的設定,只是設定了一下方言,程式碼如下:

package com.dalaoyang.config;

import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.config
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        PaginationInterceptor page = new PaginationInterceptor();
        //設定方言型別
        page.setDialectType("mysql");
        return page;
    }
}

UserMapper繼承了MybatisPlus的BaseMapper,這裡面列舉一個普通的查詢方法getUserList,完整程式碼如下:

package com.dalaoyang.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.dalaoyang.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.dao
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
@Mapper
public interface UserMapper extends BaseMapper {
    List getUserList();

}

新建一個UserMapper.xml,裡面寫getUserList對應sql,程式碼如下:

最後和往常一樣,新建一個Controller進行測試,完整程式碼如下:

package com.dalaoyang.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.dalaoyang.dao.UserMapper;
import com.dalaoyang.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.controller
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
@RestController
public class UserController {

    @Autowired
    private UserMapper userDao;

    //
    @GetMapping("getUserList")
    public List getUserList(){
        return userDao.getUserList();
    }

    //ByName?userName=xiaoli
    //條件查詢
    @GetMapping("getUserListByName")
    public List getUserListByName(String userName)
    {
        Map map = new HashMap();
        map.put("user_name", userName);
        return userDao.selectByMap(map);
    }

    //
    //儲存使用者
    @GetMapping("saveUser")
    public String saveUser(String userName,String userPassword)
    {
        User user = new User(userName,userPassword);
        Integer index = userDao.insert(user);
        if(index>0){
            return "新增使用者成功。";
        }else{
            return "新增使用者失敗。";
        }
    }

    //
    //修改使用者
    @GetMapping("updateUser")
    public String updateUser(Integer id,String userName,String userPassword)
    {
        User user = new User(id,userName,userPassword);
        Integer index = userDao.updateById(user);
        if(index>0){
            return "修改使用者成功,影響行數"+index+"行。";
        }else{
            return "修改使用者失敗,影響行數"+index+"行。";
        }
    }


    //
    //根據Id查詢User
    @GetMapping("getUserById")
    public User getUserById(Integer userId)
    {
        return userDao.selectById(userId);
    }

    //ByPage?pageNumber=1&pageSize=2
    //條件分頁查詢
    @GetMapping("getUserListByPage")
    public List getUserListByPage(Integer pageNumber,Integer pageSize)
    {
        Page page =new Page(pageNumber,pageSize);
        EntityWrapper entityWrapper = new EntityWrapper();
        entityWrapper.eq("user_name", "xiaoli");
        return userDao.selectPage(page,entityWrapper);
    }

}

這裡對上面程式碼稍作解釋,其中包含了如下幾個方法:
1.getUserList :這是普通的Mybatis查詢的方法,沒有用到Mybatis-Plus,這裡不做過多解釋。
2.getUserListByName:條件查詢,根據名稱查詢使用者列表,這裡使用到了selectByMap方法,引數需要傳一個Map,裡面對應寫好需要查詢的欄位名與對應查詢值。
3.saveUser :儲存使用者,這裡使用的是insert方法,需要傳一個實體物件,返回Integer值作為影響行數。
4.updateUser :修改使用者,這裡使用的是updateByIdt方法,需要傳一個實體物件,返回Integer值作為影響行數。
5.getUserById :根據Id查詢實體物件,需要傳使用者Id。
6.getUserListByPage :條件分頁查詢,使用的是selectPage方法,方法需要一個分頁物件Page和一個條件物件EntityWrapper。Page放入頁碼和每頁數量,EntityWrapper使用eq方法放入對應欄位名和對應查詢值。

這裡只是舉例說明幾個方法,其中方法還有很多,更多Mybatis-Plus使用請檢視官方文件:%E7%AE%80%E4%BB%8B

原始碼下載 :

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2810826/,如需轉載,請註明出處,否則將追究法律責任。

相關文章