原本的方法
使用原本的JDBC去获取主键自增的方法如下图所示:
 在这段代码中,通过连接对象
在这段代码中,通过连接对象 conn 的 prepareStatement 方法创建了一个PreparedStatement对象,并将SQL语句和 RETURN_GENERATED_KEYS 常量作为参数传递给该方法。这意味着执行SQL语句后,PreparedStatement对象会返回生成的键值,通常用于获取自动生成的主键值或其他需要返回的键值信息。
使用Mybatis之后的方法
Mapper层
int register(@Param("user")User user);xml文件
<insert id="register" parameterType="com.xszx.beans.User" useGeneratedKeys="true" keyProperty="id">
    insert into user(loginname, pwd)  values (#{user.loginname},#{user.pwd})
 
</insert>Servlet层
 User user = new User();
  String name = req.getParameter("name");
  String pwd = req.getParameter("pwd");
  user.setLoginname(name);
  user.setPwd(pwd);
  userMapper.register(user);
System.out.println(user.getId());
当servlet层中调用了register(user)方法时,会先去mapper层中找到该方法,然后系统会去xml文件中扫描对应的方法,此时我们首先要确保数据库的主键是自动递增的,这样,当你插入数据时,MyBatis 会自动获取生成的 ID 并将其设置到 User 对象的 id 属性上。
-  parameterType="com.xszx.beans.User"表示这个<insert>语句期望的参数是一个User对象,这个对象应该包含loginname和pwd属性。
-  useGeneratedKeys="true"和keyProperty="id"表示MyBatis应该使用数据库生成的键(通常是自增ID)来填充User对象的id属性。
-  insert into user(loginname, pwd) values (#{user.loginname},#{user.pwd})是SQL插入语句,它将User对象的loginname和pwd属性插入到user表中。
注意
此方法并不是直接返回自增的id,而是将自增的id赋值给了user对象的id值,所以我们如果想获取自增id,那么我们应该使用user.getId()的方法来获取。



















