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进行删除:
@Test
pubjlic void testDeleteUserByID(){
User user = new User();
boolean res = user.deleteById(21);
System.out.println(res);
}
3.1.2 在对象中设置要删除的记录ID
在创建的实体对象中,设置了记录的ID,此时可以调用无参方法 deleteById()
删除记录。
@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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!