中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis實體類對象入參查詢的方法

發布時間:2022-06-22 13:54:55 來源:億速云 閱讀:606 作者:iii 欄目:開發技術

本篇內容介紹了“Mybatis實體類對象入參查詢的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Mybatis實體類對象入參查詢

測試實體類對象結構如下

/**
使用lobmok插件
*/
@Getter
@Setter
@NoArgsConstructor
@ToString
@EqualsAndHashCode
public class Vendor {
    private String vend_id;
    private String vend_name;
    private String vend_address;
    private String vend_city;
    private String vend_state;
    private String vend_zip;
    private String vend_country;
}

XML映射文件

<?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.mapper.VendorMapper">  
  <select id="findByVendorEntity" parameterType="vendor" resultType="vendor">
      select * from Vendors where vend_id = #{vend_id} and vend_name = #{vend_name}
  </select>
</mapper>

接口文件

public interface VendorMapper {
    //通過Vendor對象查詢
    Vendors findByVendorEntity(Vendor vendor);
}

測試文件內容

try {
            String resource = "mybatis-config.xml";
            InputStream resourceAsStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream,"development2");
            //獲取SQLSession
            SqlSession openSession = build.openSession();
            
            VendorMapper mapper = openSession.getMapper(VendorMapper.class);
            Vendor vendor = new Vendor();
            vendor.setId("BRE02");
            vendor.setName("Bear Emporium");
            
            Vendor findByVendorEntity = mapper.findByVendorEntity(vendor);
            System.out.println(findByVendorEntity);
        } catch (IOException e) {
            System.out.println("加載配置文件失敗");
            e.printStackTrace();
        }

筆記:

當對象作為參數傳入查詢時(不一定指定parameterType屬性值為實體對象的別名或全路徑名,typeHandler貌似會自動識別),SQL查詢語句的#{}中內容需要與實體類的字段屬性一一對應(并非實體類的屬性一定是數據庫表中的字段,只要填入的值對應即可。

mybatis查詢條件是看sql語句的where后的查詢條件),如果表達式中的值沒有對應,則會報錯。

錯誤示例如下:

....Cause:org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ids' in 'class com.mybatis.beans.Vendors' ....Cause:org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ids' in 'class com.mybatis.beans.Vendors'...

Mybatis中的參數深入

一、mybatis的參數

parameterType參數

該參數表示的是輸入類型

1、傳遞簡單類型

像int、string這種屬于簡單類型

2、傳遞pojo對象

pojo對象就是我們所說的JavaBean,mybatis使用ognl表達式解析對象字段的值,#{}或者${}括號中的值為pojo屬性名稱

什么是ognl表達式?

Mybatis實體類對象入參查詢的方法

3、傳遞pojo包裝對象

開發中通過實體類的包裝對象(pojo包裝對象)傳遞查詢條件,查詢條件是總和的查詢條件,不僅寶庫偶用戶的查詢條件,還包括其它的查詢條件,這時候使用包裝對象傳遞輸入參數

舉例說明,我們的QueryVo類中可以有多個對象,這里我們只存放一個user類

Mybatis實體類對象入參查詢的方法

Mybatis實體類對象入參查詢的方法

因為通過ognl表達式可以使用屬性名打點調用的方式來將user中的username當作參數,同時也可以將別的類的屬性當作參數傳遞進來

Mybatis實體類對象入參查詢的方法

Mybatis實體類對象入參查詢的方法

二、mybatis的輸出結果的封裝

resultType(輸出類型)

mysql在windows系統下不區分列名的大小寫,linux中嚴格區分大小寫

Mybatis實體類對象入參查詢的方法

當我們的實體類封裝的時候,如果屬性名和數據庫中的列名,我們在使用mybatis查詢的時候是查詢不到的,那么我們如何解決這樣的問題

Mybatis實體類對象入參查詢的方法

我們只需要使封裝的屬性和表中的列名對應上就可以,

第一種解決方式:

查詢數據庫的時候起別名的方式

Mybatis實體類對象入參查詢的方法

第二種解決方式,使用mybatis配置:

Mybatis實體類對象入參查詢的方法

解釋說明標簽中的屬性

  • 如果哪一行sql語句想使用resutMap中的對應關系就需要設置resultMap屬性和resuletMap標簽中的id屬性相同

  • resultMap中的type屬性表示的是封裝的實體類

  • id標簽和property標簽中的property表示的是封裝的實體類中的屬性

  • id標簽和property標簽中的column屬性表示的是映射的關系,也就是數據庫表中的列名

“Mybatis實體類對象入參查詢的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳谷县| 德安县| 泸水县| 吉水县| 定西市| 古浪县| 咸阳市| 常德市| 北碚区| 溧阳市| 民和| 乌鲁木齐县| 张家口市| 西青区| 新化县| 深州市| 施甸县| 舒兰市| 名山县| 敖汉旗| 安龙县| 梨树县| 武宁县| 通江县| 元阳县| 石柱| 无极县| 闽清县| 扶沟县| 南川市| 宾川县| 加查县| 察雅县| 丰都县| 老河口市| 德昌县| 扶绥县| 扬中市| 昭苏县| 舞钢市| 成安县|