MyBatis:MySQL一对多主键映射的两种方式


本文在MyBatis一对多关联查询的基础上续写,详情参考下面链接:
https://blog.csdn.net/m0_52331159/article/details/129311306

1 方式一:通过元素的属性获取主键

添加元素,用useGeneratedKeys属性获取数据内部产生的主键值,keyProperty属性用于指定主键。这种方式仅适用于数据库主键自增的场景。

1.1 修改映射文件

<!--  主键映射 1  -->
    <insert id="addStuClass01" parameterType="stuClass"
    useGeneratedKeys="true" keyProperty="cid">
        insert into stu_class(cname,sum) values (#{cname},#{sum})
    </insert>

在这里插入图片描述

1.2 编写测试类

package com.qfedu.test;

import com.qfedu.pojo.StuClass;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class TestAddStuClass {
    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        String resource = "mybatis-config.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            //2.创建SQLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            //3.创建SqlSession对象
            SqlSession sqlSession = factory.openSession();
            StuClass stuClass = new StuClass();
            stuClass.setCname("Java1803");
            stuClass.setSum(50);
            //4.调用SqlSession的insert()方法查询
            int result = sqlSession.insert("stuClass.addStuClass01",stuClass);
            if(result>0){
                System.out.println("成功插入"+result+"条数据");
                System.out.println("插入数据的主键cid为:"+stuClass.getCid());
            }else{
                System.out.println("插入操作失败");
            }
            //5.提交事务
            sqlSession.commit();
            //6.关闭SqlSession
            sqlSession.close();
    }
}

在这里插入图片描述

在这里插入图片描述

2 方式二:通过元素的子元素获取主键

添加元素,用子元素获取主键值。
这种方式不仅适用于数据库主键自增的场景,而且适用于主键不自增的场景。

2.1 修改映射文件

 <!--  主键映射 2 -->
    <insert id="addStuClass02" parameterType="stuClass">
        insert into stu_class(cname,sum) values (#{cname},#{sum})
        <selectKey keyColumn="cid" keyProperty="cid" resultType="Integer" order="AFTER">
            select LAST_INSERT_ID()
        </selectKey>
    </insert>

在这里插入图片描述

2.2 编写测试类

package com.qfedu.test;

import com.qfedu.pojo.StuClass;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class TestAddStuClass {
    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        String resource = "mybatis-config.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            //2.创建SQLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            //3.创建SqlSession对象
            SqlSession sqlSession = factory.openSession();
            StuClass stuClass = new StuClass();
            stuClass.setCname("Java1803");
            stuClass.setSum(50);
            //4.调用SqlSession的insert()方法查询
            int result = sqlSession.insert("stuClass.addStuClass02",stuClass);
            if(result>0){
                System.out.println("成功插入"+result+"条数据");
                System.out.println("插入数据的主键cid为:"+stuClass.getCid());
            }else{
                System.out.println("插入操作失败");
            }
            //5.提交事务
            sqlSession.commit();
            //6.关闭SqlSession
            sqlSession.close();
    }
}

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值