首页 > 其他分享 >mybatis-plus:初次教程

mybatis-plus:初次教程

时间:2023-04-21 17:36:17浏览次数:39  
标签:教程 return param boolean plus Wrapper mybatis import com


mybatis-plus将 mybatis封装成与hibernate一样的增删改查操作,同时也能自定义SQL

且源码有中文注释,nice

<!-- mybatis-plus start -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatisplus-spring-boot-starter</artifactId>
            <version>${mybatisplus-spring-boot-starter.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
<mybatis-plus.version>2.1.9</mybatis-plus.version>
    <mybatisplus-spring-boot-starter.version>1.0.5</mybatisplus-spring-boot-starter.version>

 

pom

 

package com.admin.model;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;

import java.io.Serializable;

/**
 * Created by hc on 2018/12/19 0019.
 *  
 */

@Data
@TableName("t_type")
public class CTypes extends Model<CTypes> {

    /**
     * 费用类型主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     *  名称
     */
    @TableField("type_name")
    private String typeName;


    @Override
    public String toString() {
        return "CType{" +
                "id=" + id +
                ", typeName='" + typeName + '\'' +
                ", fatherId=" + fatherId +
                ", status=" + status +
                ", createId=" + createId +
                ", createTime='" + createTime + '\'' +
                ", modifyId=" + modifyId +
                ", modifyTime='" + modifyTime + '\'' +
                '}';
    }

    @Override
    protected Serializable pkVal() {

        return this.id;
    }

}

model:对象继承Model

package com.admin.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.admin.model.CostSubTypeVO;
import com.admin.model.CostTypes;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Service;

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

/**
 * Created by Administrator on 2018/12/19 0019.
 * 类型 Mapper 接口
 */
@Mapper
@Service
public interface CTypesMapper extends BaseMapper<CTypes>{

    CostSubTypeVO selectCostSubTypeById(Integer subId);

    List<CostSubTypeVO> selectCostSubTypesPage(Map<String,Integer> params);

    CostSubTypeVO selectCostSubTypeByFatherId(Integer fatherId);
}

Mapper:继承BaseMapper

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.admin.mapper.CTypesMapper">

    <!-- mybatisplus所需 的通用查询结果映射 -->
    <resultMap id="BaseResultMap" type="com.admin.model.CTypes">
        <id column="id" property="id"/>
        <result column="type_name" property="typeName"/>
        <result column="status" property="status"/>
        <result column="create_id" property="createId"/>
        <result column="create_time" property="createTime"/>
        <result column="modify_id" property="modifyId"/>
        <result column="modify_time" property="modifyTime"/>
    </resultMap>


    <resultMap id="subTypesResultMap" type="com.admin.model.SubTypeVO">
        <id column="id" property="id"/>
        <result column="type_name" property="typeName"/>
        <result column="status" property="status"/>
        <collection column="id" property="subTypeStr" ofType="String" select="selectSubs"></collection>
    </resultMap>

    <select id="selectCostSubTypesPage" resultMap="subTypesResultMap" parameterType="map">
        SELECT id,type_name,`status` FROM t_cost_type WHERE father_id=-1 LIMIT #{start},#{size}
    </select>

    <select id="selectSubs" resultType="String" parameterType="int">
        SELECT GROUP_CONCAT(type_name) FROM t_cost_type WHERE father_id=#{id}
    </select>

    <select id="selectCostSubTypeByFatherId" resultMap="subTypesResultMap" parameterType="int">
        SELECT id,type_name,`status` FROM t_cost_type WHERE id=#{fatherId}
    </select>


    <resultMap id="subTypeOneResult" type="com.admin.model.CostSubTypeVO">
        <id column="id" property="id"/>
        <result column="type_name" property="typeName"/>
        <result column="status" property="status"/>
        <collection property="subTypes" ofType="com.admin.model.CostTypes" column="id" select="selectOneSub">
            <id column="id" property="id"/>
            <result column="type_name" property="typeName"/>
            <result column="status" property="status"/>
            <result column="create_id" property="createId"/>
            <result column="create_time" property="createTime"/>
            <result column="modify_id" property="modifyId"/>
            <result column="modify_time" property="modifyTime"/>
        </collection>
    </resultMap>

    <select id="selectSubTypeById" resultMap="subTypeOneResult" parameterType="int">
        SELECT id,type_name,`status` FROM t_cost_type WHERE id=#{subId}
    </select>

    <select id="selectOneSub" resultType="com.admin.model.CTypes" parameterType="int">
        SELECT * FROM t_type WHERE father_id=#{id}
    </select>

</mapper>

Mapper-xml  ps:BaseResultMap

package com.admin.service;

import com.baomidou.mybatisplus.service.IService;
import com.admin.model.CostSubTypeVO;
import com.admin.model.CostTypes;

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

/**
 * Created by Administrator on 2018/12/19 0019.
 * 类型 Service 接口
 */
public interface CostTypeService extends IService<CostTypes>{

    CostSubTypeVO selectCostSubTypeById(Integer subId);
    List<CostSubTypeVO> selectCostSubTypesPage(Map<String,Integer> params);
    CostSubTypeVO selectCostSubTypeByFatherId(Integer fatherId);
}

service:extends IService

package com.admin.service.impl;

import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.admin.mapper.CostTypesMapper;
import com.admin.model.CostSubTypeVO;
import com.admin.model.CostTypes;
import com.admin.service.CostTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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


/**
 * Created by Administrator on 2018/12/19 0019.
 *类型 Service 接口实现类
 */

@Service
public class CostTypeServiceImpl extends ServiceImpl<CTypesMapper, CostTypes> implements CostTypeService {

    @Autowired
    private CostTypesMapper costTypeMapper;


    /**
     *  
     *
     * @param subId
     * @return
     */
    @Override
    public CostSubTypeVO selectSubTypeById(Integer subId) {

        return costTypeMapper.selectSubTypeById(subId);
    }

 

}

ServiceImpl extends ServiceImpl

package com.admin.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.admin.model.CostSubTypeVO;
import com.admin.model.CostTypes;
import com.admin.service.CostTypeService;
import com.common.util.Query;
import com.common.util.R;
import com.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

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

/**
 * Created by Administrator on 2018/12/20 0020.
 * 类型 前端控制器
 */

@RestController
@RequestMapping("/costType")

public class CostTypeController extends BaseController{

    @Autowired
    private CostTypeService costTypeService;


}

方法:

/**
 * Copyright (c) 2011-2016, hubin ([email protected]).
 * <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.service;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;

/**
 * <p>
 * 顶级 Service
 * </p>
 *
 * @author hubin
 * @Date 2016-04-20
 */
public interface IService<T> {

    /**
     * <p>
     * 插入一条记录(选择字段,策略插入)
     * </p>
     *
     * @param entity 实体对象
     * @return boolean
     */
    boolean insert(T entity);

    /**
     * <p>
     * 插入一条记录(全部字段)
     * </p>
     *
     * @param entity 实体对象
     * @return boolean
     */
    boolean insertAllColumn(T entity);

    /**
     * <p>
     * 插入(批量),该方法不适合 Oracle
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    boolean insertBatch(List<T> entityList);

    /**
     * <p>
     * 插入(批量)
     * </p>
     *
     * @param entityList 实体对象列表
     * @param batchSize  插入批次数量
     * @return boolean
     */
    boolean insertBatch(List<T> entityList, int batchSize);

    /**
     * <p>
     * 批量修改插入
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    boolean insertOrUpdateBatch(List<T> entityList);

    /**
     * <p>
     * 批量修改插入
     * </p>
     *
     * @param entityList 实体对象列表
     * @param batchSize
     * @return boolean
     */
    boolean insertOrUpdateBatch(List<T> entityList, int batchSize);

    /**
     * <p>
     * 批量修改或插入全部字段
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    boolean insertOrUpdateAllColumnBatch(List<T> entityList);

    /**
     * 批量修改或插入全部字段
     *
     * @param entityList 实体对象列表
     * @param batchSize
     * @return boolean
     */
    boolean insertOrUpdateAllColumnBatch(List<T> entityList, int batchSize);

    /**
     * <p>
     * 根据 ID 删除
     * </p>
     *
     * @param id 主键ID
     * @return boolean
     */
    boolean deleteById(Serializable id);

    /**
     * <p>
     * 根据 columnMap 条件,删除记录
     * </p>
     *
     * @param columnMap 表字段 map 对象
     * @return boolean
     */
    boolean deleteByMap(Map<String, Object> columnMap);

    /**
     * <p>
     * 根据 entity 条件,删除记录
     * </p>
     *
     * @param wrapper 实体包装类 {@link Wrapper}
     * @return boolean
     */
    boolean delete(Wrapper<T> wrapper);

    /**
     * <p>
     * 删除(根据ID 批量删除)
     * </p>
     *
     * @param idList 主键ID列表
     * @return boolean
     */
    boolean deleteBatchIds(Collection<? extends Serializable> idList);

    /**
     * <p>
     * 根据 ID 选择修改
     * </p>
     *
     * @param entity 实体对象
     * @return boolean
     */
    boolean updateById(T entity);

    /**
     * <p>
     * 根据 ID 修改全部字段
     * </p>
     *
     * @param entity 实体对象
     * @return boolean
     */
    boolean updateAllColumnById(T entity);

    /**
     * <p>
     * 根据 whereEntity 条件,更新记录
     * </p>
     *
     * @param entity  实体对象
     * @param wrapper 实体包装类 {@link Wrapper}
     * @return boolean
     */
    boolean update(T entity, Wrapper<T> wrapper);

    /**
     * <p>
     * 根据ID 批量更新
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    boolean updateBatchById(List<T> entityList);

    /**
     * <p>
     * 根据ID 批量更新
     * </p>
     *
     * @param entityList 实体对象列表
     * @param batchSize  更新批次数量
     * @return boolean
     */
    boolean updateBatchById(List<T> entityList, int batchSize);

    /**
     * <p>
     * 根据ID 批量更新全部字段
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    boolean updateAllColumnBatchById(List<T> entityList);

    /**
     * <p>
     * 根据ID 批量更新全部字段
     * </p>
     *
     * @param entityList 实体对象列表
     * @param batchSize  更新批次数量
     * @return boolean
     */
    boolean updateAllColumnBatchById(List<T> entityList, int batchSize);

    /**
     * <p>
     * TableId 注解存在更新记录,否插入一条记录
     * </p>
     *
     * @param entity 实体对象
     * @return boolean
     */
    boolean insertOrUpdate(T entity);

    /**
     * 插入或修改一条记录的全部字段
     *
     * @param entity 实体对象
     * @return boolean
     */
    boolean insertOrUpdateAllColumn(T entity);

    /**
     * <p>
     * 根据 ID 查询
     * </p>
     *
     * @param id 主键ID
     * @return T
     */
    T selectById(Serializable id);

    /**
     * <p>
     * 查询(根据ID 批量查询)
     * </p>
     *
     * @param idList 主键ID列表
     * @return List<T>
     */
    List<T> selectBatchIds(Collection<? extends Serializable> idList);

    /**
     * <p>
     * 查询(根据 columnMap 条件)
     * </p>
     *
     * @param columnMap 表字段 map 对象
     * @return List<T>
     */
    List<T> selectByMap(Map<String, Object> columnMap);

    /**
     * <p>
     * 根据 Wrapper,查询一条记录
     * </p>
     *
     * @param wrapper 实体对象
     * @return T
     */
    T selectOne(Wrapper<T> wrapper);

    /**
     * <p>
     * 根据 Wrapper,查询一条记录
     * </p>
     *
     * @param wrapper {@link Wrapper}
     * @return Map<String,Object>
     */
    Map<String, Object> selectMap(Wrapper<T> wrapper);

    /**
     * <p>
     * 根据 Wrapper,查询一条记录
     * </p>
     *
     * @param wrapper {@link Wrapper}
     * @return Object
     */
    Object selectObj(Wrapper<T> wrapper);

    /**
     * <p>
     * 根据 Wrapper 条件,查询总记录数
     * </p>
     *
     * @param wrapper 实体对象
     * @return int
     */
    int selectCount(Wrapper<T> wrapper);

    /**
     * <p>
     * 查询列表
     * </p>
     *
     * @param wrapper 实体包装类 {@link Wrapper}
     * @return
     */
    List<T> selectList(Wrapper<T> wrapper);

    /**
     * <p>
     * 翻页查询
     * </p>
     *
     * @param page 翻页对象
     * @return
     */
    Page<T> selectPage(Page<T> page);

    /**
     * <p>
     * 查询列表
     * </p>
     *
     * @param wrapper {@link Wrapper}
     * @return
     */
    List<Map<String, Object>> selectMaps(Wrapper<T> wrapper);

    /**
     * <p>
     * 根据 Wrapper 条件,查询全部记录
     * </p>
     *
     * @param wrapper 实体对象封装操作类(可以为 null)
     * @return List<Object>
     */
    List<Object> selectObjs(Wrapper<T> wrapper);

    /**
     * <p>
     * 翻页查询
     * </p>
     *
     * @param page    翻页对象
     * @param wrapper {@link Wrapper}
     * @return
     */
    @SuppressWarnings("rawtypes")
    Page<Map<String, Object>> selectMapsPage(Page page, Wrapper<T> wrapper);

    /**
     * <p>
     * 翻页查询
     * </p>
     *
     * @param page    翻页对象
     * @param wrapper 实体包装类 {@link Wrapper}
     * @return
     */
    Page<T> selectPage(Page<T> page, Wrapper<T> wrapper);

}

 

标签:教程,return,param,boolean,plus,Wrapper,mybatis,import,com
From: https://blog.51cto.com/u_16082902/6213844

相关文章

  • mybatis-plus-方法
    /***Copyright(c)2011-2016,hubin([email protected]).*<p>*LicensedundertheApacheLicense,Version2.0(the"License");youmaynot*usethisfileexceptincompliancewiththeLicense.Youmayobtainacopyof*theLicenseat......
  • PostMan:教程
    新版:Scope:server     PostMan  地址栏:1329323.1326238.342123.24323:8080/coafsafstTsdywaerweape/39这是接口地址,即所需要测试的项目地址 地址栏前的DELETE是请求方式请求方式有四种POst、GET、put、delete 如果无需附带参数直接点击send发送请求 地址栏下共两排第一排......
  • DVWA(全级别通关教程详解)
    BruteForce(burp密码爆破 章节省略)CommandInjection1. 解决乱码问题 找到(phpstudy_pro/WWW/DVWA/dvwa/includes  下的page.php的文件,将utf-8字符全部改为gb2312字符)2. 输入自己想知道的信息的命令,eg:127.0.0.1&ipconfig127.0.0.1&systeminfo127.0.0.1&dirCSRF1......
  • 洪君:mybatis plus012:增删改查 洪君
    plus的pom依赖:替代原mybatis<!--mybatisplus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>2.1.9</version></d......
  • Appuploader证书申请教程
    转载:http://kxdang.com/topic/appuploader/certification.htmlIOS证书制作教程点击苹果证书按钮点击新增输入证书密码,名称这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到,忘记了只能删除证书重新制作,所以请务必记住密码。还......
  • Appuploader证书申请教程
    转载:http://kxdang.com/topic/appuploader/certification.htmlIOS证书制作教程点击苹果证书按钮点击新增输入证书密码,名称这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到,忘记了只能删除证书重新制作,所以请务必记住密码。还......
  • Three.js教程:顶点位置数据解析渲染
    推荐:将NSDT场景编辑器加入你3D工具链其他工具系列:NSDT简石数字孪生顶点位置数据解析渲染如果你没有WebGL基础,可以先不用记忆每个的threejs具体内容,有一个大致印象即可,学习本节课的重点是建立顶点的概念。如果你建立了顶点的概念,那么对于你深入理解学习Three.js很有帮助。如果......
  • WCF教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Windows通讯开发平台(WindowsCommunicationFoundation,简称WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows通讯开发平台。整合了原有的windows通讯的.netRemoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布......
  • 升级element-plus
    之前用的是  "element-plus":"^1.0.2-beta.53"版本,什么都处理好了,但是会el-select里面使用v-if的时候控制台会报错查询以后我升级到:"element-plus":"^1.2.0-beta.6"不敢升级太高,毕竟项目快做完了,升级稳定版坑太多了,一个个补来不及,只能先小升级一下,升级后如下问题:el-selec......
  • JMeter入门教程(6) --脚本添加
    文章目录1.添加线程组2.添加HTTPCookie管理器3.添加HTTP请求默认值4.添加HTTP请求5.添加查看结果树1.添加线程组1.创建JMeter测试计划的第一步就是添加线程组测试元件。线程组会告诉JMeter需要模拟的并发用户数,以及并发用户发送请求的频率和数目。要添加线程组,首先选中测试计划,......