mysql存储过程如何返回主键 具体点

mysql!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

3个回答

out 输出就可以了。

参考自:MySQL存储过程详解 http://www.data.5helpyou.com/article314.html

你的存储过程写好了呀 ???
根据你写的存储过程 SELECT xxx=LAST_INSERT_ID();
然后
return xxx; 或者

按order by id desc limit 0,1进行一次数据查询,查询到的id即为你刚插入的数据id(此方法适用与单用户,多用户适用于楼上的LAST_INSERT_ID()方法)

mushoukai
mushoukai 好的,谢谢啊!
接近 3 年之前 回复
ALunece
ALunece 回复ALunece: 兄弟 只能帮你到这了 , 我要 工作了 。
接近 3 年之前 回复
ALunece
ALunece 回复mushoukai: MyBatis 3.2.6插入时候获取自增主键方法有二 以MySQL5.5为例: 方法1: <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id"> insert into person(name,pswd) values(#{name},#{pswd}) </insert> 方法2: <insert id="insert" parameterType="Person"> <selectKey keyProperty="id" resultType="long"> select LAST_INSERT_ID() </selectKey> insert into person(name,pswd) values(#{name},#{pswd}) </insert>
接近 3 年之前 回复
mushoukai
mushoukai 回复ALunece: 我用的mybatis……
接近 3 年之前 回复
ALunece
ALunece 回复ALunece: 不知道对你有没有帮助
接近 3 年之前 回复
ALunece
ALunece 回复mushoukai: Statement stmt = conn.createStatement(); stmt.executeUpdate("insert into t values(....)", Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys(); //得到新插入记录的自增主键
接近 3 年之前 回复
mushoukai
mushoukai 举个例子保存一条数据 主键是自增的,插入成功后让这条记录主键返回来,具体应该怎么写,存储过程已经写好了
接近 3 年之前 回复

如果你用tp框架 执行add()方法 返回出来的就是id 没用tp 就select最后一条数据的id

mushoukai
mushoukai 服务器自己搭的。用的轻量级框架mybatis
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql存储过程之返回多个值
mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构:mysql&amp;gt; desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | K...
mysql存储过程返回结果集
代码:rn(1)rnstring query = "call SelectAllCreatureTemplate()";rnint t = mysql_query(mysql, query.c_str());rnMYSQL_RES* m_res = mysql_store_result(mysql);rn(2)rnstring query = "call SelectAllCreatureTemplate";rnint t = mysql_query(mysql, query.c_str());rnMYSQL_RES* m_res = mysql_store_result(mysql);rnrn其中存储过程:rncreate procedure SelectAllCreatureTemplate()rnbeginrn select * from CreatureTemplate;rnendrnrnrn代码(1)不能取到结果,也就是说m_res为空;rn代码(2)不能取到结果,也就是说m_res不为空;rn为什么会这样子? 是因为存储过程不能取到结果集吗?
MySql存储过程返回临时表
老同志们,菜鸟又来问问题啦!rn需求:在存储过程中,将需要的数据做成临时表,然后,在过程中return临时表,我在程序中,再接收这张临时表。rn问题:如何返回临时表?rn谢谢你们了
返回主键
<p>rn <span>本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。</span> rn</p>rn<p>rn <span><span><span></span>真正做到零基础入门学习,</span><span style="color:#FF0000;">适合初学者的教程!</span></span> rn</p>rn<p>rn <span style="color:#FF0000;"><br />rn</span> rn</p>rn<p>rn <span>课程内容包括:</span> rn</p>rn<p>rn <span>1.JDBC简介</span> rn</p>rn<p>rn <span>2.JDBC基本用法</span> rn</p>rn<p>rn <span>3.访问数据库的步骤</span> rn</p>rn<p>rn <span>4.使用PreparedStatement</span> rn</p>rn<p>rn <span>5.练习:学生管理</span> rn</p>rn<p>rn <span>6.返回主键</span> rn</p>rn<p>rn <span>7.事务操作</span> rn</p>rn<p>rn <span>8.批处理操作</span> rn</p>rn<p>rn <span>9.数据库连接池(dbcp、druid)</span> rn</p>rn<p>rn <span>10.三层架构简介</span> rn</p>rn<p>rn 11.三层架构的应用rn</p>rn<p>rn 12.项目结构rn</p>rn<p>rn <span>13.封装工具jar包</span> rn</p>
MySQL存储过程返回多行数据
我希望select age,name from stu_info再将age name插入age-name表中。由于select出来的age和name可能会很多,而存储过程只能返回一条数据。rn请问各位该如何实现?是不是要用到游标
mysql存储过程 返回 list结果集
思路:直接链接多个表返回结果集即可,先写成普通的sql调整好,不要输入参数,再写成存储过程, 不要用游标,否则会把你慢哭的 BEGIN DECLARE In_StartTime VARCHAR(64); DECLARE In_StopTime VARCHAR(64); DECLARE IN_User_id VARCHAR(64); DECLARE IN_work_no ...
具体点
DO.NET访问数据库的基本步骤?
MySQL存储过程分页如何返回记录总数
这是一段从网上搜到的代码,但是会报oRowsTotal没有定义的错误rnrnError Code : 1193rnUnknown system variable 'oRowsTotal'rnrn[code=SQL]DROP PROCEDURE IF EXISTS `PtBase`.`prPager`;rnCREATE PROCEDURE `PtBase`.`prPager`(rn OUT oRowsTotal INT, --输出记录总数rn IN iTableName VARCHAR(800), --表名rn IN iFields VARCHAR(800), --查询字段rn IN iPageSize INT, --每页记录数rn IN iPageNow INT, --当前页rn IN iOrderString VARCHAR(100), --排序条件rn IN iWhereString VARCHAR(800) --WHERE条件rn)rn NOT DETERMINISTICrn SQL SECURITY DEFINERrn COMMENT ''rnBEGINrn DECLARE _beginRow INT DEFAULT 0;rn DECLARE _mainString VARCHAR(8000);rn DECLARE _limitString VARCHAR(100);rn DECLARE _countString VARCHAR(8000);rn rn SET _beginRow = (iPageNow - 1) * iPageSize;rn SET _limitString = CONCAT(' LIMIT ', beginRow, ', ', iPageSize);rn SET _countString = CONCAT('SET oRowsTotal = SELECT COUNT(*) FROM ', iTableName, ' WHERE ', iWhereString);rn SET _mainString = CONCAT('SELECT ', iFields, ' FROM ', iTableName, ' WHERE ', iWhereString, iOrderString, _limitString);rnrn SET @countStr = _countString;rn PREPARE countStmt FROM @countStr;rn EXECUTE countStmt;rn DEALLOCATE PREPARE countStmt;rnrn SET @mainStr = _mainString;rn PREPARE mainStmt FROM @mainStr;rn EXECUTE mainStmt;rn DEALLOCATE PREPARE mainStmt;rnEND;[/code]
MyBaits:如何接收Mysql存储过程多个返回集
我测试所用的表分别为app_action、app_action_type、integral_sign_source内容随便,大家可以随便建立; 存储过程名为:mytest  创建语句如下: DROP PROCEDURE IF EXISTS `mytest`$$ CREATE DEFINER=`wsrp`@`%` PROCEDURE `mytest`() BEGIN SELECT COU
MySql存储过程里 如何接收返回的多个结果
BEGINrnrn DECLARE userNames varchar(500) DEFAULT ''; ##用户名字rn DECLARE sums int DEFAULT 0; rn DECLARE namess varchar(500) DEFAULT ''; rn DECLARE i int; rn set i = 0;rn select count(*) into sums from book where price = 123;rn ##select name into namess from book where price = 123;##这个是错误的因为这条sql 返回的有多条数据rn rn while i < sums rn DO rn set i = i+1;rn end while;rnENDrnrn上述select 中 结果为:rnid name pricern1 aa 123rn2 bb 123rnrn我想把得到的多条数据中 name字段里的值拿出来拼成 aa,bb 这样的字符传 怎么做,请大家帮帮我.感激不尽
mysql存储过程利用临时表返回结果集
首先要声明的是 1,游标的方法会很慢在mysql中,在oracle数据库中还可以,除非没有别的方法,一般不建议在mysql中使用游标, 2,不建议在mysql中拼接sql,会使存储过程显得很臃肿,可以使用or来动态判别传入的参数是否为空 and ( TTB.office_id=输入参数 or 输入参数 is null or 输入参数 = '') and ( TTB.office_i...
mysql存储过程的row_count()总返回-1
存储过程:rn[code=SQL]rnCREATE DEFINER=`root`@`localhost` PROCEDURE `p_cr_checkuserlogin`(in un varchar(20),in upw varchar(20),out result tinyint)rnBEGINrn select UserID from cr_user where UserName=un and UserPassWord=upw;rn set result=row_count();rnENDrn[/code]rnjava调用的代码:rn[code=Java]rnpublic int selUserID(String UserName,String UserPassWord)rn int Result=0;rn ConnectMySql cms=new ConnectMySql();rn conn = cms.getConnection();rn try rn cstmt=conn.prepareCall("call p_cr_checkuserlogin(?,?,?)");rn cstmt.setString(1, UserName);rn cstmt.setString(2, UserPassWord);rn cstmt.registerOutParameter(3, Types.TINYINT);rn cstmt.execute();rn Result=cstmt.getInt(3);rn if (rs != null)rn rs.close();rn if (cstmt != null)rn cstmt.close();rn if (conn != null)rn conn.close();rn catch (Exception e) rn // TODO: handle exceptionrn rn return Result;rn rn[/code]rn我调用的时候所传参数是绝对可以查出结果的,所以row_count()应该是1rn在网上查了下,说是prepare,execute会另开一个线程,而mysql的很多东西是跟线程相关的。这样的话就会导致row_count()函数的返回值丢失。rn解决方法:在execute之后,DEALLOCATE之前把row_count()的返回值赋值给存储过程的一个内部变量中。rn不太理解,在哪将row_count()的返回值赋值给存储过程的一个内部变量呢?
mysql存储过程结果集的返回类型是什么?
mysql存储过程结果集的返回类型是什么?rn比如 create procdure aa(name varchar(10))rn那么 create procdure bb(res ?)rn这个问号里面填写什么?rn可以写个具体的列子吗?rn谢谢!!
mysql存储过程--返回两个时间的最大最小值
返回较大值 create function bigdate(first date, last date ) returns date begin declare datetemp date; set datetemp = last; if first > last then set datetemp = first; end if; return datetemp;
MySQL存储过程返回多个值讲解
<p>n <span>MySQL</span>是一个关系型数据库管理系统,目前属于<span>Oracle</span>旗下产品。<span>MySQL</span>是最流行的关系型数据库管理系统之一。<span></span>n</p>n<p>n <br />n</p>n<p>n <span></span>n</p>n<p>n <span>MySQL</span>所使用的<span>SQL</span>语言是用于访问数据库的最常用标准化语言。<span>MySQL</span>采用了双授权策略,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点。<span></span>n</p>n<p>n <br />n</p>n<p>n <span></span>n</p>n<p>n <span></span>n</p>n<p>n 本课程作为<span>MySQL</span>的基础课程,主要讲解以下内容:<span></span>n</p>n<p>n 1.     <span>MySQL </span>存储过程<span></span>n</p>n<p>n 2.     <span>MySQL</span>的存储视图<span></span>n</p>n<p>n 3.     <span>MySQL </span>触发器<span></span>n</p>n<p>n 4.     <span>MySQL</span>索引<span></span>n</p>n<p>n <br />n</p>n<p>n <span style="color:#FF0000;">本课程,是基于《 mysql 数据管理基础篇 》进行的讲解,请仔细查看目录,是否符合自己的需求。</span>n</p>n<p>n <span style="color:#FF0000;"><br /></span>n</p>n<p>n <img src="https://img-bss.csdn.net/201906030233151519.png" alt="" /><br />n</p>
改写的两个mysql存储过程,用于判断主键外键
改写的两个mysql存储过程,用于判断主键外键 由于所在的数据库没有系统自带的sp_pkeys,sp_fkeys,所以改写了如下: sp_pkeys CREATE PROCEDURE `testdb`.`sp_pkeys` (IN table_name varchar(50),IN table_owner varchar(50),IN table_qualifier varchar(50)...
Mybatis+MySQL 插入数据返回主键
==
Mysql+Mybatis 批量插入返回主键
大家在做一些功能时,可能会遇见的。当表将主键设置为自增时,很多场景需要insert之后记录的ID,作为其他数据关连的ID。单条记录insert时,只需要添加keyProperty=&quot;orderId&quot; useGeneratedKeys=&quot;true&quot;&amp;lt;insert id=&quot;insertBatchOrder&quot; parameterType=&quot;OrderModel&quot; keyProperty=&quot;orde...
mybatis 主键自增返回
Mysql自增主键返回 通过修改sql映射文件,可以将mysql自增主键返回: &amp;lt;insert id=&quot;insertUser&quot; parameterType=&quot;cn.itcast.mybatis.po.User&quot;&amp;gt; &amp;lt;!-- selectKey将主键返回,需要再返回 --&amp;gt; &amp;lt;selectKey keyProperty=&quot;id&quot; o...
jdbc插入返回主键
第一步创建sql 第二步通过connection.prepareStatement(sql,主键) 来创建预编译对象 第三步 为sql中的占位符赋值 第四步,执行sql 第五步获取执行sql的结果 第六步通过ResultSet对象获取返回的主键 public boolean AdvertAdd(Advert ad) throws SQ
mybatis主键的返回
mysql自增主键返回 通过修改sql映射文件,可以将mysql自增主键返回: insert id="insertUser" parameterType="cn.itcast.mybatis.po.User"> 将主键返回,需要再返回 --> selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
MyBatis插入数据返回主键
Service层: public int addUser(UserDomian user){ int i = userMapper.insert(user); } xml: &amp;amp;lt;insert id=&amp;quot;insert&amp;quot; parameterType=&amp;quot;....UserDomain&amp;quot;&amp;amp;gt; insert into t_user(user_name,password) ...
mybatis返回主键+ssm
框架:ssm+oracle+maven多模块 这个问题拖了好久,按照网上所说的配置,死活不返回主键,也在网上查了很多资料
Mybatis 主键返回
Mybatis 主键返回
自增主键的返回
sql server的自增主键返回 只需要在insert语句后面添加SELECT @@IDENTITY AS idmysql的自增与非自增主键返回 mybatis自增主键返回 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http
66-mybatis 插入数据返回主键
xml 配置的可能简单点,网上教程也多。 用java注解的比较少: // 动态插入 @InsertProvider(type=UserDynaSqlProvider.class,method="insertUser") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUser(U...
mybatis 批量插入返回主键
只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢
MySQL insert返回主键
1、通过mybatis generator自动生成的在generator配置文件中(generatorConfig.xml)插入<generatedKey column="id" sqlStatement="MySql" identity="true"/>,使用生成的insert方法,主键值包装在了参数对象里边,通过user.getId()获取 如:<table tableName="t_appr
MYBatis获取主键返回
&amp;lt;insert id=&quot;insertUser&quot; parameterType=&quot;User&quot; useGeneratedKeys=&quot;true&quot; keyProperty=&quot;id&quot; &amp;gt;  insert into user(id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address...
mybatis 主键的返回
简述mybatis主键的返回,根据表中主键是否自增分为两种情况1.在表中主键为自增列主键若在表中为自增项,即主键生成过程为: 向表中插入数据,数据库接到插入信息,根据现有主键值进行自增运算后才可以返回主键所以,我们需要在insert操作之后才可以调用方法返回主键 这个方法就是 SELECT LAST_INSERT_ID();在配置文件中应如下:<selectkey keyProperty="i
Mybatis 返回主键
<insert id="insert" parameterType="com.patest.entiy.UserInfo" useGeneratedKeys="true" keyProperty="userId"> insert into user_info (user_id, usrpf_id, username, password,
mybatis返回主键
Dto @Getter @Setter public class OrderDto implements Serializable{ private static final long serialVersionUID = 1L; private Long orderId; private Integer productId; //商品ID private BigDecimal u
mybatis 返回主键
mybatis 返回主键
mybatis自动返回主键
代码示例:下面是用的mybatis自动生成的sql语句 ,紫色部分是需要加的代码,其中绿色部分是数据库的主键,如果主键是 item_id 则绿色部分写成itemId <insert id="insertSelective" parameterType="com.rtkj.rterp.web.model.depot.DepotPushRule" useGeneratedKeys="true" k
mybatis主键返回策略
自增id 注意事项,mapper接口的参数必须是实体类形式传入才能返回插入的id,然后返回的id直接在controller插入语句下面直接调用就可以获取到了 表里的id字段必须设置成主键自增的  uuid方式,这个实体类和数据库表根上面的做了点变化,结论就是sql语句当中返回的id名不和数据库对应也能返回成功,只要根实体类相同就可以了. ...
Mybaties插入数据返回主键
&amp;lt;insert id=&quot;insert&quot; parameterType=&quot;com.cl.media.model.Advert&quot;&amp;gt;          &amp;lt;selectKey resultType=&quot;java.lang.Long&quot; order=&quot;AFTER&quot; keyProperty=&quot;advertId&quot;&amp;gt;              SELECT LAST_INSE
mapper返回自动生成的主键
&amp;amp;lt;insert id=&amp;quot;insert&amp;quot; parameterType=&amp;quot;cn.e3mall.pojo.TbContentCategory&amp;quot; &amp;amp;gt; //返回自动生成的主键 &amp;amp;lt;selectKey keyProperty=&amp;quot;id&amp;quot; resultType=&amp;quot;Long&amp;quot; order=&amp;quot
insert返回主键
在Mybatis中插入一条记录并返回该记录的主键(假设插入的是doctor) 实体 @Data public class Doctor { private int id; //医生名 private String name; //医院id private Integer hospitalId; } service int save(Doctor docto...
springJdbc 插入数据返回主键
使用Spring JdbcTemplate插入数据后,获取新插入数据的主键 public class DownloadExcelService{ @Autowired private JdbcTemplate jdbcTemplate; /** * 插入上传文件信息 * @param loginUser * @param ip ...
ibatis 返回主键问题
我的配置如下rnrn rn rn <selectKey resultClass="int" keyProperty="bsid" > rn SELECT TBLQYBSINFO_SEQ.NEXTVAL AS bsid FROM DUAL rn </selectKey> rn INSERT INTO tblqybsinforn ( userid, rn bsurl,rn bsid,rn bsname)rn VALUESrn ( #userid#,rn #bsurl#,rn #bsid#,rn #bsname)rn rn报错如下:rncom.ibatis.common.jdbc.exception.NestedSQLException: rn--- The error occurred in Xml/Tblqybsinfo.xml. rn--- The error occurred while applying a parameter map. rn--- Check the insertTblqybsinfo-InlineParameterMap. rn--- Check the statement (update failed). rn--- Cause: java.sql.SQLException: ORA-00900: 无效 SQL 语句rnrnCaused by: java.sql.SQLException: ORA-00900: 无效 SQL 语句rnrn at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:91)rn at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:446)rn at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)rn at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImpl.java:60)rn at com.icinfo.busadm.hx.dao.TblqybsinfoDao.CreateTblqybsinfo(TblqybsinfoDao.java:73)rnrn以上配置我去掉 标记将#bsid#换成TBLQYBSINFO_SEQ.NEXTVAL ,直接插入是没有问题的。rnrn请大家帮我看看
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池