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 } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?