一.新增员工

二.代码
package com.gjw.mapper;import com.gjw.pojo.Emp;
import org.apache.ibatis.annotations.*;import java.time.LocalDate;
import java.util.List;@Mapper
public interface EmpMapper {// 根据ID删除数据@Delete("delete from emp where id = #{id}")
// public void delete(Integer id);// delete方法其实是有返回值的,其返回值代表此次操作影响的记录数public int delete(Integer id);// 插入数据// 主键返回注解,如果要拿到当前插入的数据的id,就要添加Options注解。useGeneratedKeys = true,是否拿到主键返回。// keyProperty = "id"代表返回回来的主键往emp对象的哪个属性中封装@Options(useGeneratedKeys = true, keyProperty = "id")@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" +" values (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")public void insert(Emp emp);
}
emp类
package com.gjw.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.time.LocalDate;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {private Integer id; //IDprivate String username; //用户名private String password; //密码private String name; //姓名private Short gender; //性别, 1 男, 2 女private String image; //图像urlprivate Short job; //职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师'private LocalDate entrydate; //入职日期private Integer deptId; //部门IDprivate LocalDateTime createTime; //创建时间private LocalDateTime updateTime; //修改时间
}
单元测试代码
package com.gjw;import com.gjw.mapper.EmpMapper;
import com.gjw.pojo.Emp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;@SpringBootTest
class SpringbootMybatisCrudApplicationTests {@Autowiredprivate EmpMapper empMapper;@Testvoid contextLoads() {}@Testpublic void testDelete() {
// empMapper.delete(17);int delete = empMapper.delete(16);System.out.println(delete); // id = 17的记录以及删除过了,因此此次delete删除操作影响的记录数为0}@Testpublic void testInsert() {Emp emp = new Emp();emp.setUsername("Tom2");emp.setName("汤姆2");emp.setImage("1.jpg");emp.setGender((short)1);emp.setJob((short)1);emp.setEntrydate(LocalDate.of(2000,1,1));emp.setCreateTime(LocalDateTime.now());emp.setUpdateTime(LocalDateTime.now());emp.setDeptId(1);// 执行新增员工的操作empMapper.insert(emp);}
}
如果有多个参数,我们可以使用实体类将多个参数封装起来,然后在SQL语句中使用#{}这种参数占位符的形式来获取对象当中的属性,#{}当中使用的是属性名。
三.主键返回
使用场景:

实现:

@Options(useGeneratedKeys = true, keyProperty = "id")@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" +" values (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")public void insert(Emp emp);