MySql获取插入记录自增主键ID值

来源:互联网 发布:盐城市阳光扶贫大数据 编辑:程序博客网 时间:2024/05/18 10:54

现在这种场景偏多,获取的方式也很多。像MyBatis和Hibernate都有方式去获取该值。

现在简单讲讲MyBatis是获取插入记录自增主键ID值的。

public class Stu {    private int id;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

StuDao.java

public interface StuDao {    public int insertStu(Stu stu);}

stuDao.xml

<mapper namespace="org.zjc.dao.StuDao">    <insert id="insertStu" parameterType="org.zjc.entity.Stu" useGeneratedKeys="true" keyProperty="id">          insert into stu(Name) values (#{name,jdbcType=VARCHAR})    </insert></mapper>

JUnit4

    public void TestinsertStu() throws Exception {        Stu stu = new Stu();        stu.setName("吕布");        int i = stuDao.insertStu(stu);        System.out.println(i);        System.out.println(stu.getId());    }

这里的i代表影响的行数。
执行完stuDao.insertStu(stu)就会将本次插入的记录的自增主键ID赋值到stu对象的id中。

你可以理解stuDao.insertStu(stu)干了这两件事:
1.先往表中插入了记录
2.调用了stu.setId方法

useGeneratedKeys默认为false。该字段代表设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。在这里我们设置字段值为true,然后设置keyProperty的值。keyProperty的值注意必须和实体类的主键名一致,(注意不是数据库表的自增主键字段名)。

如果没有用MyBatis。那么直接调用getGeneratedKeys()方法。

Connection conn = ;        Serializable ret = null;        PreparedStatement state = .;        ResultSet rs=null;        try {            state.executeUpdate();            rs = state.getGeneratedKeys();            if (rs.next()) {                ret = (Serializable) rs.getObject(1);            }               } catch (SQLException e) {        }         return ret;

ret就是插入记录的自增主键ID值

0 0
原创粉丝点击