【发布时间】:2014-12-03 07:07:55
【问题描述】:
我无法从函数中取回值。它在表上进行插入,并且必须返回一个数字。数据插入正确,但返回的数字始终为空。
Mysql
create table driver_order (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
area_start varchar(200),
area_end varchar(200),
order_number varchar(200),
create_user varchar(200),
primary key (id)
);
DELIMITER $$
CREATE TRIGGER seq_driver_order_number BEFORE INSERT ON driver_order
FOR each ROW
BEGIN
DECLARE seq_type INT(10);
SET seq_type = getUserNo(NEW.create_user);
SET NEW.order_number = getNextCommSequence("motor", seq_type);
END$$
DELIMITER ;
Mybatis
<insert id="insertOrder" useGeneratedKeys="true" keyProperty="id" parameterType="DriverOrder">
INSERT INTO
DRIVER_ORDER(ID,ORDER_NUMBER,AREA_START,AREA_END,CREATE_USER,CREATE_TIME)
VALUES
(#{id},
#{orderNumber,jdbcType=VARCHAR},
#{areaStart,jdbcType=VARCHAR},
#{areaEnd,jdbcType=VARCHAR},
#{createUser,jdbcType=VARCHAR},
now())
</insert>
返回对象的所有属性都有正确的值包括id,除了order_number,它的TRIGGER设置值为返回null。 有什么问题吗?
【问题讨论】:
-
#{id}或任何其他值/元组在您的插入语句中是唯一的吗?那么你可以使用<selectKey>。 -
是的,是双唯一键,有id和orderNumber,id是AUTO_INCREMENT,orderNumber是语义序列
标签: java mysql sql spring mybatis