最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis中返回主鍵值方式

 更新時(shí)間:2024年05月18日 09:43:14   作者:?。?!525  
這篇文章主要介紹了Mybatis中返回主鍵值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis返回主鍵值方式

1.自增長(zhǎng)類型主鍵

Mapper接口中的抽象方法

int insertEmployee(Employee employee);

SQL語(yǔ)句

<!-- int insertEmployee(Employee employee); -->
<!-- useGeneratedKeys屬性字面意思就是“使用生成的主鍵” -->
<!-- keyProperty屬性可以指定主鍵在實(shí)體類對(duì)象中對(duì)應(yīng)的屬性名,Mybatis會(huì)將拿到的主鍵值存入這個(gè)屬性 -->
<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="empId">
  insert into t_emp(emp_name,emp_salary)
  values(#{empName},#{empSalary})
</insert>

junit測(cè)試

@Test
public void testSaveEmp() {
  EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
  Employee employee = new Employee();
  employee.setEmpName("john");
  employee.setEmpSalary(666.66);
  employeeMapper.insertEmployee(employee);
  log.info("employee.getEmpId() = " + employee.getEmpId());
}

注意:

Mybatis是將自增主鍵的值設(shè)置到實(shí)體類對(duì)象中,而不是以Mapper接口方法返回值的形式返回。

2.非自增長(zhǎng)類型主鍵

而對(duì)于不支持自增型主鍵的數(shù)據(jù)庫(kù)(例如 Oracle)或者字符串類型主鍵,則可以使用 selectKey 子元素:selectKey 元素將會(huì)首先運(yùn)行,id 會(huì)被設(shè)置,然后插入語(yǔ)句會(huì)被調(diào)用!

使用 selectKey 幫助插入U(xiǎn)UID作為字符串類型主鍵示例:

<insert id="insertUser" parameterType="User">
    <selectKey keyProperty="id" resultType="java.lang.String"
        order="BEFORE">
        SELECT UUID() as id
    </selectKey>
    INSERT INTO user (id, username, password) 
    VALUES (
        #{id},
        #{username},
        #{password}
    )
</insert>

在上例中,我們定義了一個(gè) insertUser 的插入語(yǔ)句來將 User 對(duì)象插入到 user 表中。我們使用 selectKey 來查詢 UUID 并設(shè)置到 id 字段中。

通過 keyProperty 屬性來指定查詢到的 UUID 賦值給對(duì)象中的 id 屬性,而 resultType 屬性指定了 UUID 的類型為 java.lang.String。

需要注意的是,我們將 selectKey 放在了插入語(yǔ)句的前面,這是因?yàn)?MySQL 在 insert 語(yǔ)句中只支持一個(gè) select 子句,而 selectKey 中查詢 UUID 的語(yǔ)句就是一個(gè) select 子句,因此我們需要將其放在前面。

最后,在將 User 對(duì)象插入到 user 表中時(shí),我們直接使用對(duì)象中的 id 屬性來插入主鍵值。

使用這種方式,我們可以方便地插入 UUID 作為字符串類型主鍵。當(dāng)然,還有其他插入方式可以使用,如使用Java代碼生成UUID并在類中顯式設(shè)置值等。需要根據(jù)具體應(yīng)用場(chǎng)景和需求選擇合適的插入方式。

mybatis返回主鍵一直為1

1.返回的插入成功的行數(shù),這沒有錯(cuò)

而自增id則是直接映射到對(duì)象里,直接輸出 xxx.getId()即可

舉例:

在xml中:

<insert id="addUser" parameterType="blog.model.User" useGeneratedKeys="true" keyProperty="id">
......

返回影響行數(shù)

2.java中代碼

int primary = userService.addUser(user);
int id = user.getId();

上面的id就是返回的主鍵

3.批量插入

void insertBatch(List<DafSequence> list);

然后是mapper對(duì)應(yīng)的代碼:

<insert id="insertBatch" parameterType="List" useGeneratedKeys="true" keyProperty="id">
  INSERT INTO daf_sequence
  (id,table_name, cloumn_name)
  VALUES
  <foreach collection ="list" item="sequence" index="index" separator =",">
    (#{sequence.id},#{sequence.tableName}, #{sequence.cloumnName})
  </foreach >
</insert>

ps:id在list中對(duì)象里

需要注意點(diǎn)的點(diǎn)如下:

  • 1.dao中不要出現(xiàn)@param注解,集合變量名請(qǐng)使用list
  • 2.collection對(duì)應(yīng)的值請(qǐng)使用list
  • 3.數(shù)據(jù)庫(kù)版本要求3.3以上版本

說明:除了特別注意的這兩點(diǎn)之外,其他的屬于基本操作

這樣配置之后,每次批量操作之后的主鍵id就會(huì)自動(dòng)保存到對(duì)應(yīng)的對(duì)象里面了

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

民权县| 伊金霍洛旗| 平山县| 罗田县| 仁怀市| 晴隆县| 惠安县| 通化市| 怀来县| 阳春市| 武汉市| 西乌| 古田县| 米林县| 广平县| 茂名市| 肃南| 安达市| 石首市| 习水县| 松桃| 通化市| 五指山市| 梅河口市| 深圳市| 齐齐哈尔市| 广安市| 邵阳市| 桂阳县| 武夷山市| 始兴县| 南康市| 建湖县| 循化| 历史| 瑞金市| 宝山区| 元江| 封开县| 怀宁县| 股票|