`
Java_1010
  • 浏览: 8759 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mybatis-03-添加数据返回主键

 
阅读更多

在实际项目开发中很多情况下是需要获取新插入的数据的主键值。

在此已MySQL数据库的自增主键为例进行说明:

背景介绍:基础信息和数据库表结构信息请参见前面的文章。

 

1、mapper映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserSpace">
	<!-- 添加用户,返回主键 -->
	<insert id="addUserRetPrim" parameterType="com.wp.model.User">
		<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
			SELECT LAST_INSERT_ID()
		</selectKey>
		insert into user(username, sex, age, birthday, address)
		values(#{userName}, #{sex}, #{age}, #{birthDay}, #{address})
	</insert>
</mapper>

    注意:

    【selectKey】标签用于设置主键的返回方式。

      “resultType”:设置主键的返回类型。

      “order”:表示主键返回的时间。取值为:AFTER/BEFORE。“AFTER”表示在执行完成insert语句后返回此主键。“BEFORE”表示在指定insert语句之前返回此主键。

      “keyProperty”:表示在模型对象中的主键属性名称。在此模型对象中必须有此属性的get、set方法。

      【SELECT LAST_INSERT_ID()】是mysql查询最近插入数据库的主键语句。

 

2、测试文件:

package com.wp.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.wp.model.User;
import com.wp.util.DateUtil;


public class UserTest2 {

	@Test
	public void testAddUserRetPrim() {
		String resource = "mybatis-config.xml";
		try {
			InputStream inputStream = Resources.getResourceAsStream(resource);
			SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			SqlSession session = sessionFactory.openSession();
			
			Date birthDay = DateUtil.parseStrToFullDate("1993-10-04", "yyyy-MM-dd");
			User user = new User("李太白", 1, 306, birthDay, "北京市西城区西直门");
			
			System.out.println("插入前主键:" + user.getId());
			session.insert("UserSpace.addUserRetPrim", user);
			session.commit();
			System.out.println("end....");
			session.close();
			System.out.println("插入后主键:" + user.getId());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

 

3、测试结果及数据库结果:



 

 

 

 

 

 

 

 

         

  • 大小: 157.5 KB
  • 大小: 79.8 KB
分享到:
评论

相关推荐

    mybatis-plus案例

    内置的Page对象提供了分页查询的支持,只需要传入当前页和每页数量,Mybatis-Plus会自动处理分页SQL,返回包含总记录数和分页结果的对象。 9. **自定义拦截器** 如果有特定的SQL优化需求,Mybatis-Plus允许我们...

    mybatis-plus-demo.zip

    MyBatis-Plus 是 MyBatis 的一个扩展,它简化了 CRUD 操作,提供了丰富的查询API,使得在基于 SpringBoot 的应用中实现数据操作变得更加便捷。在这个名为 "mybatis-plus-demo.zip" 的压缩包文件中,我们可以看到一个...

    mybatis-plus id主键生成的坑

    然而,当主键类型被误设为 Integer 而不是 Long 或其他能容纳更大数值的数据类型时,可能会出现异常。例如,错误信息 "Could not set property 'id' of 'class ...

    mybatis-plus增删改查分页

    在查询时,将Page对象作为参数传递,Mybatis-Plus会自动处理分页逻辑,返回结果中包含了总记录数和分页数据。 5. **Lambda表达式支持** Mybatis-Plus提供了LambdaQueryWrapper,使用Java 8的Lambda表达式进行条件...

    mybatis-plus实战.zip

    而MyBatis-Plus作为一个MyBatis的增强工具,它在MyBatis的基础上做了很多简化操作,提供了更便捷的数据操作方式。本篇将详细讲解如何在SpringBoot项目中集成并实战MyBatis-Plus,旨在帮助开发者高效地进行数据访问层...

    mybatis-plus学习demo(一)

    在Controller层,我们会编写处理HTTP请求的方法,这些方法会调用Service层的方法,将数据返回给前端。 7. **运行与测试** 编写完代码后,启动Spring Boot应用,通过发送HTTP请求测试数据库操作是否正常。例如,...

    MybatisPlus中插入数据获取主键值示例代码

    当主键类型为整型并且设置了自增属性时,MybatisPlus会在插入数据后自动返回主键值。有两种方式可以获取这个值: 1. 使用`@TableId`注解:在实体类中,你可以通过在主键字段上添加`@TableId`注解来声明主键,并指定...

    mybatis-plus案例 方法 一系列配置 增删改查

    - `selectList()`:通过Wrapper构造查询条件,返回符合条件的数据列表。 - `selectOne()`:通过Wrapper构造查询条件,返回单条数据。 使用Lambda表达式可以进一步简化代码,例如: ```java User user = userMapper...

    使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id值不存在异常)

    总之,避免 MyBatis-Plus 插入时的“id 值不存在异常”,关键在于正确地配置 `@TableId` 注解,以及确保插入的数据类型与数据库中的字段类型匹配。同时,根据业务需求选择合适的主键生成策略,如手动输入、自增等。...

    Spring整合MyBatis-Plus完整案例项目代码

    MyBatis-Plus(简称MP)是对MyBatis的扩展,它在MyBatis的基础上提供了更便捷的CRUD操作,如自动填充主键、自动处理空值、条件构造器等。MP的核心思想是简化SQL操作,让开发者能够更加专注于业务逻辑的实现,而不是...

    mybatis-plus第二篇文章演示的demo案例

    集成 MyBatis-Plus 只需在配置文件中添加相关依赖和配置,如数据源、MyBatis-Plus 配置等。 接下来,我们将按照以下步骤进行案例演示: 1. **创建项目**:使用 Maven 或 Gradle 创建一个新的 SpringBoot 项目,...

    springBoot+Mybatis-plus

    1. **集成配置**:在SpringBoot的配置文件中添加Mybatis-Plus的配置,如数据库连接信息。 2. **Mapper接口**:创建继承自BaseMapper的Mapper接口,无需编写XML文件,Mybatis-Plus会自动生成对应的SQL。 3. **...

    MyBatis-Plus使用-CRUD接口.docx

    在使用 MyBatis-Plus 进行数据操作时,主要涉及到两个层面:Mapper 层和 Service 层。本篇文章将重点介绍 Service 层的 CRUD 接口及其用法。 首先,CRUD 接口是 MyBatis-Plus 提供的一套通用服务接口,主要用于简化...

    基于springmvc + mybatis-plus的java项目, 模板代码controller,service,.zip

    MyBatis-Plus提供了很多实用的功能,例如:自动CRUD操作,条件构造器,批量插入,主键自动生成,结果映射,乐观锁,多数据源切换等。它的出现大大减少了我们在操作数据库时的代码量,提高了开发效率。 在这个项目中...

    spring Boot+mybatis-plus+Thymeleaf+MySql增删改查(含有分页+雪花Id)

    - 添加操作:通过 `DemoService.save(Demo demo)` 实现数据插入。 - 删除操作:可以按 ID 删除,如 `DemoService.removeById(id)`;也可以按条件删除,如 `DemoService.remove(new QueryWrapper().eq("name", ...

    管理系统系列--SpringBoot2.X整合MyBatis-Plus实现图书管理系统的增删改查.zip

    MyBatis-Plus是在MyBatis基础上进行的增强工具,它在MyBatis的基础上做了许多常用功能的封装,比如单表 CRUD 操作、条件构造器、批量插入、主键自增等,极大地提高了开发效率。MyBatis-Plus的主要特点包括: 1. ...

    mysql ,mybatis-plus , PageHelper 实现方式

    SpringBoot简化了Spring应用的初始搭建以及开发过程,它集成了大量的常用组件,包括数据访问层的JPA和MyBatis。对于MySQL的配置,只需在`application.properties`或`application.yml`文件中添加相应的数据库连接信息...

    mybatis-demo3-crud.zip

    通过上述步骤,我们可以使用MyBatis方便地进行单表查询,无论是获取全部数据,还是根据条件筛选,MyBatis都能提供高效、灵活的支持。在实际项目中,理解并熟练掌握这些基本操作,对于提升开发效率和代码质量有着至关...

    Mybatis-Plus BaseMapper的用法详解

    - **插入(Insert)**: 使用`insert()`或`insertOrUpdate()`方法插入数据,如果实体类中有自增主键并且没有赋值,Mybatis-Plus会自动处理。 - **更新(Update)**: `updateById()`根据ID更新整个实体,`update()`...

Global site tag (gtag.js) - Google Analytics