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