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;
    }

 

posted on 2024-04-25 16:07  邢帅杰  阅读(68)  评论(0编辑  收藏  举报