1. 程式人生 > >MySql獲取插入記錄自增主鍵ID值

MySql獲取插入記錄自增主鍵ID值

現在這種場景偏多,獲取的方式也很多。像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值