摘要:概述本章學習基本映射相關知識點。表示執行該語句將清空一級二級緩存,默認為。賦值主鍵的字段名,即把數據庫內部生產的主鍵賦值給該字段。
概述
本章學習Mysql基本映射--INSERT相關知識點。insert的用法比select要簡單很多。
本系列文章是基于Mybatis 3.4.6 版本,數據庫使用的是Mysql 5.7。
INSERT標簽insert標簽常用屬性:
id:可以理解為Mybatis執行語句的名稱,與Mapper接口一一對應,此屬性為必須屬性,且在命名空間(mapper標簽的namespace)中唯一。
parameterType:該屬性的含義就是其字面意思,即傳入語句的參數類型,是類的全限定類名,非必須。
flushCache:表示執行該語句將清空一級、二級緩存,默認為true。
timeout:超時時間,即程序提交sql語句到數據庫等待的時間,超過此設置時間將拋出超時異常,默認設置是不超時,也就是說程序會一直等待直到有結果返回,單位為妙。
useGeneratedKeys:該屬性是獲取數據庫內部生產的主鍵,默認為false。
keyProperty:賦值主鍵的屬性名,即把數據庫內部生產的主鍵賦值給該屬性。
keyColumn:賦值主鍵的字段名,即把數據庫內部生產的主鍵賦值給該字段。
不返回主鍵此是插入數據最簡單的用法,在上一章的基礎上,需要編寫mapper配置文件和mapper接口。
mapper配置文件
代碼如下:
INSERT INTO sys_user (user_account, user_password, created_date) VALUES (#{userAccount}, #{userPassword}, #{createdDate})
mapper接口
接口代碼如下:
// 返回值int為插入數據的行數 public int insert(SysUser sysUser) throws Exception ;
測試用例
測試用戶代碼如下:
@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()); // 插入的條數 int count = sysUserMapper.insert(user); // 提交事務,數據存入數據庫 sqlSession.commit(); }catch (Exception e){ e.printStackTrace(); }finally { sqlSession.close(); } }返回自增主鍵
根據上面對INSERT標簽屬性的學習知道,如果要返回數據庫自增的主鍵,可通過設置useGeneratedKeys和keyProperty以及keyCulomn(返回多個時需指定字段順序)。
mapper配置文件
代碼如下:
INSERT INTO sys_user (user_account, user_password, created_date) VALUES (#{userAccount}, #{userPassword}, #{createdDate})
mapper接口
接口代碼如下:
// 返回值int仍然為插入影響的行數,數據庫內部自增id值被封裝到參數對象中 public int insertAndResultAutoId(SysUser sysUser) throws Exception;
測試用例
測試用戶代碼如下:
@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()); // 插入的條數 int count = sysUserMapper.insertAndResultAutoId(user); // 插入后,id的值為新插入數據的數據庫自增id值 System.out.println(user.getId()); // 提交事務,數據存入數據庫 sqlSession.commit(); }catch (Exception e){ e.printStackTrace(); }finally { sqlSession.close(); } }返回非自增主鍵
對于一些數據庫不支持自增ID,比如Oracle數據庫使用的序列,然后賦值給id字段,再執行數據庫插入操作,此情況的實現如下:
mapper配置文件
代碼如下:
SELECT LAST_INSERT_ID() INSERT INTO sys_user (user_account, user_password, created_date) VALUES (#{userAccount}, #{userPassword}, #{createdDate})
mapper接口
接口代碼如下:
// 返回值int仍然為插入影響的行數,數據庫內部自增id值被封裝到參數對象中 public int insertAndSelectKey(SysUser sysUser) throws Exception;
測試用例
測試用戶代碼如下:
@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()); // 插入影響的條數 int count = sysUserMapper.insertAndSelectKey(user); // 插入后,id的值為新插入數據的數據庫自增id值 System.out.println(user.getId()); // 提交事務,數據存入數據庫 sqlSession.commit(); }catch (Exception e){ e.printStackTrace(); }finally { sqlSession.close(); } }批量插入
此部分內容將在動態SQL中進行學習。
總結本節學習了mybatis的基本的insert的用法,希望對大家有幫助。
最后創建了qq群方便大家交流,可掃描加入,同時也可加我qq:276420284,共同學習、共同進步,謝謝!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71253.html
摘要:將語句硬編碼到代碼中,修改語句需要重新編譯代碼設想使用配置文件配置。從結果集中遍歷數據的時候存在硬編碼。表示一個拼接符號,會引用注入,所以不建議使用。和表示查詢出一條記錄進行映射。 MyBatis是什么 mybatis是托管在github上的ORM框架,讓程序員將主要精力放在SQL上,通過mybatis提供映射方式,自由靈活(SQL的可定制性較高,半自動化)生成滿足需求的SQL語句。m...
摘要:執行沒有,批處理不支持,將所有都添加到批處理中,等待統一執行,它緩存了多個對象,每個對象都是完畢后,等待逐一執行批處理。 Mybatis常見面試題 #{}和${}的區別是什么? #{}和${}的區別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進來的參數數據 ${}對傳遞進來的參數原樣拼接在SQL中 #{}是預編譯處理,${}是字符串替換。 使用#{}可以有效的防止...
摘要:解決方法使用數據庫連接池管理數據庫連接。向中設置參數,對占位符號位置和設置參數值,硬編碼在代碼中,同樣也不利于系統的維護。從中遍歷結果集數據時,存在硬編碼,將獲取表的字段進行硬編碼,不利于系統維護。 Mybatis Mybatis 和 SpringMVC 通過訂單商品案例驅動 官方中文地址:http://www.mybatis.org/mybati... 官方托管地址:https://...
摘要:內部將通過創建事務管理應用服務器負責管理數據庫連接生命周期使用。對于大型數據庫而言這會導致很差的性能問題。這是指檢索出的對象不會被共享并且可以被調用者安全地修改不會其他潛在的調用者或者線程的潛在修改干擾。 第一章 mybatis 簡介 以下內容是自己在看本書時覺得重要的地方記錄下來,一方面自己做個筆記也希望對其他同行有幫助 簡介 mybatis: 是一個簡化和實現了Java數據持久層的...
閱讀 3766·2021-11-24 09:39
閱讀 2965·2021-11-16 11:49
閱讀 2082·2019-08-30 13:54
閱讀 1108·2019-08-30 13:03
閱讀 1097·2019-08-30 11:10
閱讀 724·2019-08-29 17:10
閱讀 1253·2019-08-29 15:04
閱讀 1219·2019-08-29 13:02