mybatis使用,插入数据主从表的主表自增建如何赋值

在使用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>

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring Boot 中使用 MyBatis 操作数据库,需要进行如下配置。 1. 在 pom.xml 文件中添加 MyBatisMyBatis-SpringBoot-Starter 依赖。 ```xml <dependencies> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!-- MySQL Connector Java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> ``` 2. 配置数据源和 MyBatis。 在 application.properties 或 application.yml 文件中添加数据库连接信息。 ```yaml spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 mybatis.type-aliases-package=com.example.demo.entity mybatis.mapper-locations=classpath:mapper/*.xml ``` 其中,`mybatis.type-aliases-package` 指定实体类的包路径,`mybatis.mapper-locations` 指定 MyBatis 的 Mapper 文件路径。 3. 定义 Mapper 文件。 在 `mybatis.mapper-locations` 指定的 Mapper 文件路径下,创一个 `UserMapper.xml` 文件。 ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <insert id="insertUser" parameterType="com.example.demo.entity.User"> insert into user(name, age) values (#{name}, #{age}) </insert> </mapper> ``` 其中,`namespace` 指定 Mapper 接口的全路径名,`insert` 标签定义了插入数据的 SQL 语句,`parameterType` 指定了传入的参数类型。 4. 定义 Mapper 接口。 创一个 `UserMapper.java` 文件,并使用 `@Mapper` 注解将该接口标记为一个 Mapper 组件。 ```java @Mapper public interface UserMapper { void insertUser(User user); } ``` 其中,`@Mapper` 注解是 MyBatis 提供的,用于标记 Mapper 组件。 5. 在业务逻辑中使用 Mapper。 最后,在业务逻辑中,我们可以通过调用 `userMapper.insertUser(user)` 方法来将实体类保存到数据库中。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; public void addUser(User user) { userMapper.insertUser(user); } } ``` 以上就是使用 MyBatis 在 Spring Boot 中往插入数据的步骤。如果使用 JPA 或者其他框架操作数据库,也大致类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值