Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法

Mybatis-Plus是一个基于Mybatis的ORM框架,提供了很多便捷的操作数据库的方法,其中实体类注解方法常用于简化CRUD操作。下面将详细讲解Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法的完整攻略。

1. 实体类注解方法

Mybatis-Plus实体类注解方法主要是使用注解来简化常规的数据库操作,包括字段映射、自动填充、基本操作等。

下面是一些常用的注解方法:

1.1 @TableName

用于指定实体对应的数据库表名,如果不指定,则默认使用实体类的类名。

@TableName("user")
public class User {
  // ...
}

1.2 @TableField

用于指定实体字段对应的数据库表字段名,如果不指定,则默认使用实体字段的名称。

@TableField(value = "username", exist = true)
private String name;

1.3 @TableId

用于指定实体对应的数据库表主键,如果不指定,则默认使用名为"id"的字段作为主键。

@TableId(value = "id", type = IdType.AUTO)
private Long id;

1.4 @TableLogic

用于指定逻辑删除字段的属性,当字段值为指定值时,表示该记录已被删除。如果不指定,则默认使用名为"deleted"的字段作为逻辑删除字段。

@TableLogic(value = "1", delval = "0")
private Integer deleted;

1.5 @Version

用于指定乐观锁的属性,当该属性值为null或0时,表示未加锁;非null且大于0时,表示已加锁。

@Version
private Integer version;

2. Mapper层的CRUD方法

Mybatis-Plus提供了丰富的Mapper层操作方法,可以满足大部分数据库操作需求。

下面是常用的Mapper层方法:

2.1 基本操作方法

提供insert、deleteById、updateById、selectById等基本CRUD操作方法。

public interface UserMapper extends BaseMapper<User> {
}

2.2 自定义操作方法

提供自定义SQL实现的方法,例如通过用户名查询用户。

public interface UserMapper extends BaseMapper<User> {
  @Select("select * from user where name=#{name}")
  User selectByName(@Param("name") String name);
}

2.3 分页查询方法

提供分页查询的方法,可以方便地进行分页查询操作。

public interface UserMapper extends BaseMapper<User> {
  IPage<User> selectPageVo(Page<?> page, @Param("state") Integer state);
}

3. Service层的CRUD方法

Service层是业务逻辑的主要入口,使用Mybatis-Plus实现CRUD操作也十分简单。

下面是常用的Service层方法:

3.1 基本操作方法

调用Mapper层的对应方法即可,例如deleteById、updateById等方法。

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

3.2 自定义操作方法

在Service层中扩展自定义的方法,调用Mapper层对应的方法即可。

public interface UserService extends IService<User> {
  User selectByName(String name);
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  @Override
  public User selectByName(String name) {
    return baseMapper.selectByName(name);
  }
}

3.3 分页查询方法

使用Mybatis-Plus提供的分页查询方法即可实现分页查询操作,调用Mapper层的对应方法即可。

public interface UserService extends IService<User> {
  IPage<User> getUserList(Page<User> page, Integer state);
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  @Override
  public IPage<User> getUserList(Page<User> page, Integer state) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("state", state);
    return baseMapper.selectPage(page, queryWrapper);
  }
}

示例

下面是两个示例,分别是使用实体类注解方法和基本操作方法实现对用户表的增删改查操作:

示例1:使用实体类注解方法

@TableName("user")
public class User {
  @TableId(value = "id", type = IdType.AUTO)
  private Long id;

  @TableField(value = "username")
  private String name;

  @TableField(value = "age")
  private Integer age;

  @TableField(value = "state")
  private Integer state = 1;

  @TableLogic(value = "0", delval = "1")
  private Integer deleted;

  @Version
  private Integer version;
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  @Override
  public User getUserById(Long id) {
    return getById(id);
  }

  @Override
  public List<User> getUserList() {
    return list();
  }

  @Override
  public boolean saveUser(User user) {
    return save(user);
  }

  @Override
  public boolean updateUser(User user) {
    return updateById(user);
  }

  @Override
  public boolean deleteUser(Long id) {
    return removeById(id);
  }
}

示例2:使用基本操作方法

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  @Override
  public User getUserById(Long id) {
    return getById(id);
  }

  @Override
  public List<User> getUserList() {
    return list();
  }

  @Override
  public boolean saveUser(User user) {
    return save(user);
  }

  @Override
  public boolean updateUser(User user) {
    return updateById(user);
  }

  @Override
  public boolean deleteUser(Long id) {
    return removeById(id);
  }
}

以上就是Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot统一返回JSON格式实现方法详解

    根据你给出的主题,我将为你提供一个完整的 Spring Boot 统一返回 JSON 格式的实现方法攻略。 什么是 Spring Boot 统一返回 JSON 格式 Spring Boot 是一种基于 Spring 框架的轻量级应用程序开发框架,它可以非常快速地构建 Web 应用程序和 RESTful 服务。随着 RESTful 服务的流行,Spring B…

    Java 2023年5月20日
    00
  • HTML实现title 属性换行小技巧

    当我们在HTML标记中使用title属性时,有时候需要在倒数第二个单词之后添加一个换行符。这个时候我们可以用一些小技巧来完成。 方法一:使用实体字符 HTML中有几个实体字符可以用于在title属性中添加换行: &#13; 或 &#x0D; 表示回车 &#10; 或 &#x0A; 表示换行 代码示例: <a href=&…

    Java 2023年6月15日
    00
  • Java中JavaBean对象和Map的互相转换方法实例

    JavaBean对象和Map之间的转换是Java中常见的操作。在处理数据时,我们可以将JavaBean转换为Map方便地获取属性值,也可以将Map转换为JavaBean以便于进行数据处理。接下来,我将为您提供一份JavaBean对象和Map的互相转换方法示例攻略。 JavaBean对象转换为Map 将JavaBean对象转换为Map可以使用Java中的反射技…

    Java 2023年5月26日
    00
  • jquery在启动页面时,自动加载数据的实例

    让我为您详细讲解一下“jquery在启动页面时,自动加载数据的实例”的完整攻略。 1. 引入jquery库文件 在网站的HTML文件中需要引入jquery库文件,可以选择在线引入或本地引入。 在线引入: <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min…

    Java 2023年6月15日
    00
  • IDEA 非常重要的一些设置项(一连串的问题差点让我重新用回 Eclipse)

    下面是“IDEA 非常重要的一些设置项”的完整攻略。 1. 自动导入包的设置 开发中,我们需要使用很多的类。在使用类的时候,IDEA 会自动提示我们需要导入的包。但是,如果包的数量很多,我们可能会忘记导入某些包。 为了避免这种情况,我们可以设置 IDEA 在自动提示需要导入的包时,自动导入缺少的包。在 IDEA 的设置中,点击 Editor > Gen…

    Java 2023年5月20日
    00
  • android相册选择图片的编码实现代码

    下面我将详细讲解”Android相册选择图片的编码实现代码”的完整攻略。 一、前置知识 在实现”Android相册选择图片的编码”之前,需要掌握一些相关的前置知识,包括: Android中的Intent机制 Android中的Uri、Bitmap和File类 Android中的图片压缩技巧 二、实现步骤 在掌握了相关的前置知识后,下面我们来讲解”Androi…

    Java 2023年6月1日
    00
  • Java介绍多线程计算阶乘实现方法

    Java介绍多线程计算阶乘实现方法 多线程是Java编程语言中提供了一种处理器和其他资源的并行协作方式。它可以为程序员提供一种实现异步编程、并行代码以及提高程序性能的方式。本文将介绍在Java中如何通过多线程计算阶乘。 基本概念 阶乘是一个正整数的连乘积,如4! = 4 * 3 * 2 * 1 = 24。计算阶乘是一种高 CPU 使用率的密集计算,这意味着使…

    Java 2023年5月18日
    00
  • Netty分布式抽象编码器MessageToByteEncoder逻辑分析

    Netty是一个高性能、可扩展、可定制、易用的NIO框架,不仅支持传统的TCP和UDP协议,还支持HTTP、WebSocket等协议。Netty的分布式抽象编码器MessageToByteEncoder是其中非常重要的一个组件,下面将对其进行详细讲解。 1. MessageToByteEncoder的概述 MessageToByteEncoder是Netty…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部