Mybatis批量insert 返回主键 Mybatis从3.3.1版本开始,支持批量插入后返回主键ID.首先对于支持自增主键的数据库使用useGenerateKeys和keyProperty,对于不支持生成自增主键的数据库使用selectKey标签.类似<MyBatis 返回insert操作主键>中单条插入. 使用批量插入,可以减少和数据库交互的次数,但是,数据量应该做一个控制,和for循环类似.首先定义Java Bean Instance: import java.io.Serializa…
insert 返回主键值 useGeneratedKeys=“true” parameterType=“USer” keyProperty=“id”, <insert id="insert" useGeneratedKeys="true" parameterType=“Car”  keyProperty="car.id"> INSERT INTO car(customer_id,car_no,car_brand_model,insur…
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键: 1.对于支持生成自增主键的数据库:增加 useGenerateKeys和keyProperty ,<insert>标签属性. 2.不支持生成自增主键的数据库:使用<selectKey>. 但是怎么对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少. Mybatis官网资料提供如下: First, if your database supports auto-generated key…
Mybatis在插入单条数据的时候有两种方式返回自增主键:    mybatis3.3.1支持批量插入后返回主键ID, 首先对于支持自增主键的数据库:useGenerateKeys和keyProperty. 不支持生成自增主键的数据库:<selectKey>. 这里主要说下批量插入数据时如何返回主键ID(注意要将mybatis升到3.3.1) public class UserInfo { private int userId; private String userName; private…
今天整合mybatis时候用到返回主键问题,批量插入总是返回不了主键还报错. 记录入下: pom版本: <mybatis.version>3.2.6</mybatis.version> mybatis.xml: <insert id="addUserBatch" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List&qu…
记录解决的过程,这里就不搬砖了. 1.获取insert后的主键id 原文链接:http://www.cnblogs.com/fsjohnhuang/p/4078659.html 2.insert后返回主键是1,如何拿到insert后返回的主键 原文链接:http://blog.csdn.net/prevention/article/details/32825081…
插入语句xml代码: <insert id="insertUser" parameterType="com.spring.mybatis.po.User"> <!--selectKey获取插入的id值 keyProperty="id":将查询到主键设置到对象中的某个属性上 order="AFTER":执行查询主键ID值的顺AFTER:执行之后获取 resultType:获取返回结果类型(包装类) SELECT…
mybatis insert语句 <insert id="Add" parameterClass="UserInfo" resultClass="int"> INSERT INTO UserInfo(UserName,Password,NickName) VALUES (#UserName#,#Password#,#NickName#) </insert> 这样无法获取到插入记录的ID,如果想要获取的ID,需要用到sele…
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.model.OperationBookList" > insert into operation_book_list (id, name, introduce, category, state, up_date, stop_date, down_date, …
返回主键值的insert操作 应用背景 图示说明 在上述业务背景下,涉及两张数据表的关联操作:用户表 + 用户积分表 传统操作:在对用户表执行完插入语句后,再次查询该用户的uid,将该uid作为外键,最后插入积分数据到用户积分表 数据库操作次数:3次 优化操作:在对用户表执行完插入语句后返回该用户的主键uid,将该uid作为外键,再插入用户积分数据到用户积分表 数据库操作次数:2次 优化操作可以减少对数据库的操作次数 代码实现 UsersMapper.java接口 package com.exa…
mybatis insert返回主键(sqlserver2008)   MyBatisXML配置,下面两种方式都行 方式1: <insert id="insert" parameterType="com.user.model.User" >   <selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" …
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"); user.setComment("测试插入数据返回主键功能"); System.out.println("插入前主键为:…
MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年8月24日 10:39:04 星期三 http://fanshuyao.iteye.co…
insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xingyunblog/p/6243179.html 列子: <!-- 插入一个商品 --> <insert id="insertProduct" parameterType="domain.model.ProductBean" > <sele…
分享牛,分享牛原创.ssm整合的时候,我们操作mybatis insert 的时候,需要返回插入的主键,因为主键是自增的,这个时候怎么办呢?很简单看一下下面的代码示例: 1.1.1. 代码定义 public interface IBaseService<M,QM extends BaseModel> { public void create(M m); public int createAndRetuenId(M m); public void update(M m); public void…
数据库:SqlServer2005 表结构: /*==============================================================*//* Table: Dic_City                                              *//*==============================================================*/create table Dic_City (   ID …
@Insert("<script>INSERT INTO scp_activity_gift (activity_id,type,gift_id,status,limit_num,num) " + "VALUES " +" <foreach collection='items' item='item' separator=',' >" +"(#{item.activityId},#{item.type},#{it…
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro…
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"); user.setComment("测试插入数据返回主键功能"); System.out.println("插入前主键为:…
某些情况进行insert时不知道主键值(主键为自增),例如系统新增用户时,有用户序号(主键 自增),用户名,密码.插入时只需插入用户名和密码,之后取得mysql自增的序号. 如下为mysql的usr表结构: 对应的实体类 Mapper parameterType:参数类型,此处为实体类的完整路径.(可省略,mybatis会自动识别参数类型). useGeneratedKeys:令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 M…
传递参数为对象TaskEntity, 返回主键结果为Integer 与 主键 task_id 的类型一致即可 <insert id="addTask" parameterType="com.hk.upgrade.entity.TaskEntity" > <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="task_…
程序结构图: 表结构: 创表sql: Create Table CREATE TABLE `users` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `username` varchar(200) DEFAULT NULL,   `password` varchar(32) DEFAULT NULL,   `sex` char(1) DEFAULT NULL,   `birthday` date DEFAULT NULL,   PRIMARY KEY …
1.项目环境--SpringBoot下的SSM+Maven 2.问题出现位置--Dao层和Mapper文件 错误代码如下图: dao层: mapper文件: 错误代码分析: 使用useGeneratedKeys生成主键时 (1)如果在DAO层使用@Param注解传递参数,则 keyProperty 属性 需要通过 "注解"+"主键id" 的格式,否则无法返回主键. (2)如果在DAO层只有单个参数传递(不需要使用@Param注解穿传递参数),则 keyPropert…
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g…
出自:http://www.cnblogs.com/kakafra/archive/2012/09/16/2687569.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id&…
http://www.cnblogs.com/kakafra/archive/2012/09/16/2687569.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id&quo…
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g…
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g…
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g…
原文转自:Fra~~kaka's Blog 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned…