成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mybatis基本映射--INSERT

csRyan / 2492人閱讀

摘要:概述本章學(xué)習(xí)基本映射相關(guān)知識(shí)點(diǎn)。表示執(zhí)行該語句將清空一級(jí)二級(jí)緩存,默認(rèn)為。賦值主鍵的字段名,即把數(shù)據(jù)庫內(nèi)部生產(chǎn)的主鍵賦值給該字段。

概述

本章學(xué)習(xí)Mysql基本映射--INSERT相關(guān)知識(shí)點(diǎn)。insert的用法比select要簡(jiǎn)單很多。

本系列文章是基于Mybatis 3.4.6 版本,數(shù)據(jù)庫使用的是Mysql 5.7。

INSERT標(biāo)簽

insert標(biāo)簽常用屬性:

id:可以理解為Mybatis執(zhí)行語句的名稱,與Mapper接口一一對(duì)應(yīng),此屬性為必須屬性,且在命名空間(mapper標(biāo)簽的namespace)中唯一。

parameterType:該屬性的含義就是其字面意思,即傳入語句的參數(shù)類型,是類的全限定類名,非必須。

flushCache:表示執(zhí)行該語句將清空一級(jí)、二級(jí)緩存,默認(rèn)為true。

timeout:超時(shí)時(shí)間,即程序提交sql語句到數(shù)據(jù)庫等待的時(shí)間,超過此設(shè)置時(shí)間將拋出超時(shí)異常,默認(rèn)設(shè)置是不超時(shí),也就是說程序會(huì)一直等待直到有結(jié)果返回,單位為妙。

useGeneratedKeys:該屬性是獲取數(shù)據(jù)庫內(nèi)部生產(chǎn)的主鍵,默認(rèn)為false。

keyProperty:賦值主鍵的屬性名,即把數(shù)據(jù)庫內(nèi)部生產(chǎn)的主鍵賦值給該屬性。

keyColumn:賦值主鍵的字段名,即把數(shù)據(jù)庫內(nèi)部生產(chǎn)的主鍵賦值給該字段。

不返回主鍵

此是插入數(shù)據(jù)最簡(jiǎn)單的用法,在上一章的基礎(chǔ)上,需要編寫mapper配置文件和mapper接口。

mapper配置文件

代碼如下:



    INSERT  INTO sys_user (user_account, user_password, created_date)
    VALUES (#{userAccount}, #{userPassword}, #{createdDate})

mapper接口

接口代碼如下:

// 返回值int為插入數(shù)據(jù)的行數(shù)
public int insert(SysUser sysUser) throws Exception ;

測(cè)試用例

測(cè)試用戶代碼如下:

@Test
public void testInsert(){
    // 獲得sqlSession
    SqlSession sqlSession = getSqlSession();
    try{
        // 獲取Mapper接口
        SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
        SysUser user = new SysUser();
        user.setUserAccount("admin");
        user.setUserPassword("123");
        user.setCreatedDate(new Date());
        // 插入的條數(shù)
        int count = sysUserMapper.insert(user);
        // 提交事務(wù),數(shù)據(jù)存入數(shù)據(jù)庫
        sqlSession.commit();
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        sqlSession.close();
    }
}
返回自增主鍵

根據(jù)上面對(duì)INSERT標(biāo)簽屬性的學(xué)習(xí)知道,如果要返回?cái)?shù)據(jù)庫自增的主鍵,可通過設(shè)置useGeneratedKeys和keyProperty以及keyCulomn(返回多個(gè)時(shí)需指定字段順序)。

mapper配置文件

代碼如下:



    INSERT  INTO sys_user (user_account, user_password, created_date)
    VALUES (#{userAccount}, #{userPassword}, #{createdDate})

mapper接口

接口代碼如下:

// 返回值int仍然為插入影響的行數(shù),數(shù)據(jù)庫內(nèi)部自增id值被封裝到參數(shù)對(duì)象中
public int insertAndResultAutoId(SysUser sysUser) throws Exception;

測(cè)試用例

測(cè)試用戶代碼如下:

@Test
public void testInsertAndResultAutoId(){
    // 獲得sqlSession
    SqlSession sqlSession = getSqlSession();
    try{
        // 獲取Mapper接口
        SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
        SysUser user = new SysUser();
        user.setUserAccount("admin");
        user.setUserPassword("123");
        user.setCreatedDate(new Date());
        // 插入前,id為空
        System.out.println(user.getId());
        // 插入的條數(shù)
        int count = sysUserMapper.insertAndResultAutoId(user);
        // 插入后,id的值為新插入數(shù)據(jù)的數(shù)據(jù)庫自增id值
        System.out.println(user.getId());
        // 提交事務(wù),數(shù)據(jù)存入數(shù)據(jù)庫
        sqlSession.commit();
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        sqlSession.close();
    }
}
返回非自增主鍵

對(duì)于一些數(shù)據(jù)庫不支持自增ID,比如Oracle數(shù)據(jù)庫使用的序列,然后賦值給id字段,再執(zhí)行數(shù)據(jù)庫插入操作,此情況的實(shí)現(xiàn)如下:

mapper配置文件

代碼如下:



    
    
        SELECT LAST_INSERT_ID()
    
    INSERT  INTO sys_user (user_account, user_password, created_date)
    VALUES (#{userAccount}, #{userPassword}, #{createdDate})

mapper接口

接口代碼如下:

// 返回值int仍然為插入影響的行數(shù),數(shù)據(jù)庫內(nèi)部自增id值被封裝到參數(shù)對(duì)象中
public int insertAndSelectKey(SysUser sysUser) throws Exception;

測(cè)試用例

測(cè)試用戶代碼如下:

@Test
public void testInsertAndSelectKey(){
    // 獲得sqlSession
    SqlSession sqlSession = getSqlSession();
    try{
        // 獲取Mapper接口
        SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
        SysUser user = new SysUser();
        user.setUserAccount("admin");
        user.setUserPassword("123");
        user.setCreatedDate(new Date());
        // 插入前,id為空
        System.out.println(user.getId());
        // 插入影響的條數(shù)
        int count = sysUserMapper.insertAndSelectKey(user);
        // 插入后,id的值為新插入數(shù)據(jù)的數(shù)據(jù)庫自增id值
        System.out.println(user.getId());
        // 提交事務(wù),數(shù)據(jù)存入數(shù)據(jù)庫
        sqlSession.commit();
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        sqlSession.close();
    }
}
批量插入

此部分內(nèi)容將在動(dòng)態(tài)SQL中進(jìn)行學(xué)習(xí)。

總結(jié)

本節(jié)學(xué)習(xí)了mybatis的基本的insert的用法,希望對(duì)大家有幫助。

最后創(chuàng)建了qq群方便大家交流,可掃描加入,同時(shí)也可加我qq:276420284,共同學(xué)習(xí)、共同進(jìn)步,謝謝!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71253.html

相關(guān)文章

  • Mybatis學(xué)習(xí)筆記(一)——基本的CRUD操作

    摘要:將語句硬編碼到代碼中,修改語句需要重新編譯代碼設(shè)想使用配置文件配置。從結(jié)果集中遍歷數(shù)據(jù)的時(shí)候存在硬編碼。表示一個(gè)拼接符號(hào),會(huì)引用注入,所以不建議使用。和表示查詢出一條記錄進(jìn)行映射。 MyBatis是什么 mybatis是托管在github上的ORM框架,讓程序員將主要精力放在SQL上,通過mybatis提供映射方式,自由靈活(SQL的可定制性較高,半自動(dòng)化)生成滿足需求的SQL語句。m...

    evin2016 評(píng)論0 收藏0
  • Mybatis常見面試題

    摘要:執(zhí)行沒有,批處理不支持,將所有都添加到批處理中,等待統(tǒng)一執(zhí)行,它緩存了多個(gè)對(duì)象,每個(gè)對(duì)象都是完畢后,等待逐一執(zhí)行批處理。 Mybatis常見面試題 #{}和${}的區(qū)別是什么? #{}和${}的區(qū)別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進(jìn)來的參數(shù)數(shù)據(jù) ${}對(duì)傳遞進(jìn)來的參數(shù)原樣拼接在SQL中 #{}是預(yù)編譯處理,${}是字符串替換。 使用#{}可以有效的防止...

    liuchengxu 評(píng)論0 收藏0
  • 通過項(xiàng)目逐步深入了解Mybatis<一>

    摘要:解決方法使用數(shù)據(jù)庫連接池管理數(shù)據(jù)庫連接。向中設(shè)置參數(shù),對(duì)占位符號(hào)位置和設(shè)置參數(shù)值,硬編碼在代碼中,同樣也不利于系統(tǒng)的維護(hù)。從中遍歷結(jié)果集數(shù)據(jù)時(shí),存在硬編碼,將獲取表的字段進(jìn)行硬編碼,不利于系統(tǒng)維護(hù)。 Mybatis Mybatis 和 SpringMVC 通過訂單商品案例驅(qū)動(dòng) 官方中文地址:http://www.mybatis.org/mybati... 官方托管地址:https://...

    2bdenny 評(píng)論0 收藏0
  • Java Persistence with MyBatis 3讀書筆記

    摘要:內(nèi)部將通過創(chuàng)建事務(wù)管理應(yīng)用服務(wù)器負(fù)責(zé)管理數(shù)據(jù)庫連接生命周期使用。對(duì)于大型數(shù)據(jù)庫而言這會(huì)導(dǎo)致很差的性能問題。這是指檢索出的對(duì)象不會(huì)被共享并且可以被調(diào)用者安全地修改不會(huì)其他潛在的調(diào)用者或者線程的潛在修改干擾。 第一章 mybatis 簡(jiǎn)介 以下內(nèi)容是自己在看本書時(shí)覺得重要的地方記錄下來,一方面自己做個(gè)筆記也希望對(duì)其他同行有幫助 簡(jiǎn)介 mybatis: 是一個(gè)簡(jiǎn)化和實(shí)現(xiàn)了Java數(shù)據(jù)持久層的...

    JinB 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<