快速使用MybatisPlus:增删改查以及分页使用

编写:HorinJsor


前言

怕搞忘。


提示:以下是本篇文章正文内容,下面案例可供参考

一、MP是什么?

MP就是mybatis+。

 <!-- mybatis plus-->
 <dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.4.0</version>
 </dependency>

二、搭建步骤(以Eat板块为例)

1.创建实体类

代码如下(示例):
实体类与数据表不匹配需要注解声明

package com.example.thetoken.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;

@TableName("eat")
public class Eat implements Serializable {
    private static final long serialVersionUID = 791116844820696015L;
    @TableId(value = "eat_id", type = IdType.AUTO)
    private Integer eatId;

    private String eatName;

    private String eatType;

    private String eatTd;

    private String eatPlace;

    private String eatDesc;

    private Double eatPrice;

    @TableField(fill= FieldFill.INSERT)
    private Integer eatStatus;

    public Integer getEatStatus() {
        return eatStatus;
    }

    public void setEatStatus(Integer eatStatus) {
        this.eatStatus = eatStatus;
    }

    public Integer getEatId() {
        return eatId;
    }

    public void setEatId(Integer eatId) {
        this.eatId = eatId;
    }

    public String getEatName() {
        return eatName;
    }

    public void setEatName(String eatName) {
        this.eatName = eatName;
    }

    public String getEatType() {
        return eatType;
    }

    public void setEatType(String eatType) {
        this.eatType = eatType;
    }

    public String getEatTd() {
        return eatTd;
    }

    public void setEatTd(String eatTd) {
        this.eatTd = eatTd;
    }

    public String getEatPlace() {
        return eatPlace;
    }

    public void setEatPlace(String eatPlace) {
        this.eatPlace = eatPlace;
    }

    public String getEatDesc() {
        return eatDesc;
    }

    public void setEatDesc(String eatDesc) {
        this.eatDesc = eatDesc;
    }

    public Double getEatPrice() {
        return eatPrice;
    }

    public void setEatPrice(Double eatPrice) {
        this.eatPrice = eatPrice;
    }

    @Override
    public String toString() {
        return "Eat{" +
                "eatId=" + eatId +
                ", eatName='" + eatName + '\'' +
                ", eatType='" + eatType + '\'' +
                ", eatTd='" + eatTd + '\'' +
                ", eatPlace='" + eatPlace + '\'' +
                ", eatDesc='" + eatDesc + '\'' +
                ", eatPrice=" + eatPrice +
                ", eatStatus=" + eatStatus +
                '}';
    }

    @TableField(exist=false)
    private String price;

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}
常用注解作用
@TableName(value=“表名”)当表与实体类名称、驼峰转义不相同时使用。声明在类上。
@TableId(type=IdType.AUTO)声明自增主键 。
@TableField(exist=false)当实体类中存在非数据表字段,使用该注解过滤该字段
@TableField(fill=FieldFill.INSERT)插入数据时填充
@TableField(fill=FieldFill.INSERT_UPDATE)插入和更新数据时填充

2.创建Mapper接口

创建mapper接口类,继承 BaseMapper<实体类名>

@Mapper
public interface EatMapper extends BaseMapper<Eat> {
}

3.创建Service接口

创建service接口,继承 IService<实体类名>

public interface EatService extends IService<Eat>{
}

4.创建ServiceImpl实现类

创建ServiceImpl实现类,继承 ServiceImpl<mapper接口名,实体类名>,实现 Service

@Service
public class EatServiceImpl extends ServiceImpl<EatMapper, Eat> implements EatService {
    @Autowired
    private EatMapper eatMapper;
}

三、分页插件的使用步骤

1.创建一个配置类

建议创建一个config的包,专门用于存放配置类。
注意:@MapperScan @Configuration这大注解必不可少。

@Configuration
@MapperScan("com.example.md5test.mapper")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}

2.1 使用QueryWrapper分页查询

场景:分页查询名字包含江的用户列表:


service:

  • 返回类使用Ipage<实体类> 的形式
  • 入参首个参数一定要为Page类
IPage<User> selctUser(Page page,String name);

serviceImpl:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public Page<User> selctUser(Page page,String name) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.
                like("user_name",name);
        return userMapper.selectPage(page,queryWrapper);
    }
}

调用:

@Test
    void findUserLikeName(){
        Page page = new Page(1,5);
        IPage<User> horin = userService.selctUser(page, "江");
    }

2.2 自定义分页查询

场景:分页查询名字包含江的用户列表:


mapper.xml:

<?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.example.md5test.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.example.md5test.domain.User">
    <id property="id" column="id" />
    <result property="user_account" column="userAccount" />
    <result property="user_password" column="userPassword" />
    <result property="user_name" column="userName" />
    <result property="user_state" column="userState" />
    </resultMap>

    <select id="selectUser" parameterType="java.lang.String" resultMap="BaseResultMap">
        SELECT
        *
        FROM
        `user`
        <where>
            <if test="name !=null and name !='' ">
                AND user_name like #{name}
            </if>
        </where>
    </select>
    
</mapper>

mapper接口:

  • 接口入参首个参数一定是Page类
  • 注意用@Param配置别名
  • 返回类为IPage<实体类>
@Mapper
public interface UserMapper extends BaseMapper<User> {
    IPage<User> selectUser2(@Param("page") Page page,@Param("name") String name);
}

service:

IPage<User> selctUser2(Page page,String name);

serviceImpl

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public IPage<User> selctUser2(Page page, String name) {
        return userMapper.selectUser2(page, name);
    }
}

特别篇:

官网文档:条件构造器


总结

冲。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值