前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 集成 MybatisPlus 六——ActiveRecord 增、删、改

SpringBoot 集成 MybatisPlus 六——ActiveRecord 增、删、改

原创
作者头像
用户8100582
修改2023-11-04 22:30:55
2250
修改2023-11-04 22:30:55
举报
文章被收录于专栏:Java多线程Java多线程

1 向表中插入记录

1.1 插入所有列

在创建实体对象时,指定所有字段的内容,包括ID列。

代码语言:java
复制
@Test
public void testAddUser(){
    User user = new User(20, "成吉思汗", "男", "一代天骄");
    boolean res = user.insert();
    System.out.println(res);
}

调用 MyBatis Plus 时,后台执行的SQL如下:

==>  Preparing: INSERT INTO user ( id, username, gendar, remark ) VALUES ( ?, ?, ?, ? ) ==> Parameters: 20(Integer), 成吉思汗(String), 男(String), 一代天骄(String) <==    Updates: 1

1.2 插入非自动增长列

在创建实体对象时,仅指定非ID字段的内容,因为我们的ID列设置了自动增长,因些在插入数据时不需要指定内容。

代码语言:java
复制
@Test
public void testAddUser2(){
    User user = new User();
    user.setUsername("李世民");
    user.setGendar("男");
    user.setRemark("唐太宗");
    boolean res = user.insert();
    System.out.println(res);
}

调用 MyBatis Plus 时,后台执行的SQL如下:

==>  Preparing: INSERT INTO user ( username, gendar, remark ) VALUES ( ?, ?, ? ) ==> Parameters: 李世民(String), 男(String), 唐太宗(String) <==    Updates: 1

2 修改记录

2.1 根据ID修改记录

在创建对象时,需要指定ID,及想要修改后的内容即可。

如要修改ID为21的记录,修改 remark 内容改为“唐宗宋祖”:

代码语言:java
复制
@Test
public void testUpdateUserByID(){
    User user = new User();
    user.setRemark("唐宗宋祖");
    user.setId(21);
    boolean res = user.updateById();
    System.out.println(res);
}

调用 MyBatis Plus 时,后台执行的SQL如下:

==>  Preparing: UPDATE user SET remark=? WHERE id=? ==> Parameters: 唐宗宋祖(String), 21(Integer) <==    Updates: 1

注意:

通过ID修改记录时:

  • 如果设置的ID不存在,并不会报错,只是修改成功的记录数为0;

==>  Preparing: UPDATE user SET remark=? WHERE id=? ==> Parameters: 唐宗宋祖(String), 22(Integer) <==    Updates: 0

  • 如果在对象中没有设置ID值,将会报错:

updateById primaryKey is null.

2.2 根据查询条件修改记录

这里需要使用 QueryWrapper对象,根据指定字段内容查询对应记录,并修改查询记录中的内容。QueryWrapper的使用方法与 MyBatisPlus 中完全相同。具体可参考之前的系列文章。

如:修改 username 为 成吉思汗 的 remark 列为 草原雄鹰:

后台执行的SQL语句为

==>  Preparing: UPDATE user SET remark=? WHERE (username = ?) ==> Parameters: 草原雄鹰(String), 成吉思汗(String) <==    Updates: 1

数据库修改成功

3 删除记录

3.1 根据ID删除记录

3.1.1 在程序中指定要删除的记录ID

创建的对象中没有设置任何属性,但是在删除记录时,需要使用有参方法 deleteById(Serializable id) 指定记录ID进行删除:

代码语言:java
复制
@Test
pubjlic void testDeleteUserByID(){
    User user = new User();
    boolean res = user.deleteById(21);
    System.out.println(res);
}

3.1.2 在对象中设置要删除的记录ID

在创建的实体对象中,设置了记录的ID,此时可以调用无参方法 deleteById()删除记录。

代码语言:java
复制
@Test
public void testDeleteUserByID2(){
    User user = new User();
    user.setId(21);
    boolean res = user.deleteById();
    System.out.println(res);
}

3.1.3 异常

如果在使用该方法删除记录时,无论通过哪种方法,都没有指定要删除记录的ID,程序在执行后,将报错,信息如下:

com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: deleteById primaryKey is null.

3.2 根据查询条件删除记录

需要使用 QueryWrapper对象,根据指定筛选条件查询数据库记录,并将查询到的记录进行删除。

执行时输出的SQL如下:

==>  Preparing: DELETE FROM user WHERE (username = ?) ==> Parameters: 成吉思汗(String) <==    Updates: 1

记录删除成功

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 向表中插入记录
    • 1.1 插入所有列
      • 1.2 插入非自动增长列
      • 2 修改记录
        • 2.1 根据ID修改记录
          • 2.2 根据查询条件修改记录
          • 3 删除记录
            • 3.1 根据ID删除记录
              • 3.1.1 在程序中指定要删除的记录ID
              • 3.1.2 在对象中设置要删除的记录ID
              • 3.1.3 异常
            • 3.2 根据查询条件删除记录
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档