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

Mybatis實(shí)體類對象入?yún)⒉樵兊墓P記

 更新時(shí)間:2022年06月22日 08:45:51   作者:走路的貓頭鷹  
這篇文章主要介紹了Mybatis實(shí)體類對象入?yún)⒉樵兊墓P記,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis實(shí)體類對象入?yún)⒉樵?/h2>

測試實(shí)體類對象結(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ù)傳入查詢時(shí)(不一定指定parameterType屬性值為實(shí)體對象的別名或全路徑名,typeHandler貌似會(huì)自動(dòng)識(shí)別),SQL查詢語句的#{}中內(nèi)容需要與實(shí)體類的字段屬性一一對應(yīng)(并非實(shí)體類的屬性一定是數(shù)據(jù)庫表中的字段,只要填入的值對應(yīng)即可。

mybatis查詢條件是看sql語句的where后的查詢條件),如果表達(dá)式中的值沒有對應(yīng),則會(huì)報(bào)錯(cuò)。

錯(cuò)誤示例如下:

....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á)式解析對象字段的值,#{}或者${}括號(hào)中的值為pojo屬性名稱

什么是ognl表達(dá)式?

3、傳遞pojo包裝對象

開發(fā)中通過實(shí)體類的包裝對象(pojo包裝對象)傳遞查詢條件,查詢條件是總和的查詢條件,不僅寶庫偶用戶的查詢條件,還包括其它的查詢條件,這時(shí)候使用包裝對象傳遞輸入?yún)?shù)

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

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

二、mybatis的輸出結(jié)果的封裝

resultType(輸出類型)

mysql在windows系統(tǒng)下不區(qū)分列名的大小寫,linux中嚴(yán)格區(qū)分大小寫

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

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

第一種解決方式:

查詢數(shù)據(jù)庫的時(shí)候起別名的方式

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

解釋說明標(biāo)簽中的屬性

  • 如果哪一行sql語句想使用resutMap中的對應(yīng)關(guān)系就需要設(shè)置resultMap屬性和resuletMap標(biāo)簽中的id屬性相同
  • resultMap中的type屬性表示的是封裝的實(shí)體類
  • id標(biāo)簽和property標(biāo)簽中的property表示的是封裝的實(shí)體類中的屬性
  • id標(biāo)簽和property標(biāo)簽中的column屬性表示的是映射的關(guān)系,也就是數(shù)據(jù)庫表中的列名

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

相關(guān)文章

最新評論

安溪县| 满城县| 兰州市| 会宁县| 油尖旺区| 班玛县| 凤冈县| 普安县| 平乐县| 东阿县| 克山县| 霸州市| 江津市| 旬阳县| 长武县| 永平县| 廊坊市| 夏津县| 长子县| 武邑县| 三穗县| 运城市| 南投市| 来宾市| 乌海市| 扬州市| 吉安县| 兴安县| 汉中市| 临沂市| 淮滨县| 礼泉县| 和静县| 太和县| 玉溪市| 藁城市| 阿拉善左旗| 鄂尔多斯市| 当雄县| 准格尔旗| 闸北区|