2 jn90zy jn90zy 于 2016.04.06 15:49 提问

mybatis数据表(mysql)的主键非自增长,如何插入数据(需插入主键)实现主键自增长? 1C

举例来说就是有表person,person有id(mysql数据库,主键,非自增),和name,pswd三个字段。如果是自增的情况,我们通常是这样处理

insert into person(name,pswd) values(#{name},#{pswd})

这种情况不许要插入主键,因为person表主键是自增长的。但如果主键不是增长的情况呢?如何处理。主键不是自增长就应该必须插入主键。
在步改动表结构的情况下!我能想到有两种方式可以解决,一个就是插入主键时实现自增长,比如第一次主键插1,第二次插2.这种方式不是很好。第二中就是在mapper.xml中是否可以实现向oracle序列那样进行自增长,小弟能力不够,还希望各位前辈能多多指教。如有更好的方法请指出。

5个回答

CSDNXIAOD
CSDNXIAOD   2016.04.06 16:14

mysql 主键id自增长,插入数据的方法
mysql 插入数据失败防止自增长主键增长的方法
表主键自增长Mybatis插入数据报错
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

xiatianlong_xtl
xiatianlong_xtl   2016.04.06 17:01

不自增长要么就查询最新数据的主键然后增加,要么就用uuid吧

u010030181
u010030181   Rxr 2016.04.06 18:30

如果你的键是从1开始到N的,那么直接算出有多少列,把这个列加1(看你表的情况是否要加),当作那个值插入,又或者你直接查找到该ID的最大值,然后+1,再进行插入

niaonao
niaonao   Rxr 2016.04.09 20:23

修改
table_name 你的表名 col_name列名
id int 你可以换成你的对应的属性及类型

将某列设置为主键,如果已为主键,跳过,看下一步
alter table table_name add primary key (col_name);
增加某列为自增
alter table table_name modify id int auto_increment;

niaonao
niaonao   Rxr 2016.04.09 20:24

修改
table_name 你的表名 col_name列名
id int 你可以换成你的对应的属性及类型

将某列设置为主键,如果已为主键,跳过,看下一步
alter table table_name add primary key (col_name);
增加某列为自增
alter table table_name modify id int auto_increment;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Mybatis添加功能时获取mysql自增主键和非自增主键的返回值
Mybatis获取mysql自增主键的获取 User.xml <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- keyProperty:将查询出的主键设置到para
mybatis插入数据主键自动增长处理
1.如果数据库支持自动增长,如mysql和sqlserver,那么可以设置useGeneratedKeys="true",而且设置keyProperty到你已经做好的目标属性上 例如:上面的表中已经对id进行了自动生成的列类型,那么语句可以修改为 userGeneratedKeys="true" keyProperty="id"> 插入语句,与id无关 2.若果数据库不支持自动增长
Web开发——如何使JDBC插入数据的时候返回自动增长的主键值
通常插入数据时的代码如下: ... String sql = "insert into table (name) values(?)"; PreparedStatement pstmt = conn.prepareStatement(sql); // 如果使用静态的SQL,则不需要动态插入参数 pstmt.setString(1, name); pstmt.executeUpdate();
MySQL数据表中有自增长主键时如何插入数据
MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新插入的值不能和已有的值重复,而且必须大于其中最大的一个值; 也可以不指定该列的值,只将其他列的值插入,让ID还是按照MySQL自增自己填; 具体:1.创建数据库 create table if not exists userInfo ( id int PRIMARY KEY AUTO_I
mybatis 插入操作,insert_获取非自增主键的值
1:MySQL 2:oracle
表中有自增长主键时,插入数据的几种方法
数据库的表中有自增长主键时(如图所示),我们该怎么插入数据呢?方式一:    当需要插入的数据比较少时,即可以通过一条一条的插入时,我们可以指定该列(id)的值,但是新插入的值不能和已有的值重复,而且必须大于其中最大的一个值方式二:    当需要插入的数据量比较大时,需要时通过储存过程或者其他方式来批量生成数据插入时,显然方式一的方法不可行。那现在又该怎么办呢?    有两种解决方法:    1)...
mybatis配置oracle的主键自增长
mysql、sqlserver等数据库本身带有主键自增长像auto_increment的功能可以直接使用 useGeneratedKeys=”true”来实现,比如下面的配置 insert id=”add” useGeneratedKeys=”true” keyProperty=”id” parameterType=”Auth”> insert into s_user_auth (id,u
DB2 插入数据并返回自增长主键
建表语句: create table wqx_XXX ( id integer not null primary key generated always as identity (start with 1 , increment 1), name varchar(200) not null ) insert into wqx_XXX(name) values(#name#)
【MyBatis】——自增主键与非自增主键返回
mysql自增主键,执行insert提交之前自动生成一个自增主键。当时一直没有想为什么要返回主键,也就是返回就返回了吧,总是有用的,确实,返回来有可能会作为下一次查询的依据,或者下一个插入的外键的凭证,总之,先返回来再说…… 实现思想是酱紫的:通过mysql函数获取到刚插入记录的自增主键:LAST_INSERT_ID(),但是是在insert之后调用此函数。
Mybatis MySQL 获取自动增长主键
有两种方式第一种: SELECT LAST_INSERT_ID() AS id insert into category(id, user_name, password,age) values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCH