Mybatis --- 使用主键生成策略

Mybatis — 使用主键生成策略

上一篇说到Mybatis的全局配置内容 Mybatis — 全局配置文件
这一篇主要来讲解Mybatis如何使用到主键生成策略
完整目录结构 :

在这里插入图片描述

  • 首先我们先了解一下Mybatis中的主键生成方式
    1. 若数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),则可以设置useGeneratedKeys=”true”,然后再把keyProperty 设置到目标属性上。
    EmployeeMapper.xml :
    <!-- public void addEmp(Employee employee); -->
    <!-- parameterType:参数类型,可以省略, 
    获取自增主键的值:
    	mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys();
    	useGeneratedKeys="true";使用自增主键获取主键值策略
    	keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性
    -->
    <insert id="addEmp" parameterType="cbuc.life.bean.Employee"
    	useGeneratedKeys="true" keyProperty="id" databaseId="mysql">
    	insert into employee(last_name,email,gender) 
    	values(#{lastName},#{email},#{gender})
    </insert>
    
    test :
    @Test
    public void test03() throws IOException{
    	SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    	//1、获取到的SqlSession不会自动提交数据
    	SqlSession openSession = sqlSessionFactory.openSession();
    	try{
    		EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    		//测试添加
    		Employee employee = new Employee(null, "jerry4",null, "1");
    		mapper.addEmp(employee);
    		System.out.println(employee.getId());		//使用了useGeneratedKeys,我们就可以直接在这里获取到插入的id
    		//2、手动提交数据
    		openSession.commit();
    	}finally{
    		openSession.close();
    	}
    }
    
    2. 而对于不支持自增型主键的数据库(例如Oracle),则可以使用 selectKey 子元素:selectKey 元素将会首先运行,id 会被设置,然后插入语句会被调用 :

在这里插入图片描述

selectKey上的属性值设置 如下图 :

在这里插入图片描述

以上便是Mybatis中的主键生成策略, 欢迎参考交流…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值