欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于MyBatis各種SQL操作詳解

 更新時間:2023年05月17日 11:32:33   作者:夏志121  
這篇文章主要介紹了關(guān)于MyBatis各種SQL操作詳解,MyBatis 是一款優(yōu)秀的半自動的ORM持久層框架,它支持自定義 SQL、存儲過程以及高級映射,需要的朋友可以參考下

一、查詢一個實體類對象

映射方法:User getUserById(@Param("id") int id);

映射文件:

<select id="getUserById" resultType="User">
    select * from t_user where id = #{id}
</select>

二、查詢一個List集合

映射方法:List<User> getAllUser();

映射文件

<select id="getAllUser" resultType="User">
    select * from t_user
</select>

注意:當查詢的數(shù)據(jù)為多條時,不能使用實體類作為返回值,否則會拋出異常 TooManyResultsException;但是若查詢的數(shù)據(jù)只有一條,可以使用實體類或集合作為返回值

三、查詢單個數(shù)據(jù)

映射方法:int getCount();

映射文件:

<select id="getCount" resultType="java.lang.Integer">
    select count(id) from t_user
</select>

四、查詢一條數(shù)據(jù)及多條數(shù)據(jù)到map集合

查詢一條數(shù)據(jù)到map集合

映射方法:Map<String,Object> getUserToMap(@Param("id") int id);

映射文件:

<select id="getUserToMap" resultType="java.util.Map">
    select * from t_user where id = #{id}
</select>

注意:將一條數(shù)據(jù)查詢到map集合中時,map的鍵是表中的字段名,map的值是表中的數(shù)據(jù)

查詢多條數(shù)據(jù)到map集合

方式一:

映射方法:List<Map<String,Object>> getAllUserToMap();

映射文件:

<select id="getAllUserToMap" resultType="java.util.Map">
    select * from t_user
</select>

方式二:

映射方法:

@MapKey("id") Map<String,Object> getAllUserToMap();

映射文件:

<select id="getAllUserToMap" resultType="java.util.Map">
    select * from t_user
</select>

注意:

  • 方式一中每條查出來的數(shù)據(jù)都對應一個Map集合,然后再利用List集合將這些Map集合 組織起來
  • 方式二中每條查出來的數(shù)據(jù)都存放在一個Map集合中,但是這個Map集合的鍵由映射方 法上方的@MapKey注解指定,而Map集合的值又是另外一個Map集合,作為值的Map 集合中鍵對應表中字段名,值對應表中數(shù)據(jù)

五、模糊查詢

映射方法:List<User> getUserByLike(@Param("mohu") String mohu);

映射文件:

<select id="getUserByLike" resultType="User">
    <!--方式1-->
    select * from t_user where username like '%${mohu}%'
    <!--方式2-->
    select * from t_user where username like concat("%",#{mohu},"%")
    <!--方式3-->
    select * from t_user where username like "%"#{mohu}"%"
</select>

注意:不能使用 like '%#{mohu}%' 的方式,因為#{}會被解析成?,這個問號會被當成字符串的一 部分造成參數(shù)獲取失敗

六、批量刪除

映射方法:void deleteSomeUser(@Param("ids") String ids);

映射文件:

<delete id="deleteSomeUser">
    delete from t_user where id in(${ids})
</delete>

注意:這里獲取參數(shù)的方式是${},因為#{}會自動添加引號,如果使用#{}的方式會造成SQL語句解 析成 delete from t_user where id in('ids') 從而報錯

七、動態(tài)設(shè)置表名

映射方法:List<User> getUserList(@Param("table") String table);

映射文件:

<select id="getUserList" resultType="User">
    select * from ${table}
</select>

注意:這里使用${}是因為使用#{}時會自動添加引號,而表名不允許添加表名

八、執(zhí)行添加功能時獲取自增的主鍵

映射方法:void insertUser(User user);

映射文件:

<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    insert into t_user values(null,#{username},#{password},#{age},#
{gender},#{email})
</insert>

測試方法:

@Test
public void testInsertUser(){
    SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
    User user = new User(null,"老六","1234567",36,"男","laoliu@qq.com");
    mapper.insertUser(user);
    System.out.println(user);//在這一步中打印出的User對象中可以看到自增的id,如果配置文件中不使    用useGeneratedKeys和keyProperty,則id仍然是null
    }

注意:這里的useGeneratedKeys設(shè)置使用自增主鍵為true,keyProperty是將獲取的主鍵值賦給實體對象中的某個屬性。這樣,在添加這個實體對象后,自增的主鍵也能在實體對象中獲得,而不需要進行查詢

到此這篇關(guān)于關(guān)于MyBatis各種SQL操作詳解的文章就介紹到這了,更多相關(guān)MyBatis的SQL操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 面試題:java中為什么foreach中不允許對元素進行add和remove

    面試題:java中為什么foreach中不允許對元素進行add和remove

    讀者遇到了一個比較經(jīng)典的面試題,也就是標題上說的,為什么 foreach 中不允許對元素進行 add 和 remove,本文就詳細的介紹一下,感興趣的可以了解一下
    2021-10-10
  • Java連接Sql數(shù)據(jù)庫經(jīng)常用到的操作

    Java連接Sql數(shù)據(jù)庫經(jīng)常用到的操作

    這篇文章主要介紹了Java連接Sql數(shù)據(jù)庫經(jīng)常用到的操作的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 基于Java編寫一個實用的ExcelUtil工具類

    基于Java編寫一個實用的ExcelUtil工具類

    在項目中經(jīng)常遇到excel表格導入導出功能,每次都要重復寫有關(guān)excel 的邏輯,所以本文直接使用Java編寫一個實用的ExcelUtil工具類,希望對大家有所幫助
    2024-04-04
  • m1 Mac設(shè)置多jdk版本并動態(tài)切換的實現(xiàn)

    m1 Mac設(shè)置多jdk版本并動態(tài)切換的實現(xiàn)

    本文主要介紹 Mac 下如何安裝 JDK 并且多版本如何切換,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringCloud Feign遠程調(diào)用實現(xiàn)詳解

    SpringCloud Feign遠程調(diào)用實現(xiàn)詳解

    Feign是Netflix公司開發(fā)的一個聲明式的REST調(diào)用客戶端; Ribbon負載均衡、 Hystrⅸ服務熔斷是我們Spring Cloud中進行微服務開發(fā)非?;A(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似
    2022-11-11
  • MyBatis圖文并茂講解注解開發(fā)一對多查詢

    MyBatis圖文并茂講解注解開發(fā)一對多查詢

    這篇文章主要介紹了SpringBoot中Mybatis注解一對多查詢的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù)

    后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù)

    x-www-form-urlencoded格式是一種常見的HTTP請求數(shù)據(jù)格式,它將請求參數(shù)編碼為鍵值對的形式,以便于傳輸和解析,下面這篇文章主要給大家介紹了關(guān)于后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù),需要的朋友可以參考下
    2023-05-05
  • 獲取JsonObject某一未知key的值操作

    獲取JsonObject某一未知key的值操作

    這篇文章主要介紹了獲取JsonObject某一未知key的值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java UDP通信客戶端與服務器端實例分析

    java UDP通信客戶端與服務器端實例分析

    這篇文章主要介紹了java UDP通信客戶端與服務器端,結(jié)合實例形式分析了java基于UDP通信的客戶端與服務器端具體實現(xiàn)技巧及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-01-01
  • Java ProcessBuilder執(zhí)行多次CMD命令的使用

    Java ProcessBuilder執(zhí)行多次CMD命令的使用

    本文介紹了Java的ProcessBuilder類,該類用于執(zhí)行外部命令,通過ProcessBuilder,我們可以在Java程序中靈活地執(zhí)行多次CMD命令,并控制輸入輸出流以及工作目錄等,感興趣的可以了解一下
    2024-11-11

最新評論