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

2023-11-04 22:30:55 浏览数 (2)

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞