没有使用useGeneratedKeys属性时

--UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 配置映射
namespace : 命名空间(通俗说法: 给当前映射文件的唯一标识:起一个唯一的名字)	
值必须是对应映射接口文件的全限定名
全限定名:包名+简单名称(接口名)
 -->
<mapper namespace="com.mybatis.mapper.UserMapper">
	<!-- 新增操作
		id: 当前功能的唯一标识,必须跟接口中对应的功能方法名称一致 
		parameterType : 参数的类型,必须和接口中对应的功能方法的参数类型相同,值必须是全限定名
	 -->
	<insert id="insertUserInfo" parameterType="com.mybatis.pojo.User">
	<!--  OGNL语法
       #{对象的属性名称或者map的key}
	 -->
    insert into user(username,password,age) values(#{username},#{password},#{age})
    </insert>
</mapper>

--测试代码

package com.mybatis.test;

import org.apache.ibatis.session.SqlSession;

import com.mybatis.mapper.UserMapper;
import com.mybatis.pojo.User;
import com.mybatis.util.MyBatisUtil;

public class UserMapperTest {

	public static void main(String[] args) {
		//1.创建SqlSession操作对象
		SqlSession session = MyBatisUtil.openSession();
		
		//2.创建UserMapper接口的代理对象
		UserMapper userMapper = session.getMapper(UserMapper.class);

		
		//3.创建用户对象
		User user = new User(null, "乔峰", "qf", 30);
		
		System.out.println("新增前:"+user);
		
		//4.执行UserMapper的插入操作
		userMapper.insertUserInfo(user);
		
		System.out.println("新增后:"+user);
		
		//5.提交事务
		session.commit();
		
		//6.关闭session
		session.close();

	}
}

--运行结果

在这里插入图片描述

使用useGeneratedKeys属性时

--UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 配置映射
namespace : 命名空间(通俗说法: 给当前映射文件的唯一标识:起一个唯一的名字)	
值必须是对应映射接口文件的全限定名
全限定名:包名+简单名称(接口名)
 -->
<mapper namespace="com.mybatis.mapper.UserMapper">
	<!-- 新增操作
		id: 当前功能的唯一标识,必须跟接口中对应的功能方法名称一致 
		parameterType : 参数的类型,必须和接口中对应的功能方法的参数类型相同,值必须是全限定名
		keyColumn :数据表中主键对应的列
		keyProperty :数据表的主键列对应pojo中属性的名称
		useGeneratedKeys="true" : 是否返回数据库自动生成的主键给pojo属性,true 是,false-->
	<insert id="insertUserInfo" parameterType="com.mybatis.pojo.User"
	 useGeneratedKeys="true" 
	 keyColumn="id"
	 keyProperty="id"
	>
	<!--  OGNL语法
       #{对象的属性名称或者map的key}
	 -->
    insert into user(username,password,age) values(#{username},#{password},#{age})
    </insert>
</mapper>

--测试代码

跟上面一样

--测试结果

在这里插入图片描述

发现

我们会发现insert标签添加useGeneratedKeys属性,新增后,会显示自动生成的编号
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐