有时候我们不仅仅是通过返回 int 影响行数来确定数据是否插入成功就行了,因为我们总是会用到这个刚刚插入的自增主键,比如主子表入库,子表需要主表的 id,那这个时候我们再去数据库查就显得有点 low 了- 关于数据库中主键的生成无非就两种,一种是 int 类型的自增,一种是 varchar 类型的非自增(例如:UUID). 在 Mybatis 中,提供了 selectKey 来帮我们获取新增的主键,同时通过 selectKey 可以很容易的实现自增还是非自增规则的需求. 首先看一下 Mybati…
Entity类中,主键尽量使用可以为null值的类型,比如Integer,Long,String等,不要用int,long等.因为如果主键为null,则表示该实体类还没有保存到数据库,是一个临时状态(Transient),而int,long不能设置为null,不具备该功能. <!--以上抄书,待研究论证--> <id  name="属性名"column="数据库字段名" type="标识Hibernate类型的名字" unsav…
<insert id="insertCharge" parameterType="com.bb.bean.Rechargerecord"> <selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER"> select LAST_INSERT_ID() </selectKey> INSERT…
今天在敲代码的时候遇到一个问题,就是往数据库里插入一条记录后需要返回这个新增记录的ID(自增主键), 公司框架用的是mybatis的通用Mapper接口,里面的插入方法貌似是不能把新纪录的ID回填到对象中的,于是大家都懂的 去网络的海洋里寻找答案,答案还是很好找的 <insert id="xxx" parameterType="xxx.xxx.xxx.entity" useGeneratedKeys="true" keyColumn=&qu…
1.表:mysql建表语句 DROP TABLE IF EXISTS `keycode`; CREATE TABLE `keycode` ( `Id` ) NOT NULL AUTO_INCREMENT, `KeyName` ) NOT NULL, `KeyRemark` ) NOT NULL, `Prefix` ) DEFAULT NULL, `ReSetType` ) NOT NULL, `DateFormat` longtext, `Length` ) NOT NULL, `Step` )…
主键表: CREATE TABLE [dbo].[KEYCODE]( [KeyName] [varchar](12) NOT NULL, [KeyTableName] [varchar](40) NULL, [KeyFieldName] [varchar](30) NULL, [StrLen] [int] NULL, [CodeLen] [int] NULL, [CodeMin] [float] NULL, [CodeMax] [float] NULL, [CodeType] [varchar]…
4.0后就没有去跟踪后面的版本了.现在直接开始用5.0没想到在做User的GURD时就遭遇insert不进数据问题. ISet<User>.Add(user);_context.SaveChanges()时开始报错: 插入条目时出错,最后的英文错误大概是: Cannot insert the value NULL into column 百分百user是有值的啊,为什么又说userId为null呢? google一番后,原因大概是如果是主键,没有特殊说明,ef会默认认为这个字段数据库会自动生成…
-- Create table create table T_EB_SYS_DN_SEQUENCE_CONFIG ( sequence_id VARCHAR2(36) default sys_guid() not null, sequence_name VARCHAR2(50) not null, sequence_desc VARCHAR2(200), sequence_len INTEGER default 4 not null, reset_type INTEGER default 2 n…
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN…
在某些场景下,我们需要使用mybatis返回生成的主键值.Mybatis在insert和update标签中就提供了这种功能. 方法1: <insert id=”indetifyId” useGeneratedKeys=”true” keyProperty=”id” keyColumn="id"> </insert> useGeneratedKeys: 是否自动生成主键,默认false keyProperty :返回的主键值赋给哪个属性 keyColumn: 数据…