Mybatis基于注解開發

Mybatis基于注解進行開發


基于注解形式開發Mybatis省去XML的SQL映射配置文件(只需要在Mybatis的核心配置文件中設置要掃描的接口通過Mapper標簽中的子標簽<package>指定要掃描的包

注意:在進行想改的SQL操作的時候首先要注意數據表的字段的約束問題,例如字段username有一個唯一約束那么就不能設置多個

增加用戶:@Insert

/*** 添加用戶* @param user 一個user對相關信息*/
@Insert("insert into tb_user(user_name,password,name,age,sex)" +" values (#{userName},#{password},#{name},#{age},#{sex})")
public void addUser(User user);

查詢所有用戶:@Select

@Select("select id,tb_user.user_name,tb_user.password,tb_user.name,tb_user.age,tb_user.sex from tb_user")
public List<User> findAllUser();

更改一個用戶的信息@Update

@Update("update tb_user set user_name=#{updateName} where user_name=#{userName}")public int updateUser(@Param("userName") String name,@Param("updateName") String updateName);

主鍵回填技術:在項數據表中插入一行數據的時候,會返回所插入行的主鍵列數據

主鍵列的數據會回填到實體類的屬性中-----》和主鍵相關聯的屬性

//主鍵回填
@Insert("insert into tb_user(user_name,password,name,age,sex)" +
"value (#{userName},#{password},#{name},#{age},#{sex})")
//使用Options標簽:useGeneratedKeys:開啟主鍵回填,keyProperty:指定主鍵回填的屬性名,keyColumn:指定主鍵的列名
@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
public int addUserPk(User user);

最開始初始化定義對應的id為null,后面主鍵回填自動變成對應的列的id值

@Test
public void testAddUserPk(){SqlSession sqlSession = SqlSessionUtil.getSqlSession(true);UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = new User(null,"zhou","123456","暮辭",20,1);int i = userMapper.addUserPk(user);System.out.println(user);System.out.println(i);sqlSession.close();
}

當數據庫中的字段名同pojo的實體類的屬性名不同的時候,會導致數據無法封裝到實體類的屬性中去

通過@Results實現映射——》等價于<resultMap>

@Select("select id,user_name,tb_user.password,tb_user.name,tb_user.age,tb_user.sex from tb_user")
@Results(id = "userMap",value={//id=true表示的是這個字段為主鍵@Result(column = "user_id",property = "id",id = true),@Result(column = "user_name",property = "userName")}
)
public List<User> findAllUser();

基于注解的形式進行模糊查詢

like concat('%',張,'%')–》查詢包含張這個字的

@Select("select id,user_name,password,name,age,sex " +"from tb_user " +"where sex=1 and name like concat('%',#{name},'%') ")
public List<User> findUserByLike(String name);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73415.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73415.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73415.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】STL性能優化實戰

STL性能優化實戰 STL (Standard Template Library) 是 C 標準庫的核心部分&#xff0c;提供了各種容器、算法和迭代器。雖然 STL 提供了強大的功能&#xff0c;但不恰當的使用可能導致性能問題。下面我將詳細介紹 STL 性能優化的實戰技巧&#xff0c;并通過具體案例說明。 1.…

OSI模型_TCP/IP模型_五層模型

文章目錄 OSI模型_TCP/IP模型_五層模型模型對比模型層級對比關鍵區別對比 OSI模型OSI模型概述舉例說明流程圖示 TCP/IP 四層模型模型結構舉例說明流程圖示 TCP/IP 五層模型模型的結構舉例說明流程圖示 OSI模型_TCP/IP模型_五層模型 學OSI&#xff0c;用TCP/IP&#xff0c;分析選…

R語言——字符串

參考資料&#xff1a;學習R 文本數據存儲在字符向量中。重要的是&#xff0c;字符向量中的每個元素都是字符串&#xff0c;而非單獨的字符。 文本的基本單位是字符向量&#xff0c;著意味著大部分字符串處理函數也能用于字符向量。 1、創建和打印字符串 字符向量可用c函數創建…

如何區別在Spring Boot 2 和 Spring Boot 3 中使用 Knife4j:集成與配置指南

在現代的 Web 開發中&#xff0c;API 文檔是不可或缺的一部分。Knife4j 是基于 Swagger 的增強工具&#xff0c;它不僅提供了更友好的 API 文檔界面&#xff0c;還支持更多實用的功能&#xff0c;如離線文檔導出、全局參數配置等。本文將詳細介紹如何在 Spring Boot 2 和 Sprin…

pagehelper 分頁插件使用說明

pom.xml&#xff1a;pageHelper坐標 <!--pageHelper坐標--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency> 分…

C++可變參數

可變參數C風格的可變參數C風格可變參數的使用 C11可變參數模板遞歸展開參數包參數列表展開折疊表達式 STL中的emplace插入接口 可變參數 C風格的可變參數 可變參數是一種語言特性&#xff0c;可以在函數聲明中使用省略號...來表示函數接受可變數量的參數。 例如典型的printf…

數據庫的操作,以及sql之DML

首先&#xff0c;創建表以及插入數據 create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不詳"); in…

vue2前端日志數據存儲(indexedD)自動清理3天前的數據

前言&#xff1a;關于Dexie.js這個前端本地數據庫&#xff0c;如何使用IndexedDB來存儲數據&#xff0c;并且設置到期自動清理的機制。首先&#xff0c;我需要回憶一下Dexie.js的基本用法&#xff0c;以及IndexedDB的特性。IndexedDB是瀏覽器中的一種非關系型數據庫&#xff0c…

【MySQL篇】索引特性,索引的工作原理以及索引的創建與管理

目錄 一&#xff0c;初識索引 二&#xff0c;MySQL與磁盤交互的基本單位 三&#xff0c;MySQL中數據文件的特性 四&#xff0c;理解page和索引 五&#xff0c;聚簇索引和非聚簇索引 六&#xff0c;索引操作 查詢索引 創建主鍵索引 唯一索引的創建 普通索引的創建 全文…

springboot項目啟動常見的問題以及配置以及一些使用技巧

1.配置倉庫 這里要把xml文件從國外的鏡像源改成國內的鏡像源。改鏡像源可以查看這篇文章 點擊查看 2.更改文件類型 方法一&#xff1a;右鍵文件找到Mark Dircetory as可以更改文件類型 方法二&#xff1a; 3.springboot本地Maven倉庫的位置 4.pom.xml文件報紅錯誤怎么辦 這…

【初探數據結構】二叉樹的順序結構——堆的實現詳解(上下調整算法的時間復雜度分析)

&#x1f4ac; 歡迎討論&#xff1a;在閱讀過程中有任何疑問&#xff0c;歡迎在評論區留言&#xff0c;我們一起交流學習&#xff01; &#x1f44d; 點贊、收藏與分享&#xff1a;如果你覺得這篇文章對你有幫助&#xff0c;記得點贊、收藏&#xff0c;并分享給更多對數據結構感…

流量分析2

一&#xff0c;webshell流量 [GKCTF 2021]簽到 先看協議分級&#xff0c;大部分是tcp&#xff0c;里面有http的基于的行文本數據占了很大的比重&#xff0c;看看里面有什么 過濾http的流量 點擊一條流量&#xff0c;里面的內容進去后面有基于行的文本數據&#xff0c; 先解he…

頭歌實踐教學平臺--【數據庫概論】--SQL

一、表結構與完整性約束的修改(ALTER) 1.修改表名 USE TestDb1; alter table your_table rename TO my_table; 2.添加與刪除字段 #語句1&#xff1a;刪除表orderDetail中的列orderDate alter table orderDetail drop orderDate; #語句2&#xff1a;添加列unitPrice alter t…

在 React 中,組件之間傳遞變量的常見方法

目錄 1. **通過 Props 傳遞數據**2. **通過回調函數傳遞數據**3. **通過 Context API 傳遞數據**4. **通過 Redux 管理全局狀態**5. **通過事件總線&#xff08;如 Node.js 的 EventEmitter&#xff09;**6. **通過 Local Storage / Session Storage**7. **通過 URL 查詢參數傳…

Redis + 布隆過濾器解決緩存穿透問題

Redis 布隆過濾器解決緩存穿透問題 1. Redis 布隆過濾器解決緩存穿透問題 &#x1f4cc; 什么是緩存穿透&#xff1f; 緩存穿透指的是查詢的數據既不在緩存&#xff0c;也不在數據庫&#xff0c;導致每次查詢都直接訪問數據庫&#xff0c;增加數據庫壓力。 例如&#xff1…

Vue動態添加或刪除DOM元素:購物車實例

Vue 指令系列文章: 《Vue插值:雙大括號標簽、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue條件判斷:v-if、v-else、v-else-if、v-show 指令》 《Vue循環遍歷:v-for 指令》 《Vue事件處理:v-on 指令》 《Vue表單元素綁定:v-model 指令》…

vue h5實現車牌號輸入框

哈嘍&#xff0c;大家好&#xff0c;最近鵬仔開發的項目是學校校內車輛超速方面的統計檢測方面的系統&#xff0c;在開發過程中發現有個小功能&#xff0c;就是用戶移動端添加車牌號&#xff0c;剛開始想著就一個輸入框&#xff0c;提交時正則效驗一下格式就行&#xff0c;最后…

硬件基礎(5):(3)二極管的應用

文章目錄 [toc]1. **整流電路****功能**&#xff1a;**工作原理**&#xff1a;**應用實例**&#xff1a;電路組成&#xff1a;整流過程&#xff1a;電路的應用&#xff1a; 2. **穩壓電路****功能**&#xff1a;**工作原理**&#xff1a;**應用實例**&#xff1a;電路組成及功能…

Wireshark網絡抓包分析使用詳解

序言 之前學計網還有前幾天備考華為 ICT 網絡賽道時都有了解認識 Wireshark&#xff0c;但一直沒怎么專門去用過&#xff0c;也沒去系統學習過&#xff0c;就想趁著備考的網絡相關知識還沒忘光&#xff0c;先來系統學下整理點筆記~ 什么是抓包&#xff1f;抓包就是將網絡傳輸…

安心聯車輛管理平臺源碼價值分析

安心聯車輛管理平臺源碼的價值可從技術特性、功能覆蓋、市場適配性、擴展潛力及商業化支持等多個維度進行分析。以下結合實際應用進行詳細解讀&#xff1a; 一、技術架構與開發優勢 主流技術棧與高性能架構 源碼采用成熟的前后端分離架構&#xff0c;后端基于Java技術&#xff…