MybatisPlus的BaseMapper和Wrapper使用

1、簡介
  在MybatisPlus中,BaseMapper中定義了一些經常使用的CRUD方法,當咱們自定義的Mapper接口繼承BaseMapper後便可擁有了這些方法。

2、BaseMapper中的CRUD方法
  • 通用 CRUD 封裝BaseMapper接口,爲 Mybatis-Plus 啓動時自動解析實體表關係映射轉換爲 Mybatis 內部對象注入容器
  • 泛型 T 爲任意實體對象
  • 參數 Serializable 爲任意類型主鍵 Mybatis-Plus 不推薦使用複合主鍵約定每一張表都有本身的惟一 id 主鍵
  • 對象 Wrapper 爲 條件構造器
/* * Copyright (c) 2011-2020, hubin (jobob@qq.com). * <p> * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */
package com.baomidou.mybatisplus.core.mapper; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; 
/** * <p> * Mapper 繼承該接口後,無需編寫 mapper.xml 文件,便可得到CRUD功能 * </p> * <p> * 這個 Mapper 支持 id 泛型 * </p> * * @author hubin * @since 2016-01-23 */
public interface BaseMapper<T> { /** * <p> * 插入一條記錄 * </p> * * @param entity 實體對象 */
    int insert(T entity); /** * <p> * 根據 ID 刪除 * </p> * * @param id 主鍵ID */
    int deleteById(Serializable id); /** * <p> * 根據 columnMap 條件,刪除記錄 * </p> * * @param columnMap 表字段 map 對象 */
    int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); /** * <p> * 根據 entity 條件,刪除記錄 * </p> * * @param queryWrapper 實體對象封裝操做類(能夠爲 null) */
    int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 刪除(根據ID 批量刪除) * </p> * * @param idList 主鍵ID列表(不能爲 null 以及 empty) */
    int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); /** * <p> * 根據 ID 修改 * </p> * * @param entity 實體對象 */
    int updateById(@Param(Constants.ENTITY) T entity); /** * <p> * 根據 whereEntity 條件,更新記錄 * </p> * * @param entity 實體對象 (set 條件值,不能爲 null) * @param updateWrapper 實體對象封裝操做類(能夠爲 null,裏面的 entity 用於生成 where 語句) */
    int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper); /** * <p> * 根據 ID 查詢 * </p> * * @param id 主鍵ID */ T selectById(Serializable id); /** * <p> * 查詢(根據ID 批量查詢) * </p> * * @param idList 主鍵ID列表(不能爲 null 以及 empty) */ List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); /** * <p> * 查詢(根據 columnMap 條件) * </p> * * @param columnMap 表字段 map 對象 */ List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); /** * <p> * 根據 entity 條件,查詢一條記錄 * </p> * * @param queryWrapper 實體對象 */ T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 Wrapper 條件,查詢總記錄數 * </p> * * @param queryWrapper 實體對象 */ Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 entity 條件,查詢所有記錄 * </p> * * @param queryWrapper 實體對象封裝操做類(能夠爲 null) */ List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 Wrapper 條件,查詢所有記錄 * </p> * * @param queryWrapper 實體對象封裝操做類(能夠爲 null) */ List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 Wrapper 條件,查詢所有記錄 * 注意: 只返回第一個字段的值 * </p> * * @param queryWrapper 實體對象封裝操做類(能夠爲 null) */ List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 entity 條件,查詢所有記錄(並翻頁) * </p> * * @param page 分頁查詢條件(能夠爲 RowBounds.DEFAULT) * @param queryWrapper 實體對象封裝操做類(能夠爲 null) */ IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * <p> * 根據 Wrapper 條件,查詢所有記錄(並翻頁) * </p> * * @param page 分頁查詢條件 * @param queryWrapper 實體對象封裝操做類 */ IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); }

3、MybatisPlus的QueryWrapper和UpdateWrapper應用html

  Mybatis-plus的wrapper構造條件使用以下圖所示:java

  附上MybatisPlus官網: https://mp.baomidou.com/guide/crud-interface.html#mapper-crud-%E6%8E%A5%E5%8F%A3git

相關文章
相關標籤/搜索