Mybatis實體類對象入?yún)⒉樵兊墓P記
Mybatis實體類對象入?yún)⒉樵?/h2>
測試實體類對象結(jié)構(gòu)如下
/**
使用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);
}測試文件內(nèi)容
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();
?? ??? ?}筆記:
當(dāng)對象作為參數(shù)傳入查詢時(不一定指定parameterType屬性值為實體對象的別名或全路徑名,typeHandler貌似會自動識別),SQL查詢語句的#{}中內(nèi)容需要與實體類的字段屬性一一對應(yīng)(并非實體類的屬性一定是數(shù)據(jù)庫表中的字段,只要填入的值對應(yīng)即可。
mybatis查詢條件是看sql語句的where后的查詢條件),如果表達(dá)式中的值沒有對應(yīng),則會報錯。
錯誤示例如下:
....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中的參數(shù)深入
一、mybatis的參數(shù)
parameterType參數(shù)
該參數(shù)表示的是輸入類型
1、傳遞簡單類型
像int、string這種屬于簡單類型
2、傳遞pojo對象
pojo對象就是我們所說的JavaBean,mybatis使用ognl表達(dá)式解析對象字段的值,#{}或者${}括號中的值為pojo屬性名稱
什么是ognl表達(dá)式?

3、傳遞pojo包裝對象
開發(fā)中通過實體類的包裝對象(pojo包裝對象)傳遞查詢條件,查詢條件是總和的查詢條件,不僅寶庫偶用戶的查詢條件,還包括其它的查詢條件,這時候使用包裝對象傳遞輸入?yún)?shù)
舉例說明,我們的QueryVo類中可以有多個對象,這里我們只存放一個user類


因為通過ognl表達(dá)式可以使用屬性名打點調(diào)用的方式來將user中的username當(dāng)作參數(shù),同時也可以將別的類的屬性當(dāng)作參數(shù)傳遞進(jìn)來


二、mybatis的輸出結(jié)果的封裝
resultType(輸出類型)
mysql在windows系統(tǒng)下不區(qū)分列名的大小寫,linux中嚴(yán)格區(qū)分大小寫

當(dāng)我們的實體類封裝的時候,如果屬性名和數(shù)據(jù)庫中的列名,我們在使用mybatis查詢的時候是查詢不到的,那么我們?nèi)绾谓鉀Q這樣的問題

我們只需要使封裝的屬性和表中的列名對應(yīng)上就可以,
第一種解決方式:
查詢數(shù)據(jù)庫的時候起別名的方式

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

解釋說明標(biāo)簽中的屬性
- 如果哪一行sql語句想使用resutMap中的對應(yīng)關(guān)系就需要設(shè)置resultMap屬性和resuletMap標(biāo)簽中的id屬性相同
- resultMap中的type屬性表示的是封裝的實體類
- id標(biāo)簽和property標(biāo)簽中的property表示的是封裝的實體類中的屬性
- id標(biāo)簽和property標(biāo)簽中的column屬性表示的是映射的關(guān)系,也就是數(shù)據(jù)庫表中的列名
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java強(qiáng)制保留兩位小數(shù)的四種方法案例詳解
這篇文章主要介紹了Java強(qiáng)制保留兩位小數(shù)的四種方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
SpringBoot關(guān)閉過程中銷毀DisposableBean解讀
這篇文章主要介紹了SpringBoot關(guān)閉過程中銷毀DisposableBean解讀,一個bean的生命周期,指的是 bean 從創(chuàng)建,初始化,一系列使用,銷毀的過程,今天來講講 bean 的初始化和銷毀的方法,需要的朋友可以參考下2023-12-12
Spring boot項目使用thymeleaf模板過程詳解
這篇文章主要介紹了Spring boot項目使用thymeleaf模板過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07
IDEA設(shè)置字體隨鼠標(biāo)滾動放大縮小的實現(xiàn)
這篇文章主要介紹了IDEA設(shè)置字體隨鼠標(biāo)滾動放大縮小的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
LocalDateTime日期時間格式中間多了一個T的問題及解決
這篇文章主要介紹了LocalDateTime日期時間格式中間多了一個T的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
springboot打包無法讀取yml、properties等配置文件的解決
這篇文章主要介紹了springboot打包無法讀取yml、properties等配置文件的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
java微信公眾號開發(fā)第一步 公眾號接入和access_token管理
這篇文章主要為大家介紹了java微信公眾號開發(fā),主要內(nèi)容包括公眾號接入和access_token管理,感興趣的小伙伴們可以參考一下2016-01-01

