1 向表中插入记录
1.1 插入所有列
在创建实体对象时,指定所有字段的内容,包括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
1.2 插入非自动增长列
在创建实体对象时,仅指定非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
2 修改记录
2.1 根据ID修改记录
在创建对象时,需要指定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修改记录时:
- 如果设置的ID不存在,并不会报错,只是修改成功的记录数为0;
==> Preparing: UPDATE user SET remark=? WHERE id=?
==> Parameters: 唐宗宋祖(String), 22(Integer)
<== Updates: 0
- 如果在对象中没有设置ID值,将会报错:
updateById primaryKey is null.
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.