Mybatis的引數-parameterType

海浪星空發表於2020-10-11

Mybatis的引數-parameterType(輸入型別)

1.傳遞簡單型別
int ,String 等
2.傳遞pojo物件
(實體類物件)
Mybatis使用OGNL表示式解析物件欄位的值,#{}或者${}括號中的值為pojo屬性名稱
在這裡插入圖片描述

3.轉遞pojo包裝物件(實際開發中常用)
對實體類物件再包一層(實體類作為其中一個屬性)
開發中通過pojo轉遞查詢條件,查詢條件是綜合的查詢條件不僅包括使用者查詢條件還包括其他查詢條件(比如將使用者購買商品資訊也作為查詢條件)這時可以使用包裝物件轉遞輸入引數。Pojo類中包含pojo
需求:根據使用者名稱查詢使用者資訊,查詢條件放到QueryVo的user屬性中。

OGNL和pojo包裝物件的例項:

pojo包裝物件(QueryVo vo)

QueryVo.java:

package com.itheima.domain;

public class QueryVo {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

OGNL的使用:

 <!--根據QueryVo的條件查詢使用者-->
    <select id="findUserByVo" parameterType="com.itheima.domain.QueryVo" resultType="com.itheima.domain.User">
        select * from user where username like #{user.username};<!-- QueryVo的屬性user,下的值 user.username  ,如果username下還有屬性 user.username.xxx-->
    </select>

dao介面.java

//根據QueryVo中的查詢條件查詢使用者
    List<User> findUserByVo(QueryVo vo);

測試類.java

/*
     * 測試採用QueryVo作為查詢條件*/
    @Test
    public void testFindByVo(){
        QueryVo vo = new QueryVo();
        User user = new User();
        user.setUsername("%王%");
        vo.setUser(user);
        //5.執行查詢方法
        List<User> users =  userDao.findUserByVo(vo);
        for(User us:users){
            System.out.println(us);
        }
    }

相關文章