Advertisement

MyBatisPlus删除方法deleteById、deleteBatchIds、deleteByMap的使用示例代码

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:ZIP


简介:
MyBatisPlus是一款利用MyBatis的扩展框架,在数据操作方面提供了更为强大的API,从而简化了对数据库的操作流程。本次我们将详细解析其中的删除功能模块,并通过实际案例分析其具体实现方式,包括`deleteById`、`deleteBatchIds`和`deleteByMap`等主要方法。`deleteById`方法用于基于其唯一标识符删除对应的一条记录。当我们需要通过用户ID来删除一条记录时,可以调用该方法。例如,在调用该方法时,可以按照以下方式执行:假设我们有一个User实体类,其ID字段为`id`,那么我们可以如下调用`deleteById`:```java UserMapper mapper = sqlSession.getMapper(UserMapper.class); int result = mapper.deleteById(1L); 假设1L是User的主键ID ```该函数的返回值被标记为受影响的行数。如果删除操作成功,则返回数值1;否则,返回数值0。`deleteBatchIds`功能模块主要应用于执行批量删除操作,其核心在于基于输入的一组特定用户标识符集合来完成删除任务。例如,在实际操作中,当我们需要删除多个用户标识符时:```java List ids = Arrays.asList(1L, 2L, 3L); 需要删除的用户ID列表 int result = userMapper.deleteBatchIds(ids); ````deleteBatchIds`函数将一次性处理所有ID,并通过批量删除操作优化了整体的删除效率。`deleteByMap`方法基于一种映射关系的实现方式,在删除操作中通过指定条件进行筛选与去除非目标数据。其中映射关系的键值对为字段名与对应值的关系,例如在实际应用中我们可以通过该机制来高效地执行特定范围的数据清理工作。代码示例如下: const deleteMap = new Map({ username: john, }); deleteArray(deleteMap);```java Map map = new HashMap<>(); map.put(username, testUser); int result = userMapper.deleteByMap(map); ```该系统具有灵活性优势,但需要特别注意的是,在处理存在重复的数值时可能会导致大量重复记录被误删 在MyBatisPlus的抽象层面上实现了这些删除方法,在无需编写SQL语句的情况下显著提升了开发效率。这些方法均具备事务管理能力,可以确保操作的原子性。然而由于直接对数据库进行修改在使用时需格外谨慎以防止误删重要数据 总体而言,MyBatisPlus提供了三种删减功能:单条记录删除、批量处理多个ID以及灵活的条件筛选。`deleteById`适用于单独删除一条数据,而`deleteBatchIds`能够处理多个ID同时删减。通过Map设定实现精准删减。开发过程中,根据具体需求合理选择最适合的方法以提高效率并确保数据操作的安全性。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • MyBatisPlus全局Sql注入器应及逻辑
    优质
    本文将详细介绍如何在MyBatis-Plus框架中使用全局SQL注入器,并提供实现逻辑删除功能的具体示例代码。 MyBatisPlus中的全局Sql注入器应用以及逻辑删除功能的使用示例代码如下: 首先,在项目配置类或主启动类中添加以下注解开启全局SQL注入功能: ```java @MapperScan(com.example.demo.mapper) @Configuration public class MybatisConfig { @Bean public ISqlInjector sqlInjector() { return new MetaObjectHandlerSqlInjector(); } } ``` 其次,创建实体类并定义逻辑删除的字段。例如,我们可以在User表中添加一个名为`is_deleted`的布尔类型字段来表示该记录是否被逻辑删除: ```java @Data @TableName(user) public class User { @TableId(value = id, type = IdType.AUTO) private Long id; // 其他属性 /** * 0-未删除,1-已删除,默认值为0。 */ @TableLogic private Integer isDeleted; } ``` 接着,在Mapper接口中定义逻辑查询和更新方法: ```java @Mapper public interface UserMapper extends BaseMapper { // 基于MyBatisPlus的BaseMapper已提供了CRUD的基础操作,这里仅展示如何自定义一些额外的方法。 /** * 根据ID获取用户信息,并过滤掉已被逻辑删除的数据。 */ @Select(SELECT * FROM user WHERE id = #{id} AND is_deleted = 0) User selectById(@Param(id) Long id); } ``` 最后,在Service层调用Mapper方法进行数据操作: ```java @Service public class UserService { private final UserMapper userMapper; public UserService(UserMapper userMapper) { this.userMapper = userMapper; } /** * 根据ID查询用户信息。 */ public User getUserById(Long id) { return userMapper.selectById(id); } } ``` 以上就是MyBatisPlus全局SQL注入器及逻辑删除功能的基本使用方法。
  • MybatisPlus selectPage条件构造器
    优质
    本示例代码展示了如何使用MyBatis-Plus框架中的selectPage方法结合条件构造器进行高效分页查询。通过该示例,开发者可以掌握动态设置查询条件、排序规则及自定义参数的方法,实现灵活且强大的数据检索功能。 MybatisPlus条件构造器selectPage方法示例代码如下: ```java import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.stereotype.Service; @Service public class UserService { public Page getUserList(Page page, User user) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (user.getName() != null && !.equals(user.getName())) { queryWrapper.like(name, user.getName()); } return userService.page(page, queryWrapper); } } ``` 以上代码展示了如何使用MybatisPlus的条件构造器`QueryWrapper`结合分页对象`Page`来实现动态查询和分页功能。
  • VBA自动
    优质
    本示例展示如何使用VBA编写自动化脚本来高效地从Excel工作簿中识别并删除特定行或列。通过简单的函数应用,用户可以自定义规则来清除不必要的数据,优化表格结构与性能。 VBA自动删除代码实例:以下是一个使用VBA编写来实现自动删除特定内容的简单示例。 ```vba Sub AutoDeleteCode() Dim ws As Worksheet Dim lastRow As Long, i As Long 设置工作表对象 Set ws = ThisWorkbook.Sheets(Sheet1) 获取最后一行号 lastRow = ws.Cells(ws.Rows.Count, A).End(xlUp).Row 循环遍历每一行,删除特定条件的内容 For i = lastRow To 1 Step -1 If ws.Range(A & i) Like *要删除的关键词* Then ws.Rows(i).Delete End If Next i End Sub ``` 这段代码会检查工作表“Sheet1”中的第一列(即“A”列),如果单元格内容包含特定字符串,那么该行会被自动移除。注意在实际使用时需要替换掉`要删除的关键词`为具体的关键词,并且确保不会误删重要数据。 请根据实际情况调整代码以适应不同的需求和工作表结构。
  • springboot-mybatisplus.zip
    优质
    本资源包包含Spring Boot与MyBatis-Plus框架结合使用的示例代码,旨在帮助开发者快速搭建和使用高性能的后端服务。 《SpringBoot与MyBatisPlus整合实战详解》 在现代Java Web开发领域,SpringBoot凭借其便捷的集成、自动配置及快速启动等特点受到了广大开发者的一致好评。而作为MyBatis扩展工具的MyBatisPlus,则通过简化数据库操作进一步提升了开发效率。本段落将详细介绍如何在SpringBoot项目中引入并整合MyBatisPlus,以实现高效的数据访问。 一、SpringBoot简介 SpringBoot是一个基于Spring框架构建的轻量级开发平台,旨在简化应用初始搭建及后续开发流程。它内置了Tomcat服务器,并遵循“约定优于配置”的原则,能够快速生成独立且适用于生产环境的应用程序。 二、MyBatisPlus概述 作为MyBatis的功能增强版本,MyBatisPlus提供了更为强大的CRUD操作功能,包括无SQL主键自增、条件构造器以及分页插件等特性。它简化了数据库的操作流程,并减少了编写重复的SQL代码的需求,从而提升了开发效率。 三、整合准备 在开始进行SpringBoot与MyBatisPlus的集成前,请确保已安装好JDK环境并在项目中引入了相应的依赖项。您需要将以下内容添加到项目的pom.xml文件里: ```xml org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter 最新版本号 mysql mysql-connector-java runtime ``` 四、配置数据库连接 接下来,需要在application.properties或application.yml文件中指定数据库的连接信息: ```properties # application.properties 示例 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 五、创建实体类与Mapper接口 在SpringBoot项目中,首先定义代表数据库表结构的实体类以及与其对应的Mapper接口。MyBatisPlus会自动生成基础CRUD方法: ```java // User.java (实体类) public class User { private Integer id; private String name; // 省略getter和setter方法 } // UserMapper.java (Mapper接口) import com.baomidou.mybatisplus.mapper.BaseMapper; public interface UserMapper extends BaseMapper {} ``` 六、配置MyBatisPlus 在SpringBoot的配置类中,注入MyBatisPlus相关设置并启用分页功能: ```java @Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusConfig mybatisPlusConfig() { MybatisPlusConfig config = new MybatisPlusConfig(); config.setGlobalConfig(new GlobalConfig()); config.getGlobalConfig().setDbConfig(new DbConfig()); return config; } } ``` 七、使用MyBatisPlus 在Service或Controller层,可以通过注入Mapper接口来执行数据操作。例如,获取所有用户信息: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public List getAllUsers() { return userMapper.selectList(null); } } ``` 八、运行与测试 完成上述步骤后启动SpringBoot应用,并通过RESTful API或单元测试来验证MyBatisPlus的正确性。 总结,将SpringBoot和MyBatisPlus进行结合能够显著提高开发效率。只需简单的配置及依赖注入即可实现强大的数据库操作功能,掌握这种整合方法对日常Java Web项目开发大有裨益。
  • Python列表分享三
    优质
    本篇文章将分享三种使用Python语言进行列表元素删除的操作方法,并附有详细示例代码。适合编程初学者参考学习。 1. 使用 `del` 语句删除元素 ```python i1 = [a, b, c, d] del i1[0] print(i1) ``` 输出结果为: ``` [b, c, d] ``` 使用 `del` 语句从列表中移除一个值后,就无法再访问该元素了。 2. 使用 `pop()` 删除元素 `pop()` 方法可以删除列表末尾的元素,并允许你继续使用被删除的那个元素。这种方法的名字来源于这样的类比:将列表视为栈结构,那么删除最后一个元素的操作就像是从栈顶弹出一个元素一样。 ```python i1 = [cai, rui, handsome] i2 = i1.pop() print(i1) ``` 输出结果为: ``` [cai, rui] ``` 继续打印 `i2` 会得到被删除的那个值。
  • MyBatisPlus使updateById进行通CRUD操作
    优质
    本篇教程提供了在MyBatisPlus框架下利用`updateById`方法执行数据库记录更新的实例代码,适用于快速实现项目的增删改查功能。 MyBatisPlus中的通用CRUD提供了`updateById`方法的示例代码。这个方法用于根据主键ID更新实体对象。 以下是使用该方法的一个简单例子: 假设我们有一个名为User的实体类,它包含以下属性: - id(Long类型) - name(String类型) - age(Integer类型) 要使用MyBatisPlus的`updateById`方法来更新一个用户记录,可以按照如下步骤操作: 1. 创建一个新的User对象,并设置需要更新的数据。 2. 调用Mapper接口中的`updateById(User user)`方法。 示例代码如下: ```java // 导入必要的包 import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springframework.stereotype.Repository; @Repository public interface UserMapper extends BaseMapper { } // 更新用户信息的Service类或Controller中使用的方法 @Service public class UserService { @Autowired private UserMapper userMapper; public void updateUserById(Long id, String name) { // 创建一个新的User对象,设置需要更新的数据,并指定主键ID。 User user = new User(); user.setId(id); user.setName(name); // 调用updateById方法进行数据库中的数据更新 int result = userMapper.updateById(user); if (result > 0) { System.out.println(用户信息已成功更新); } else { System.out.println(未找到对应的用户记录,或更新失败); } } } ``` 以上代码展示了如何使用MyBatisPlus的`updateById`方法来根据主键ID进行数据库中的数据更新操作。
  • jQuery中获取和Cookie
    优质
    本文介绍了如何使用jQuery在网页中操作Cookie,包括获取特定Cookie值及删除指定Cookie的方法,并提供了具体代码示例。 在JavaScript的世界里,jQuery库提供了一种方便的方式来处理cookie,这对于网页存储临时数据或实现某些功能非常有用。本段落将深入探讨使用jQuery获取和删除cookie的方法及如何正确设置其属性。 一个典型的cookie通常包含以下四个关键属性: 1. **名称(Name)**:用来唯一识别该cookie。 2. **值(Value)**:与名称关联的数据,可以是任何字符串形式的信息。 3. **过期日期(Expires)**:定义了cookie何时被浏览器删除。它可以是一个具体的日期对象或相对于当前时间的天数表示。 4. **路径(Path)**:限制该cookie可见的URL路径,默认为网站根目录或其他特定目录。 5. **域名(Domain)**:确定可以访问此cookie的所有域名,通常应该与设置页面所在的域名一致。 6. **安全标志(Secure)**:如果启用,则只有在使用HTTPS协议时才会发送这个cookie。 jQuery中操作cookie的核心函数是`$.cookie()`。下面是一些基本的用法示例: - 读取指定名称的 cookie: `$.cookie(the_cookie);` - 存储带有值的新 cookie 或更新现有 cookie 的值:`$.cookie(the_cookie, the_value);` - 设置具有过期日期的 cookie(例如,7天后失效): `$.cookie(the_cookie, the_value, { expires: 7 });` - 删除指定名称的 cookie: `$.cookie(the_cookie, null);` 当使用`$.cookie()`函数时,默认情况下会采用当前页面路径和域名作为默认值。这可能会导致在不同路径或子域下,相同名称的 cookie 对应不同的值。例如,在设置一个位于特定目录下的 cookie 且未指定 path 属性,则该 cookie 的访问范围仅限于此目录。 为了确保所有页面都可以访问到cookie,需要明确地设置`path: /`来覆盖默认行为。此外,如果希望跨子域名共享cookie,必须使用包含所有相关子域的顶级域名作为 domain 参数值(例如:domain: example.com)。 下面提供了一个扩展 jQuery 的函数 `$.extend()` 用于创建一个更通用的 cookie 辅助工具: ```javascript $.extend({ cookieHelper: function(name, value, options) { if (typeof value != undefined) { // 设置或更新cookie options = options || {}; if (value === null) { value = ; options.expires = -1; } var expires = , path = , domain = , secure = ; if (options.expires && (typeof options.expires == number || options.expires.toUTCString)) { var date; if (typeof options.expires == number) { date = new Date(); date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); } else { date = options.expires; } expires += ; expires= + date.toUTCString(); } if (options.path) { path += ; path= + options.path; } if (options.domain) { domain += ; domain= + options.domain; } if (options.secure) { secure += ; secure; } document.cookie = [name, =, encodeURIComponent(value), expires, path, domain, secure].join(); } else { // 仅读取cookie var cookieValue = null; if (document.cookie && document.cookie !== ) { var cookies = document.cookie.split(;); for (var i = 0; i < cookies.length; i++) { var cookie = $.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + =)) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } } }); ``` 这个`cookieHelper`函数接受三个参数:cookie的名称、值和可选配置对象。它支持设置或更新cookie,并且可以处理所有相关的属性,包括过期时间等。 通过正确理解和使用jQuery中的这些方法,开发者能够更有效地利用cookies来存储临时数据及用户信息,从而提高网页应用的功能性和用户体验。