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日

相关文章

  • Java8之函数式接口及常用函数式接口讲解

    Java8之函数式接口及常用函数式接口讲解 什么是函数式接口? 在Java 8中,函数式接口是指只有一个抽象方法的接口。函数式接口可以被赋值为Lambda表达式,因此这种接口也被称为Lambda接口。 Java 8之前的版本中,我们通常使用匿名内部类实现类似的功能。这样使用匿名内部类虽然可以达到类似Lambda表达式的效果,但是语法较为冗长,读起来也不够清爽…

    Java 2023年5月26日
    00
  • JFinal极速开发框架使用笔记分享

    JFinal极速开发框架使用笔记分享 JFinal是基于Java语言的极速开发框架,具有简单易用、高效、灵活等特点。本文将详细讲解使用JFinal开发Web应用的全过程。 第一步,环境准备 使用JFinal需要先进行环境准备: Java环境:JFinal要求 JDK 版本必须是 1.6 及以上,推荐使用 JDK 1.8。 Maven环境:使用 Maven 可…

    Java 2023年5月20日
    00
  • Java Apache Commons报错“SAXNotRecognizedException”的原因与解决方法

    “SAXNotRecognizedException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的SAX属性:如果SAX属性无效,则可能会出现此错误。在这种情况下,需要检查SAX属性以解决此问题。 无效的SAX特性:如果SAX特性无效,则可能会出现此错误。在这种情况下,需要检查SAX特性以解决此问题。 以下是两个…

    Java 2023年5月5日
    00
  • Springboot项目平滑关闭及自动化关闭脚本

    下面是详细讲解“Spring Boot 项目平滑关闭及自动化关闭脚本”的完整攻略: 什么是 Spring Boot 项目平滑关闭? Spring Boot 项目平滑关闭是指在关闭 Spring Boot 项目时会先等待当前请求处理完成再关闭应用程序。这样可以保证处理请求的过程不被中断。 如何实现 Spring Boot 项目平滑关闭? 使用 actuator…

    Java 2023年5月20日
    00
  • JavaWeb登录界面登录失败在同一页面进行提示的解决

    JavaWeb登录界面登录失败在同一页面进行提示的解决 当用户在JavaWeb应用程序中的登录界面输入错误的用户名或密码时,我们需要给与用户提示以完成用户友好体验。该过程有多种方法可以完成,其中一种方法是在同一页面上进行提示。本文将讲解如何在同一页面上显示登录失败的提示信息。 第一步:页面设计我们需要在登录页面添加一个div元素,将错误信息放在里面。但是在一…

    Java 2023年6月15日
    00
  • java的时间类汇总(齐全)

    Java的时间类汇总(齐全): Java是一门强大的编程语言,其中时间类也是其核心组成部分之一。在Java中,时间类主要分为以下几种: 1. java.util包中的Date类 Date类是Java中最基础的时间类。它代表时间和日期的基本构建块,可以表示从1970年1月1日的00:00:00 GMT开始的时间。Date类可以处理的时间范围是公元前 337年 …

    Java 2023年5月20日
    00
  • Spring Boot 底层原理基础深度解析

    下面我将详细讲解“Spring Boot 底层原理基础深度解析”的完整攻略。本攻略将分为以下几个部分: 什么是Spring Boot Spring Boot的核心概念及技术栈 Spring Boot的启动流程详解 Spring Boot的自动化配置原理 示例一:使用Spring Boot构建一个简单的Web应用 示例二:使用Spring Boot集成MyBa…

    Java 2023年5月19日
    00
  • SpringMvc请求处理参数 和 响应数据处理的示例详解

    Spring MVC是一种基于Java的Web框架,它提供了一种灵活的方式来处理Web请求和响应。在Spring MVC中,我们可以使用多种方式来处理请求参数和响应数据。本文将详细介绍Spring MVC请求处理参数和响应数据处理的方法,并提供两个示例来说明这些方法的使用。 Spring MVC请求处理参数 在Spring MVC中,我们可以使用多种方式来处…

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