没有使用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) {
SqlSession session = MyBatisUtil.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User(null, "乔峰", "qf", 30);
System.out.println("新增前:"+user);
userMapper.insertUserInfo(user);
System.out.println("新增后:"+user);
session.commit();
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属性,新增后,会显示自动生成的编号