在使用mybatis中我们经常需要插入数据。给主表插入一条数据,给从表插入若干条数据,但是从表需要插入主表里自增的Id来维持关系。
我知道的,mybatis做法有两种:
1.例如:注意这两个属性useGeneratedKeys="true" keyProperty="report.reportId"
useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中
useGeneratedKeys 取值范围true|false 默认值是:false。 含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyPropert设置的领域模型属性中
<insert id="insertAvailableRateReport" useGeneratedKeys="true" keyProperty="report.reportId" parameterType="com.webank.ims.config.bean.availableRate.AvailableRateReport"> REPLACE INTO webank_available_rate_report (report_id,report_name,event_id,start_time,end_time,status,creator,remark) VALUES ( #{report.reportId},#{report.reportName},#{report.eventId},#{report.startTime},#{report.endTime},#{report.status},#{report.creator},#{report.remark} ) </insert>
2.例如:注意
<selectKey resultType="java.lang.Long" keyProperty="groupId" order="AFTER">SELECT LAST_INSERT_ID() AS groupId</selectKey>
参考文章selectKey的使用
<insert id="addBatchScheduleGroup" parameterType="com.webank.ims.config.bean.batch.ComBatchScheduleGroup"> <selectKey resultType="java.lang.Long" keyProperty="groupId" order="AFTER"> SELECT LAST_INSERT_ID() AS groupId </selectKey> INSERT INTO com_batch_schedule_group ( group_id, group_name, domain_id ) VALUES ( #{groupId}, #{groupName}, #{domainId} ) </insert>
相关推荐
本篇文章将详细介绍如何利用Java和MyBatis实现批量插入数据到Oracle数据库中。 首先,我们需要理解Oracle数据库的一些基本概念。Oracle是世界上最流行的商业关系型数据库管理系统之一,以其强大的功能和高可靠性而...
在IT行业中,构建高效、可扩展的分布式系统常常需要使用主从数据库架构,以实现读写分离,提高系统的并发处理能力和数据安全性。本项目基于SpringBoot 2.0框架和MyBatis持久层技术,实现了主从数据库双数据源的配置...
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"spring +springmvc+mybatis+shiro+主从库+quartz"的组合则提供了一个强大的基础架构。这个框架集成方案主要包含了以下几个核心组件,每个都有其独特的作用和...
MyBatis提供了一种直观的方式来插入数据。首先,我们需要在Mapper接口中定义一个插入方法,并在XML配置文件中编写对应的SQL语句: ```java // Mapper接口 public interface MyTableMapper { void insertUser(User ...
本文将详细介绍如何使用Mybatis实现多表联合查询和批量插入。 一、多表联合查询 在实际开发中,经常需要对多个表进行联合查询,例如,查询员工信息同时需要关联部门信息和职位信息。Mybatis提供了强大的联合查询...
至于自动更新数据表的功能,MyBatis Plus提供了实体类监听器(EntityListener),通过实现特定接口,可以在插入、更新或删除时执行自定义操作。创建一个监听器类,比如`AutoUpdateTableListener.java`: ```java ...
在XML配置文件中,我们可以使用foreach标签来批量插入数据。例如: ```xml insert into user(id,account,password,active,status,name,gender,active_date,expiry_date,type,remark,group_id,disable,exam_number,...
Mybatis基于注解实现多表查询功能是指使用Mybatis框架中的注解来实现多表查询的功能。这种方法可以简化配置,提高开发效率。下面我们将详细介绍如何使用Mybatis基于注解实现多表查询功能。 一、多表查询的概念 在...
主从复制是指一个MySQL实例作为主节点,其他实例作为从节点,从节点实时同步主节点的数据变化。这需要以下步骤: 1. **配置主节点**:在主节点的my.cnf文件中开启二进制日志,并设置server-id。 2. **配置从节点**...
MyBatis批量插入数据到Oracle数据库中的两种方式 MyBatis是一款流行的持久层框架,提供了批量插入数据到数据库的功能。本文将通过实例代码,分享MyBatis批量插入数据到Oracle数据库中的两种方式。 第一种方式:...
这里我们使用Mybatis的注解来定义SQL语句,`@Insert`用于创建临时表,`@Select`用于查询临时表中的数据。注意,临时表在会话结束时会被自动删除,所以它们只对当前连接可见。 接着,我们需要创建一个对应的实体类`...
总结起来,MyBatis提供了一种灵活的方式,允许开发者直接执行SQL查询和批量插入数据。在使用时,需要注意SQL字符串的编写规范,理解#{}和${}的区别,以及合理利用`<foreach>`标签进行批量操作。这使得MyBatis不仅...
spring boot+mybatis 数据库文件(可选) 启动项目自动生成对应实体的数据库表,示例中自动生成SysUser,User实体对应的数据库表sys_user,user 依赖包文件(可选) maven管理依赖包,自动下载 链接:...
【Mybatis代码插入工具】是一种基于Java开发的实用工具,用于简化Mybatis框架中的SQL映射文件和Mapper接口的创建过程。它通过自动化的方式,帮助开发者快速生成与数据库表结构对应的实体类、Mapper接口以及XML配置...
针对这一需求,"mybatis 存储数据对象数据自动加解密插件"应运而生,它旨在为Mybatis提供一个便捷的数据加解密解决方案,以确保数据在存储和检索过程中的安全性。 该插件的工作原理是在数据被持久化到数据库之前...
在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...
例如,我们可以定义主库为主数据源,从库为备用数据源。 ```yaml spring.datasource.primary.url=jdbc:mysql://localhost:3306/master_db?useUnicode=true&characterEncoding=utf8 spring.datasource.primary....
添加映射—— <!... PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> insert into stu_tbl(name,age) values(#{name},#{age}) </mapper>
在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...
解析SQLMapper文件: 首先需要解析SQLMapper文件,提取其中定义的SQL语句,包括创建表、修改表结构、插入数据等相关SQL语句。 解析SQL语句: 对于每一条SQL语句,需要解析其中的表名、字段名、数据类型、约束条件等...