本文在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();
}
}