mybatis的insert方法的主键

nodaywawa 2015-11-19 09:34:50
<insert id="insertStudent" parameterType="Student" useGeneratedKeys="true"
keyProperty="studId">
INSERT INTO STUDENTS(NAME, EMAIL, PHONE)
VALUES(#{name},#{email},#{phone})
</insert>
数据库不用设置相应的id列为auto_increase吗,就设个一般类型的列就行了吗,mysql可以,oracle只有序列不行,那sql server呢,只能用uuid?一般主键都是怎么设置的,不是至少有 select max(id)吗,不能统一用这种方法?mybatis为什么不统一采用这种策略?
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nodaywawa 2015-11-19
  • 打赏
  • 举报
回复
引用 1 楼 jxplus 的回复:
要是按你那个配置,需要将studId设为自增字段。mysql,sql server都支持设置自增字段。 对于oracle的话,可以用下面的配置: <insert id="insertStudent" parameterType="Student"> <selectKey keyProperty="studId" resultType="int" order="BEFORE"> select ID_SEQUENCE.nextval from dual </selectKey> INSERT INTO STUDENTS(STUDID, NAME, EMAIL, PHONE) VALUES(#{studId}, #{name}, #{email}, #{phone}) </insert> 其实mysql和sql server也可以统一用oracle的那种格式,不过查询id的方法得改为: mysql的语句是:select LAST_INSERT_ID() sql server的语句是:Select IDENT_CURRENT(STUDENTS)
<insert id="insertStudent" parameterType="Student"> <selectKey keyProperty="studId" resultType="int" order="BEFORE"> SELECT MAX(STUD_ID)+1 FROM STUDENTS </selectKey> INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL) VALUES(#{studId},#{name},#{email}) </insert> 这样写是不是效率比较低?
  • 打赏
  • 举报
回复
你用的是mysql的话,你这个配置就可以了。如果是oracle,你可以自己写个自增序列,然后获取SEQ_STUDENT_ID.nextval sql server的配置参考
jxplus 2015-11-19
  • 打赏
  • 举报
回复
要是按你那个配置,需要将studId设为自增字段。mysql,sql server都支持设置自增字段。 对于oracle的话,可以用下面的配置: <insert id="insertStudent" parameterType="Student"> <selectKey keyProperty="studId" resultType="int" order="BEFORE"> select ID_SEQUENCE.nextval from dual </selectKey> INSERT INTO STUDENTS(STUDID, NAME, EMAIL, PHONE) VALUES(#{studId}, #{name}, #{email}, #{phone}) </insert> 其实mysql和sql server也可以统一用oracle的那种格式,不过查询id的方法得改为: mysql的语句是:select LAST_INSERT_ID() sql server的语句是:Select IDENT_CURRENT(STUDENTS)
jxplus 2015-11-19
  • 打赏
  • 举报
回复
你上面那个写法,数据量大的话,效率会是个问题。 但优先要考虑的是,还有可能出现并发的问题,所以最好是不用这个。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧