首页 > 数据库 >mybatis只sql语句插入新行后返回主键自增列或者非自增列

mybatis只sql语句插入新行后返回主键自增列或者非自增列

时间:2024-04-25 16:12:44浏览次数:18  
标签:status code price 增列 非自 production id 主键

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

 

标签:status,code,price,增列,非自,production,id,主键
From: https://www.cnblogs.com/xsj1989/p/18157916

相关文章

  • postgresql重置序列和自增主键
    1.问题背景数据表中插入了几条测试数据,后又手动删除,导致后面插入数据的时候报主键冲突:ERROR:duplicatekeyvalueviolatesuniqueconstraint"tableName_pkey"DETAIL:Key(id)=(1)alreadyexists.12即使采用INSERTIGNORE的方式或者REPLACEINTO的方式还是报错,所以就想......
  • 通过JPA注解获取某个类主键字段
    123456789101112131415161718public StringgetPkColumn(StringclassName){    StringpkColumn= null;    try {        Classclazz=Class.forName(className);        Field[]fields=clazz.getDeclaredFiel......
  • 解析oracle的DDL语句生成高斯内表及表字段主键配置
    oracle的DDL语句如下:CREATETABLETPPROD.CONFIG( NOVARCHAR2(50), CONFIGCODEVARCHAR2(400), CONFIGVALUEVARCHAR2(400), CONSTRAINTPK_GUENDORASSISTCONFIGPRIMARYKEY(NO,CONFIGCODE));CREATEUNIQUEINDEXPK_GUENDORASSISTCONFIGONTPPROD.GUENDORASSI......
  • 默认值和主键
    --1.切换到master数据库usemastergo--2.检查删除数据库ifexists(select*fromsys.sysdatabaseswherename='student')dropdatabasestudentgo--3.按照四个步骤创建student数据库createdatabasestudenton(name=student_data,filename='c:\student\student_data......
  • 民航电子数据库:表主键为自增,insert时报错:[E16005] 字段xxx不能取空值
    目录一、场景二、报错信息三、排查四、原因五、解决一、场景1、对接民航电子数据库2、表的主键为自增主键,使用mybatis封装好的insert方法新增记录时报错二、报错信息###Errorupdatingdatabase.Cause:java.sql.SQLException:[E16005]字段ID不能取空值......
  • KingbaseES 为什么select主键列不走索引
    背景有客户提出一个问题。一个类似这样的SQL语句,selectcount(id)from为什么执行计划用全表扫,不用索引。id列上有主键。分析test=#explain(analyze,buffers)selectcount(id)fromt1;QUERYPLAN---------------......
  • ODBC批量merge中出现主键冲突的分析
    ODBC批量merge中出现主键冲突的分析一、文档概括客户某个merge语句运行时,发生主键冲突报错。经分析,其原因如下:由于merge语句中,ON里的判断条件(谓词)中存在带精度定义的数字字段,在绑定变量传递过程中,驱动将数值高精度数字传过去,而数据库内的数据已经做了精度限制,导致在......
  • 数据库中的约束纯干货——主键约束
    目录(一)特点:(二)添加主键约束2.1格式:2.2举例:......
  • Mysql(数据库)知识详解【4】~{索引,主键优化}
    记住满元素中间元素向上裂变就行了因为如果是5个节点,比第一个节点小的算一个指针,逼最后一个节点大的算一个指针,里面是4个指针所有元素都会出现在叶子节点并且诸多叶子节点通过指针构造一张单项链表看我:除了最下面节点,上面的节点(叶子空间最大16k)全部放满内存......
  • ORACLE 在缺少主键ID的情况下删除重复数据,只保留一行
    有时候因未进行数据验证或其他特殊场景,导致数据表中出现重复的数据,需要对重复数据进行删除,并且只保留其中一条。一、当数据表存在主键时,可使用ROW_NUMBER进行排序后删除,参考脚本如下:  删除带有主键的重复数据DELETEFROMDUPLICATES_TABLEWHEREIDIN(SELECTID......