今天在做项目的中,插入一张表的id需要使用到oracle创建的序列作为id,我是这样解决的
先创建一个Mapper:
package com.sxdx.dao.mapper.extend;
/**
* 查询到当前SAwardsItemId序列的值,为后续插入做准备
* @author Attention
*/
public interface SAwardsItemIdMapper {
/**
* 查询出当前SAwardsItemId序列的值
* @return
*/
long selectSAwardsItemId();
}
在创建一个Mappe.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sxdx.dao.mapper.extend.SAwardsItemIdMapper">
<select id="selectSAwardsItemId" resultType="long">
select sawardsitemid.nextval from dual
</select>
</mapper
测试:
/**
* @author Attention
* @version1.0 2019/11/27
*/
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private SAwardsItemIdMapper sAwardsItemIdMapper;
@GetMapping("selectSAwardsItemId")
public long selectSAwardsItemId(){
long i = sAwardsItemIdMapper.selectSAwardsItemId();
return i;
}
}
最后使用,查询出来的序列值,再当作id插入到数据库表中。
这样虽然能实现功能,但是有可能效率有点低。