mybatis只sql語句插入新行後返回主鍵自增列或者非自增列

1.執行完insert語句,返回自增列最新的值。
兩種方式

<insert id="create" parameterType="com.xcg.webapp.model.entity.Production" useGeneratedKeys="true" keyProperty="production_id">
        insert into production(production_code,production_name,img_url,spec,purchase_price,sales_price,production_status) values(#{production_code},#{production_name},#{img_url},#{spec},#{purchase_price},#{sales_price},#{production_status});
    </insert>

    <insert id="create2" parameterType="com.xcg.webapp.model.entity.Production">
        <selectKey keyProperty="production_id" keyColumn="production_id" order="AFTER" resultType="java.lang.Integer">SELECT LAST_INSERT_ID()</selectKey>
        insert into production(production_code,production_name,img_url,spec,purchase_price,sales_price,production_status) values(#{production_code},#{production_name},#{img_url},#{spec},#{purchase_price},#{sales_price},#{production_status});
    </insert>

2.執行insert語句,返回非自增主鍵的值。
非自增我改成了String類型,在插入前給主鍵參數id賦值,對應屬性名id,對應列名id:
<selectKey keyProperty="production_id" keyColumn="production_id" order="BEFORE" resultType="java.lang.String">select replace(UUID(),'-','')</selectKey>
執行完後,會自動給對象中的屬性賦值,而方法的返回值是受影響行數。

@GetMapping("/create2")
    public Object create2(){
        Production production = new Production();
        production.setProduction_code("1003");
        production.setProduction_name("橙汁2");
        production.setSpec("500ml");
        production.setProduction_status("10");
        production.setPurchase_price(new BigDecimal("2"));
        production.setSales_price(new BigDecimal("4"));
        production.setImg_url("");
        //受影響行數
        var count = productionService.create(production);
        //這纔是最新id
        int pid = production.getProduction_id();
        return pid;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章