mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键,至于其他的手动生成唯一主键的问题在这里就不讨论了,这里主要说明下在mybatis中对于自增主键的配置。 在MyBatis中,处理自增主键是一个常见的需求,特别是在Oracle和MySQL这两个数据库中。Oracle通常使用Sequence来生成自增主键,而MySQL则直接通过表定义的自增属性来处理。以下将详细讲解这两种数据库在MyBatis中的自增主键配置。 1. **Oracle Sequence 配置** 在Oracle中,你可以创建一个Sequence来生成唯一的序列号。在MyBatis中,你需要定义一个SQL片段来引用这个Sequence。以下是一个例子: ```xml <sql id='TABLE_NAME'>TEST_USER</sql> <sql id='TABLE_SEQUENCE'>SEQ_TEST_USER_ID.nextval</sql> <insert id="insert" parameterType="User"> insert into <include refid="TABLE_NAME" /> (ID,NAME,AGE) values ( <include refid="TABLE_SEQUENCE"/> ,#{name}, #{age} ) </insert> ``` 这样的配置意味着在插入数据时,MyBatis会自动调用`SEQ_TEST_USER_ID.nextval`来获取新的主键值。然而,这种方式不会将生成的主键值设置回插入的对象,例如`User`对象的`id`字段。 2. **MySQL 自增主键配置** MySQL允许你在表定义时声明某个字段为主键并自动递增。MyBatis在处理MySQL时,只需在插入语句中忽略主键字段即可,如下所示: ```xml <sql id='TABLE_NAME'>TEST_USER</sql> <insert id="insert" parameterType="User"> insert into <include refid="TABLE_NAME" /> (NAME,AGE) values (#{name}, #{age}) </insert> ``` 这样MySQL会在插入数据时自动分配并设置主键值,但同样不会将这个值返回给插入的对象。 3. **插入后获取自增主键值** 如果需要在插入数据后获取自增的主键值,MyBatis提供了`<selectKey>`元素来实现这一功能。这通常在处理一对多关系,需要新主键值来关联多端数据时非常有用。 对于Oracle,配置如下: ```xml <sql id='TABLE_NAME'>TEST_USER</sql> <sql id='TABLE_SEQUENCE'>SEQ_TEST_USER_ID.nextval</sql> <insert id="insert" parameterType="User"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> select <include refid="TABLE_SEQUENCE"/> from dual </selectKey> insert into <include refid="TABLE_NAME" />(ID,NAME,AGE) values ( #{id}, #{name}, #{age} ) </insert> ``` 这里`<selectKey>`元素会在插入语句之前执行,获取Sequence的下一个值,并将其设置到`User`对象的`id`字段。然后才执行插入语句。 MyBatis提供了一套灵活的机制来处理不同数据库的自增主键。对于Oracle,可以通过Sequence来生成主键,而对于MySQL,可以直接依赖其内置的自增特性。如果需要在插入后获取主键值,可以利用`<selectKey>`元素。在编写MyBatis映射文件时,根据具体数据库类型和业务需求进行适当的配置即可。


























- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【推荐下载】工业自动化多元发展-机器视觉应用广泛(1).pdf
- 网站维护协议(1).doc
- 信息化教学设计参考模板(1).doc
- “互联网+”时代财务调整太快-4把刷子应对财务管理转型【会计实务经验之谈】(1).doc
- 苯乙炔加氢过程PLC控制系统可行性研究(1).docx
- Mainly-revision-Lesson-61(1).docx
- 基于单片机多功能电子时钟的设计(1).docx
- 【推荐下载】借鉴四次工业革命-促进工业物联网发展(1).pdf
- 电子商务试卷及答案(3)(1).doc
- 互联网+背景下小学思想政治教育探究(1).docx
- 互联网金融下小微企业融资模式创新研究(1).docx
- 对计算机网络安全策略及安全技术的若干思考的论文-计算机网络论文(1).docx
- 会计实务:使用计算机开票(行政许可)-0(1).doc
- 基于互联网+背景下的会计改革与发展研究(1).docx
- 【推荐下载】互联网+工业4.0标准-大数据资源成我国优势(1).pdf
- 特色农产品电子商务发展研究(1).docx


