目录
承接上文 详解MyBatis(一)
1.MyBatis的基本操作
1.1增(Insert)
SQL语句:
insert into userinfo (username, `password`, age, gender, phone) values
("zhaoliu","zhaoliu",19,1,"18700001234")
Mapper接口:
把SQL中的常量替换为动态的参数,直接使⽤UserInfo对象的属性名来获取参数
@Insert("insert into userinfo (username, `password`, age, gender, phone) values (#{username}, #{password}, #{age}, #{gender}, #{phone})")
Integer insert(UserInfo userInfo);
测试代码:
@Test
void insert() {
UserInfo userInfo = new UserInfo();
userInfo.setUsername("zhaoliu");
userInfo.setPassword("zhaoliu");
userInfo.setGender(2);
userInfo.setAge(21);
userInfo.setPhone("18612340005");
userInfoMapper.insert(userInfo);
}
运行后, 观察数据库执行结果:
1.1.1返回主键
Insert 语句默认返回的是 受影响的行数
但有些情况下, 数据插入之后, 还需要有后续的关联操作, 需要获取到新插入数据的id
如订单系统、我们下完订单之后, 需要通知物流系统, 库存系统等, 这时候就需要拿到订单ID
如果想要拿到自增id, 需要在Mapper接口的方法上添加⼀个Options的注解:
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into userinfo (username, age, gender, phone) values (#{userinfo.username}, #{userinfo.age}, #{userinfo.gender}, #{userinfo.phone})")
Integer insert(UserInfo userInfo);
`useGeneratedKeys` 是 MyBatis 中的一个属性设置。 当设置为 `true` 时,它表示在执行插入操作后,希望获取由数据库自动生成的主键值(如果存在)并将其设置到插入对象对应的属性中。这样可以方便地获取到新插入记录的主键值,以便后续进行相关操作。
当在 MyBatis 的配置文件中设置了`useGeneratedKeys=true`时,表示使用数据库的自增主键。而keyProperty属性则用于将自动生成的主键与实体类的属性进行绑定。通过将keyProperty设置为实体类中对应的属性名,MyBatis 会在执行插入操作后,将自动生成的主键值赋给该属性
例如,如果实体类中有一个名为id的属性用于存储主键值,可以将keyProperty设置为
"
id"
。
测试代码:
@Test
void insert() {
UserInfo userInfo = new UserInfo();
userInfo.setUsername("Romised");
userInfo.setPassword("Romised");
userInfo.setGender(2);
userInfo.setAge(22);
userInfo.setPhone("1525523111");
Integer count = userInfoMapper.insert(userInfo);
System.out.println("添加数据条数:" +count +", 数据ID:" + userInfo.getId());
}
运行结果:
1.2删(Delete)