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

mybatis之多參數(shù)查詢方式

 更新時間:2023年06月28日 14:48:25   作者:ACodeBird  
這篇文章主要介紹了mybatis之多參數(shù)查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis多參數(shù)查詢

利用map封裝多個參數(shù)

xxxmapper.xml的查詢語句(直接用占位符#{key},key就是map的key)

<select id="selectByMap" parameterType="hashmap" resultType="com.mybatis_demo.domain.User">
?? ?select * from t_user where uname like concat('%',#{uname},'%') and age>#{age}
</select>

測試代碼

//用map封裝多個參數(shù)實現(xiàn)多參數(shù)查詢
?? ?@Test
?? ?public void test6() {
?? ??? ?try {
?? ??? ??? ?//讀取配置文件
?? ??? ??? ?InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
?? ??? ??? ?//創(chuàng)建sqlSessionFactoryBuilder
?? ??? ??? ?SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
?? ??? ??? ?//利用sqlSessionFactoryBuilder獲取sqlSessionFactory
?? ??? ??? ?SqlSessionFactory sqlSessionFactory = builder.build(in);
?? ??? ??? ?//利用sqlSessionFactory獲取sqlSeesion
?? ??? ??? ?SqlSession session = sqlSessionFactory.openSession();
?? ??? ??? ?//利用sqlSeesion操作數(shù)據(jù)庫
?? ??? ??? ?Map<String,Object> map = new HashMap<String,Object>();
?? ??? ??? ?map.put("uname", "明");
?? ??? ??? ?map.put("age", 95);
?? ??? ??? ?List<User> list = session.selectList("UserMapper.selectByMap", map);
?? ??? ??? ?for (User user : list) {
?? ??? ??? ??? ?System.out.println(user);
?? ??? ??? ?}
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}

利用list封裝多個參數(shù)

xxxmapper.xml的查詢語句(通過foreach遍歷list集合,其中item代表變量,open表示以"(“開頭,separator表示變量之間以”,“隔開,close表示以”)"結(jié)尾,即遍歷結(jié)果是(1,3,4,9)

<select id="selectByList" parameterType="java.util.List" resultType="com.mybatis_demo.domain.User">
?? ?select * from t_user where uid in
?? ?<foreach collection="list" item="item" open="(" separator="," close=")">
?? ??? ?#{item}
?? ?</foreach>
</select>

測試代碼:

//多參數(shù)查詢,用list傳遞參數(shù),在對應(yīng)的mapper.xml文件中使用foreach進行遍歷
?? ?@Test
?? ?public void test7() {
?? ??? ?try {
?? ??? ??? ?//讀取配置文件
?? ??? ??? ?InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
?? ??? ??? ?//創(chuàng)建sqlSessionFactoryBuilder
?? ??? ??? ?SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
?? ??? ??? ?//利用sqlSessionFactoryBuilder獲取sqlSessionFactory
?? ??? ??? ?SqlSessionFactory sqlSessionFactory = builder.build(in);
?? ??? ??? ?//利用sqlSessionFactory獲取sqlSeesion
?? ??? ??? ?SqlSession session = sqlSessionFactory.openSession();
?? ??? ??? ?//利用sqlSeesion操作數(shù)據(jù)庫
?? ??? ??? ?List<Integer> test = new ArrayList<Integer>();
?? ??? ??? ?test.add(1);
?? ??? ??? ?test.add(3);
?? ??? ??? ?test.add(4);
?? ??? ??? ?test.add(9);
?? ??? ??? ?List<User> users = session.selectList("UserMapper.selectByList", test);
?? ??? ??? ?for (User user : users) {
?? ??? ??? ??? ?System.out.println(user);
?? ??? ??? ?}
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}

如果使用動態(tài)代理mapper開發(fā),還有另外一種方法

mapper映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
? PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
? "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis_demo.mapper.UserMapper">
<select id="selectByMoreParamter" resultType="com.mybatis_demo.domain.User">
?? ?<!-- select * from t_user where uname like concat('%',#{param1},'%') and age = #{param2} and address = #{param3} -->
?? ?select * from t_user where uname like concat('%',#{arg0},'%') and age = #{arg1} and address = #{arg2}
</select>
</mapper>

mapper接口

public interface UserMapper {
?? ?//mybatis使用mapper動態(tài)代理
?? ?//4大原則,一個注意
?? ?//1.接口中的方法名需要與對應(yīng)mapper.xml的id一致
?? ?//2.接口中的返回值需要與對應(yīng)mapper.xml的返回值類型保持一致
?? ?//3.接口中的參數(shù)需要與對應(yīng)mapper.xml的參數(shù)類型、個數(shù)、參數(shù)名保持一致
?? ?//4.對應(yīng)mapper.xml的名字空間需要修改成對應(yīng)接口的全包名
?? ?//注意:mapper動態(tài)代理根據(jù)返回值類型,mybatis會自動選擇調(diào)用selectone還是selectlist....
?? ?//直接傳多個參數(shù)
?? ?public User selectByMoreParamter(String uname,Integer age,String address);
}

測試代碼

//當傳入多個參數(shù)時,使用#{arg0}、#{arg1},arg+下標獲取參數(shù),下標從0開始
?? ?//或者使用#{param1},param+下標獲取參數(shù)下標從1開始
?? ?@Test
?? ?public void test_selectByMoreParamter() {
?? ??? ?try {
?? ??? ??? ? //讀取配置文件
?? ??? ??? ?InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
?? ??? ??? ?//創(chuàng)建SqlSessionFactoryBuilder對象,用來獲取SqlSessionFactory對象
?? ??? ??? ?SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
?? ??? ??? ?//利用SqlSessionFactoryBuilder對象build一個SqlSessionFactory對象
?? ??? ??? ?SqlSessionFactory build = builder.build(in);
?? ??? ??? ?//利用sqlSessionFactory獲取session對象
?? ??? ??? ?SqlSession session = build.openSession();
?? ??? ??? ?//通過session對象獲取對應(yīng)mapper接口
?? ??? ??? ?UserMapper mapper = session.getMapper(UserMapper.class);
?? ??? ??? ?User user = mapper.selectByMoreParamter("白", 4, "北京朝陽區(qū)");
?? ??? ??? ?System.out.println(user);
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}

注意:

用map可以封裝多種不同類型的參數(shù),list只能封裝同種類型的參數(shù);

使用動態(tài)代理可以使用arg+下標獲取參數(shù),下標從0開始;

或者使用param+下標獲取參數(shù),下標從1開始

mybatis一對多嵌套查詢多參數(shù)

在使用mybatis注解開發(fā)的時候經(jīng)常遇到一對多以及多對多的需求,而在使用mybatis嵌套查詢的時候,我遇到子查詢條件不止一個情況,這個時候需要我們父查詢傳遞多個參數(shù)過去給子查詢作為查詢條件。

那該怎么傳遞多個參數(shù)呢?我們只需要這樣設(shè)置,

column寫法 :

Result({property 名稱 = column 字段名 , property 名稱 = column 字段名 ...})

例子:

@Result(column = "{id?= id,aid?= article_id}")

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

相關(guān)文章

  • Java 值傳遞和引用傳遞詳解及實例代碼

    Java 值傳遞和引用傳遞詳解及實例代碼

    這篇文章主要介紹了 Java 值傳遞和引用傳遞詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • ActiveMQ安裝及部署教程圖解

    ActiveMQ安裝及部署教程圖解

    這篇文章主要介紹了ActiveMQ安裝及部署教程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于@ApiModel和@ApiModelProperty的使用

    關(guān)于@ApiModel和@ApiModelProperty的使用

    這篇文章主要介紹了關(guān)于@ApiModel和@ApiModelProperty的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中的PowerMock使用實踐

    Java中的PowerMock使用實踐

    這篇文章主要介紹了Java中的PowerMock使用實踐,@PrepareForTest和@RunWith是成對出現(xiàn)的,一般@RunWith(PowerMockRunner.class),@PrepareForTest的值是引用的靜態(tài)方法或私有方法的類,需要的朋友可以參考下
    2023-12-12
  • SpringBoot org.springframework.beans.factory.UnsatisfiedDependencyException依賴注入異常

    SpringBoot org.springframework.beans.factory.Unsatisfie

    本文主要介紹了SpringBoot org.springframework.beans.factory.UnsatisfiedDependencyException依賴注入異常,文中通過示例代碼介紹的很詳細,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 多個java泛型示例分享

    多個java泛型示例分享

    這篇文章主要介紹了多個java泛型示例,需要的朋友可以參考下
    2014-04-04
  • Spring Boot啟動流程示例詳解

    Spring Boot啟動流程示例詳解

    Spring Boot是Spring官方推出的一個快速構(gòu)建獨立運行、生產(chǎn)級別Spring應(yīng)用的框架,它的核心目標是簡化Spring應(yīng)用的搭建與部署,本文給大家介紹Spring Boot啟動流程詳解,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • 解決IDEA2020 創(chuàng)建maven項目沒有src/main/java目錄和webapp目錄問題

    解決IDEA2020 創(chuàng)建maven項目沒有src/main/java目錄和webapp目錄問題

    這篇文章主要介紹了IDEA2020 創(chuàng)建maven項目沒有src/main/java目錄和webapp目錄問題解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Sprigmvc項目轉(zhuǎn)為springboot的方法

    Sprigmvc項目轉(zhuǎn)為springboot的方法

    本篇文章主要介紹了Sprigmvc項目轉(zhuǎn)為springboot的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 解決springdataJPA對原生sql支持的問題

    解決springdataJPA對原生sql支持的問題

    這篇文章主要介紹了解決springdataJPA對原生sql支持的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

唐海县| 吉林省| 崇左市| 禹城市| 利川市| 集安市| 大姚县| 若尔盖县| 柘荣县| 新河县| 天水市| 雷波县| 呼伦贝尔市| 久治县| 开封市| 麻栗坡县| 延安市| 剑阁县| 精河县| 凤城市| 吴旗县| 南投市| 大同市| 南京市| 辉县市| 盐津县| 班戈县| 延川县| 景泰县| 宜兰县| 泰和县| 万年县| 习水县| 永州市| 云和县| 临湘市| 东山县| 余干县| 固安县| 威宁| 连山|