mybatis获取主键值-执行insert或update操作时

场景:当我们执行insert操作时,有时候希望获得刚刚插入的行的自增主键值

参考文献:

1.《spring+mybatis企业应用实战》第157页(主要)

2.http://blog.csdn.net/lklinkang/article/details/6185927

3.http://wenku.baidu.com/view/4c7d0d2605087632301212b7.html

实现方法:

1.设置:mapper的xml语句中要加入如下2个属性useGeneratedKeys="true" keyProperty="id";如下索所示。其中keyProperty中的值是执行insert时作为参数传入的对象的一个属性值,一般会设置为id,例如下面的是一个名为Order的对象,keyProperty里的“id”是Order对象的一个属性,这里也可以设置成其他的属性,mybatis是把获取的主键值,注意,是主键值,所以要注意自己设置的主键时什么,按需索取。

<insert id="insertOrder" parameterType="Order" useGeneratedKeys="true" keyProperty="id">
		INSERT INTO shop_order
		(total,creatTime,userId)
		VALUES (#{total},#{creatTime},#{userId})
	</insert>

Order对象如下,忽略了set和get方法

public class Order {

	private int id;// 订单id
	private double total;// 订单总金额
	private Date creatTime;// 订单产生的时间
	private int userId;// 用户id
}

2.获取

@Autowired
	private OrderDao orderDao;

Order order = new Order();// 订单实体
		order.setCreatTime(creatTime);// 往订单中放入订单时间
		order.setTotal(total);// 往订单中放入订单总金额
		order.setUserId(userId);// 往订单中放入订单用户的id

		orderDao.insertOrder(order);// 向数据库插入订单
		int oid = order.getId();// 获取主键id

上面代码中的3个set操作和获取主键id没有关系,这代码是我自己写的项目里摘录的。

解释:先new一个对象,这个对象将用我们的mybatis实现的orderDao执行insert,把order对象属性插入数据库,完成orderDao.insertOrder(order)这步后,mybatis会把刚刚插入数据库的这行数据的主键值放入到order对象的id属性中(第一步中讲了,可以设置成插入到其他属性),最终,oid即是我们要的主键值。

完毕!

转载于:https://my.oschina.net/Cubicluo/blog/849109

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值