在创建实体对象时,指定所有字段的内容,包括ID列。
@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
在创建实体对象时,仅指定非ID字段的内容,因为我们的ID列设置了自动增长,因些在插入数据时不需要指定内容。
@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
在创建对象时,需要指定ID,及想要修改后的内容即可。
如要修改ID为21的记录,修改 remark 内容改为“唐宗宋祖”:
@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修改记录时:
==> Preparing: UPDATE user SET remark=? WHERE id=? ==> Parameters: 唐宗宋祖(String), 22(Integer) <== Updates: 0
updateById primaryKey is null.
这里需要使用 QueryWrapper
对象,根据指定字段内容查询对应记录,并修改查询记录中的内容。QueryWrapper
的使用方法与 MyBatisPlus 中完全相同。具体可参考之前的系列文章。
如:修改 username 为 成吉思汗 的 remark 列为 草原雄鹰:
后台执行的SQL语句为
==> Preparing: UPDATE user SET remark=? WHERE (username = ?) ==> Parameters: 草原雄鹰(String), 成吉思汗(String) <== Updates: 1
数据库修改成功
创建的对象中没有设置任何属性,但是在删除记录时,需要使用有参方法 deleteById(Serializable id)
指定记录ID进行删除:
@Test
pubjlic void testDeleteUserByID(){
User user = new User();
boolean res = user.deleteById(21);
System.out.println(res);
}
在创建的实体对象中,设置了记录的ID,此时可以调用无参方法 deleteById()
删除记录。
@Test
public void testDeleteUserByID2(){
User user = new User();
user.setId(21);
boolean res = user.deleteById();
System.out.println(res);
}
如果在使用该方法删除记录时,无论通过哪种方法,都没有指定要删除记录的ID,程序在执行后,将报错,信息如下:
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: deleteById primaryKey is null.
需要使用 QueryWrapper
对象,根据指定筛选条件查询数据库记录,并将查询到的记录进行删除。
执行时输出的SQL如下:
==> Preparing: DELETE FROM user WHERE (username = ?) ==> Parameters: 成吉思汗(String) <== Updates: 1
记录删除成功
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。