Mybatis实现增、删、改操作时返回主键

需求:查询出刚刚插入(删除/修改)的记录的详细信息

  1、xxxMapper接口

1
2
3
4
5
6
7
public interface EmployeeMapper {
    // 添加操作
    public int insertEmployee(Employee employee);
 
    // 根据ID查询出一条记录
    public Employee queryEmployeeByEmployeeId(Integer employeeId);
}

  2、xxxMapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<mapper namespace="com.mybatis.dao.EmployeeMapper">
    // 插入一条记录
    // useGeneratedKeys:默认值是true,但是还是建议写上
    // keyProperty:将刚刚插入的记录的主键使用传入的Employee对象中的employeeId属性接收
    <insert id="insertEmployee" useGeneratedKeys="true" keyProperty="employeeId">
        INSERT INTO employee VALUES (null,#{employeeName},#{employeePassword},#{employeeAge},#{departmentId})
    </insert>
    // 根据employeeId查询Employee对象
    <select id="queryEmployeeByEmployeeId" resultType="com.mybatis.entity.Employee">
        SELECT EMPLOYEE_ID,EMPLOYEE_NAME,EMPLOYEE_PASSWORD,EMPLOYEE_AGE,DEPARTMENT_ID FROM employee
        WHERE EMPLOYEE_ID=#{employeeId}
    </select>
</mapper> 

  3、测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Test
    public void test01() throws IOException {
        SqlSession session = TestMybatis.openSession();
        EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
        Employee employee = new Employee();
        employee.setEmployeeName("田七");
        employee.setEmployeeAge("27");
        employee.setEmployeePassword("4456");
        employee.setDepartmentId(4);
        // 这里返回的是影响的行数
        int i = mapper.insertEmployee(employee);
        // 根据插入的id,查询出刚刚插入的记录,因为我们将插入的主键封装进了Employee对象的employeeId属性中
        Employee e = mapper.queryEmployeeByEmployeeId(employee.getEmployeeId());
        System.out.println(e);
    }

  4、测试结果

1
Employee{employeeId=9, employeeName='田七', employeePassword='4456', employeeAge='27', departmentId=4}

  

 

posted @   变体精灵  阅读(2024)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示