项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目目录结构: 项目中使用ibatis做数据访问层已经有好长时间了.开发小组成员反映ibatis的insert操作返回的结果是null,这一点很是不爽. 其实,大家都是希望能够把新增记录的主键值返回出来. 上上周,大家有反编译ibatis的包,查看其实现原理,后来,又尝试其他方法,都没能给实现这个功能.…
MyBatis 插入时返回刚插入记录的主键值 一.要求: 1.数据库表中的主键是自增长的,如:id: 2.获取刚刚插入的记录的id值: 二.源代码: 1.User.java package cn.com.zfc.model; public class User { private Integer id; private String name; private String password; public Integer getId() { return id; } public void s…
网上搜了好多文章照着弄都返回不了主键给map, 实践证明要在传入的map参数里写回插入的主键,要这样写 <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="col.id">  // keyProperty要指定为map参数的  名称.写回的键名  才行            SELECT SEQ_LOG.nextval AS id FROM DUA…
<span style="font-size:24px;">package src.com.JDBC2DAO.java; import static org.junit.Assert.*; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaDat…
取得数据库自动生成的主键值 package com.litian.jdbc; import javax.swing.plaf.nimbus.State; import java.sql.*; /** * @author: Li Tian * @contact: litian_cup@163.com * @software: IntelliJ IDEA * @file: JDBCTest3.java * @time: 2020/3/29 15:27 * @desc: |取得数据库自动生成的主键值…
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN…
加这两行就可以返回这个插入对象的自增的主键<insert id="insertSeatPortraitData" parameterType="seatPortrait" keyProperty="id" useGeneratedKeys="true"> insert into seating_portrait ( system_producer ,system_type, system_processer, ho…
在JDBC3.0规范中,当新增记录时,允许将数据库自动产生的主键值绑定到Statement或PreparedStatement中.使用Statement时,可以通过以下方法绑定主键值: int executeUpdate(String sql,int autoGeneratedKeys) 也可以通过Connection创建绑定自增值的PreparedStatement: PreparedStatement prepareStatement(String sql,int autoGenerated…
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能,针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="…
   数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解   其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中…
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数: Dao.java @Override public int insert(T record) { for (DaoInsertInterceptor<T> interceptor : this.insertInterceptors) { interceptor.invoke(this, record); } return super.getSqlSession().insert(this.map…
mapper Integer insertConfigAndGetId(CrawlerConfig config); xml <insert id="insertConfigAndGetId" parameterType="com.suning.epp.fmasosadmin.dmo.CrawlerConfig"> <selectKey keyProperty="id" order="AFTER" resul…
用mouse点击表格(table)的行或是批定列,获取记录的主键值.在ASP.NET的MVC应用程序中,已经没有办法象ASP.NET的Data控件一样,如GridView,DataList和Repeater控件好找到记录记键值了. 下面的示例中,Insus.NET演示,如何获取呈现在格表(table)记录的主键. 打开以前练习的例子: 先来演示,点击行中任何一列,获取: 实时演示: 如果,我们想只能点击第一列,才去获取记录的主键值,也就是说,指定点击某一列,这样的话,我们改一下jQuery代码:…
在GridView控件中,每行记录内会放置一个铵钮,当用户点击这个铵钮时,获取当笔记录的主键值.可看演示(是一个gif动画,重新播放尝试刷新网页): 实现这个功能,你需要为GridView控件设置DataKeyNames属性和OnRowCreated事件. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="Me…
返回主键值的insert操作 应用背景 图示说明 在上述业务背景下,涉及两张数据表的关联操作:用户表 + 用户积分表 传统操作:在对用户表执行完插入语句后,再次查询该用户的uid,将该uid作为外键,最后插入积分数据到用户积分表 数据库操作次数:3次 优化操作:在对用户表执行完插入语句后返回该用户的主键uid,将该uid作为外键,再插入用户积分数据到用户积分表 数据库操作次数:2次 优化操作可以减少对数据库的操作次数 代码实现 UsersMapper.java接口 package com.exa…
MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年9月24日 16:04:37 星期四 http://fanshuyao.iteye.com/ i…
官网:http://www.mybatis.org/mybatis-3/index.html 在使用mybatis作为ORM框架时,我通常更喜欢使用注解而非xml配置文件的方式.业务场景:添加记录之后需要返回自己自增长的主键字段值.通常,我们会将DAO层写成如下代码(以添加员工Staff为例): public interface StaffDAO { @InsertProvider(type=StaffProvider.class, method="buildSinleStaff")…
某些情况进行insert时不知道主键值(主键为自增),例如系统新增用户时,有用户序号(主键 自增),用户名,密码.插入时只需插入用户名和密码,之后取得mysql自增的序号. 如下为mysql的usr表结构: 对应的实体类 Mapper parameterType:参数类型,此处为实体类的完整路径.(可省略,mybatis会自动识别参数类型). useGeneratedKeys:令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 M…
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…
Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录所对应的主键值的方法: int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值.假设我们希望在新增论坛板块对象后,希望将主键值加载到对象中,则可以按以下代码进行调整: public Role create…
增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Employee e);        void updateEmp(Employee e);        void deleteEmp(Employee e);   在映射文件中写sql语句 <insert id="addEmp" parameterType="com.fi…
mybatis-plus是mybatis增强版,用mybatis-plus可以省去很多DAO层代码和数据库操作语句的编写.但是需要我们配置好条件. 情景: 向数据库新增一条实例,我们要调用 insert(T t)方法:向数据库批量新增实例,我们调用inserBatch(List<T> list)方法. 当然,这些都是mybatis-plus已经封装好的,我们直接用,DAO层代码和xml文件不用自己编写.但是,我们数据库新增实例,主键ID一般都是自增长的,不用人工给它赋值. 那么mybatis-…
一.获取插入记录主键值 在创建语句的地方使用Statement.RETURN_GENERATED_KEYS标识一下,然后通过getGeneratedKeys方法获得 preparedStatement=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); preparedStatement.excuteUpdate(); resultSet=preparedStatement.getGeneratedKeys();//主键有可能有…
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. 使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值: 3. 但要获取此ID,最简单的方法就是在查询之后select @@indentity. sql代码: INSERT INTO table_name (.....) VALUES(…
In InnoDB, the records in non-clustered indexes (also called secondary indexes) contain the primary key value for the row. 在InnoDB,记录在 non-clustered indexes(也被称为secondary indexes) 包含了主键值…
首先在Mybatis Mapper文件中insert语句中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是保存主键值的属性. 例如: <insert id="save" parameterType=“Survery" useGeneratedKeys="true" keyProperty="pkId"> insert into edu_survery ( is_valid…
今天在敲代码的时候遇到一个问题,就是往数据库里插入一条记录后需要返回这个新增记录的ID(自增主键), 公司框架用的是mybatis的通用Mapper接口,里面的插入方法貌似是不能把新纪录的ID回填到对象中的,于是大家都懂的 去网络的海洋里寻找答案,答案还是很好找的 <insert id="xxx" parameterType="xxx.xxx.xxx.entity" useGeneratedKeys="true" keyColumn=&qu…
在MySQL5.7中做INSERT IGNORE时发现, 即使INSERT未成功执行, 表的自增主键却自动加1了, 在某些情况下需要避免这种行为. 需要修改的变量是 innodb_autoinc_lock_mode, 将其设为0后, 在INSERT未成功执行时不会自增主键. innodb_autoinc_lock_mode在MySQL各版本的默认值 根据MySQL官方手册的说明: There are three possible settings for the innodb_autoinc_l…
Mybatis批量insert 返回主键 Mybatis从3.3.1版本开始,支持批量插入后返回主键ID.首先对于支持自增主键的数据库使用useGenerateKeys和keyProperty,对于不支持生成自增主键的数据库使用selectKey标签.类似<MyBatis 返回insert操作主键>中单条插入. 使用批量插入,可以减少和数据库交互的次数,但是,数据量应该做一个控制,和for循环类似.首先定义Java Bean Instance: import java.io.Serializa…