keyProperty="id" 3: keyProperty 这个设置的是 你传入对象的属性名,不是你数据表的字段 如果以上情况都满足,那么你很有可能犯了一个和我一样的错误 网上大部分教程在写 insert...对象并返回自增主键的 demo 的时候,都是直接传入对象,而没有用@Param注解 其实他们的区别在这里 keyProperty="id" 如果你不用 @Param注解 ,那么你在 #{xxx}里写的是
一、前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅。...对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中...into TStudent(id, name, age) values(#{id}, #{name}, #{age}) </insert 注意:mapper接口返回值依然是成功插入的记录数,但不同的是主键值已经赋值到领域模型实体的...接口的add方法返回值将是最一条INSERT语句的操作成功的记录数目(就是0或1),而不是所有INSERT语句的操作成功的总记录数目 2....八、参考 http://mybatis.github.io/mybatis-3/zh/dynamic-sql.html
1.1 xml 配置主键返回 <!...(); insert into orders value(null, #{ordertime}, #{total}, #{uid}) 1.2 注解配置主键返回 @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") @Insert("insert...into orders values(null, #{ordertime}, #{total}, #{uid})") Integer insert(Orders orders); 1.3 获取主键 /.../ 实体类对象,属性值省略 Orders orders; // 插入,返回值为影响的行数 Integer rows = sqlSession.getMapper(OrdersDao.class).insert
XML方式 返回自增主键 insert into sys_user(...> 使用useGeneratedKeys设置为true后 , MyBatis会使用JDBC的getGeneratedKeys方法取出由数据库内部生成的主键 ....由于要使用数据库返回的主键值 , 所以SQL上下两部分的列中去掉了 id 列和对于的 #{id} 属性 返回非自增主键 采用标签获取主键的值 , 这种方式对提供和不提供主键自增功能的数据库同样适用...() selectKey标签的 keyProperty和上面useGeneratedKeys的用法和含义一样 , 这里的resultType用于设置返回值类型.... order 属性和数据库相关 , 在MYSQL 中 , order是AFTER , 因为当前及记录的主键值在insert语句执行成功之后才能拿到 , 而在ORACLE中 ,oder是BEFORE ,
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。...Mapper(Oracle) select wxsh_seq.nextval as id from dual INSERT...#{ip}, #{content}, #{out_num}, #{unit_no}, #{status}) </insert...); } catch (Exception e) { logger.error(e.getMessage()); } return 0; } **map中会增加返回的主键
resultType : 正常的返回值。...也就是 PRSP_CRM_ENTERP_ID.nextval 的返回值类型 order : 这个oracle 必须写BEFORE ,mysql 是after 。...不要采坑 mysql 中 如下: SELECT LAST_INSERT_ID() AS ID... INSERT INTO S_T_LOGS ( ID, USER_ID, USER_NAME,
最近开发全栈项目时,前端有个数据行可以被随便修改,所以必须给他一个标识记录该数据行,即向MySQL数据库中插入一条记录后,需要获取此条记录的主键id值返回给前端。...,name) values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName}) insert> 这种方式只是返回一个影响行数值...},#{articleContent},#{addName}) 关键属性 useGeneratedKeys 仅适用于 insert 和 update,这会令 MyBatis 使用 JDBC...的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如MySQL的自动递增主键字段),默认值:false。...所以要打开设为 true keyProperty 仅适用于 insert 和 update,指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert
使用mybatis时,insert方法如何返回主键?...void add(@Param("user")User user); 方法一: <...{user.age},#{user.address}) 下面这个是关键:order的值是after,表示先执行insert语句,然后再选择最后一个主键,返回到实体类中。 ...{user.address}) 注意:这里有一个坑,就是如果你用了别名,那么keyProperty中也要用别名,如果不用,那就都不要使用。...insert into user ( name, age,address) values ( #{name},#{age},#{address}) 然后,user里需要提供
有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。...单条记录插入并返回 First, if your database supports auto-generated key fields (e.g....id为实体类中的字段名称 多条记录插入并返回 If your database also supports multi-row insert, you can pass a list or an array...> 坑:要注意,多条记录时,有可能会出现id没有返回的情况。...检查以下几点: 1、Mybatis版本3.3.1及其以上。 2、在Dao中不能使用@param注解。 3、Mapper.xml中使用list变量接受Dao中的集合。
("com.danny.mybatis.insertUser", user); session.commit(); return user.getUserId();//返回插入数据库后得到的用户...id } 这里总结一下mybatis插入数据时返回主键的4种情况:mysql环境下主键自增、mysql环境下主键为uuid、mysql环境下主键自增、mysql环境下主键为uuid。 ...,查询并返回刚插入数据的主键(但是单独执行这条语句只会返回0)。... 主键为UUID时 用oracle自带的SYS_GUID()方法获得随机的GUID作为主键: <insert id="insertUser" parameterType="com.danny.mybatis.po.User
mybatis执行insert语句后,返回当前插入数据主键的方法 keyProperty区分大小写 #这样查询没有返回主键值 #正确的写法 INSERT INTO `email_log` ( `content_md5...` ) VALUES ( #{contentMd5} ) #接口 public
1、dao层: package com.admin.dao.mapper.linkage; @MyBatisDao public interface StrategyMapper { int insert...(Strategy strategy){ this.strategyDao.insert(strategy); int id = strategy.getId();...System.out.println(); } } 3、mapper.xml 总结: 想要获取自增主键id,应该通过对象的getId()方法,而并不是insert的返回值,insert的返回值表示的是影响行数 2.在mapper.xml中:useGeneratedKeys=..."true"、keyProperty="id",这两个属性的作用: 共同决定了sql执行后,会将主键封装到id属性上; 自增主键封装到了对象的id属性上了,那么想要获取,直接调用对象的getId
除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值,MyBatis从3.3.1版本开始支持批量添加记录并返回各记录主键字段值。...-- 插入数据:返回记录主键id值 --> INSERT...获取主键ID实现原理 需要注意的是,不论在xml映射器还是在接口映射器中,添加记录的主键值并非添加操作的返回值。实际上,在MyBatis中执行添加操作时只会返回当前添加的记录数。
这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增int主键...修改 原代码为: insert into ssm_article(article_title,article_create_date...> 这种方式只是返回一个影响行数值,并不能满足此次需求,于是做了如下修改: <insert id="insertArticle" useGeneratedKeys="true" keyProperty...,add_name) values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName}) 在insert...=null); System.out.println("insert后article的id:"+article.getId()); } 结果如下: ?
前几天在做项目demo的时候,发现有一个很奇怪的现象,就是MyBatis发现更新和插入返回值一直为"-2147482646",无论怎么改,这个值一直不变......"; int res= sqlSession.insert(sql, "1");// 4、SqlSession.insert()方法: public interface SqlSession extends...Closeable { int insert(String var1); int insert(String var1, Object var2); } SqlSession是一个接口...,里面有insert方法,我们再来看一下这个接口的实现类: ?...阿里面试:“说一下从 url 输入到返回请求的过程” 千呼万唤始出来,这个奇怪的数字原来在这里出来的,其中可以看到它是固定返回的,没有任何判断逻辑...这样就证明了一点,只要你的insert方法在配置文件中配置的是
1.场景介绍: 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数...2.插入数据返回自增主键ID方法(一) 在映射器中配置获取记录主键值 xml映射: 在xml中定义useGeneratedKeys为true,返回主键id的值,keyProperty和keyColumn...-- 插入数据:返回记录主键id值 --> ...需要注意的是,在MyBatis中添加操作返回的是记录数并非记录主键id。...-- 批量添加数据,并返回主键字段 --> insert into
往数据库插入数据后,返回数据主键信息。有两种方法。 一种:使用insert标签中的useGeneratedKeys属性和keyProperty属性组合使用获取主键信息。...-- 插入用户useGeneratedKeys="true"表示返回生成的主键keyProperty 表示把返回的key注入到返回值的哪个属性中keyProperty="id" 表示把返回的id主键值注入到返回对象的...>insert into t_user(last_name,sex) values(#{lastName},#{sex})12345678910标签的使用 selectKey 通过前置或后置操作...,返回数据的主键值。...插入记录并返回主键主要是在标签中添加一个的作用主要就是为了返回插入记录后,自动生成的主键信息 order 表示执行的顺序。 AFTER 表示在插入之后执行。 BEFORE 在插入之前执行。
往数据库插入数据后,返回数据主键信息。有两种方法。 一种:使用insert标签中的useGeneratedKeys属性和keyProperty属性组合使用获取主键信息。...-- 插入用户 useGeneratedKeys="true" 表示返回生成的主键 keyProperty 表示把返回的key注入到返回值的哪个属性中 keyProperty...="id" 表示把返回的id主键值注入到返回对象的id属性中 --> 标签的使用 selectKey 通过前置或后置操作,返回数据的主键值。...插入记录并返回主键主要是在标签中添加一个 的作用主要就是为了返回插入记录后,自动生成的主键信息 order 表示执行的顺序。
Mybatis 手撸专栏第15章:返回Insert操作自增索引值本文是《Mybatis 手撸专栏》的第15章,我们将深入学习如何在Insert操作中返回自增索引值。...本章将详细介绍如何在Mybatis中实现返回Insert操作的自增索引值,并给出示例和实践指导。...但是,对于Insert操作而言,我们通常需要获取新插入记录的自增索引值,以便于后续的操作和处理。在本章中,我们将深入探讨如何在Mybatis中实现返回Insert操作的自增索引值。...返回自增索引值的配置和使用在Mybatis中,我们可以通过配置和使用一些特定的技术来实现返回Insert操作的自增索引值。下面,我们将分别对每种生成方式进行详细介绍和示例展示。...总结本章我们深入学习了如何在Mybatis中实现返回Insert操作的自增索引值。我们详细介绍了几种常见的数据库自增索引值的生成方式,并给出了在Mybatis中配置和使用的示例代码。
mybatis insert foreach批量添加 int insertSelectiveBatch(List myList); //写法1 insert...record.ext3}, #{record.ext4}, #{record.ext5} ) //写法2 //collection="list" 固定值 insert into image_detail...record.ext3}, #{record.ext4}, #{record.ext5} ) </insert
领取专属 10元无门槛券
手把手带您无忧上云