zoukankan      html  css  js  c++  java
  • mybatis插入数据返回自增主键id

    1. mybatis返回主键的方式有两种 , 我用的是下面这种
    useGeneratedKeys : 为true,返回主键id的值

    keyProperty : java对象成员属性名

    keyColumn : 数据库字段 

    <insert id="addCommodity"  useGeneratedKeys="true" keyProperty="CommodityId" parameterType="com.anonymity.project.InsertExcel.Commodity" >
    INSERT INTO
       Commodity (
          CommodityCode,
          name,
          Title,
          Summary,
          STATUS,
          CreateTime,
          
       )
    VALUES
          (#{commodity.commodityCode},#{commodity.name},#{commodity.title},#{commodity.summary},0,NOW())
       </insert>
    @Mapper
    public interface ReadExcelMapper {
    
        int addCommodity(@Param("commodity") Commodity commodity);
    
    }

    上面的代码 , 可以正常的插入数据 , 但是返回的数据是插入的行数 , 不是 主键id

    2. 解决办法 :  将pojo对象 中的参数 , 改成和数据库一致 ( 注意大小写

    <insert id="addCommodity"  useGeneratedKeys="true" keyProperty="CommodityId" parameterType="com.anonymity.project.InsertExcel.Commodity" >
                INSERT INTO
                    Commodity (
                        CommodityCode,
                        name,
                        Title,
                        Summary,
                        STATUS,
                        CreateTime
                    )
                VALUES
                        (#{CommodityCode},#{Name},#{Title},#{Summary},0,NOW())
                    </insert>

    去掉mapper接口中的 @Param 注解

    @Mapper
    public interface ReadExcelMapper {
    
        int addCommodity(Commodity commodity);
    
    }

    注意 : @Param 的使用

    使用@Param时注意的问题
    1.
    ●当用@Param注解来声明参数时,使用# {}或者${}都可以
    ●当不使用@Param注解时,必须使用#{},否则会报错
    
    2.
    如果是多个参数 , 要用@Param注解区分

    注解是把双刃剑 , 

    3. 注意 , 返回的主键不是你接收的数据 , 是在你的 pojo 对象里面 , 通过get方法来获取

    int CommodityId= readExcelServiceImpl.addCommodity(commodity);
    
                System.out.println(CommodityId);
    
                int commodityId = commodity.getCommodityId();
    
    
    //  CommodityId ==1;
    
    // commodityId == 主键 id ; 

     结束 , 感谢帮我解决这个问题的朋友  Auster.

  • 相关阅读:
    [luogu p1164] 小A点菜
    [luogu p5018] 对称二叉树
    [luogu p1305] 新二叉树
    [luogu p1030] 求先序排列
    [luogu p1087] FBI树
    [luogu p1449] 后缀表达式
    [luogu p1160] 队列安排
    [luogu p1057] 传球游戏
    有趣的问题系列-主元素问题
    [luogu p1192] 台阶问题
  • 原文地址:https://www.cnblogs.com/Anonymity-zhang/p/13331630.html
Copyright © 2011-2022 走看看