最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MyBatis框架詳解—Dao 代理(上篇)

2021-03-22 16:54 作者:動力節(jié)點小王本王  | 我要投稿



本篇文章主要內(nèi)容

Dao?接口動態(tài)代理

參數(shù)傳遞

處理查詢結(jié)果

like?和主鍵

Dao?代理實現(xiàn)數(shù)據(jù)庫操作

步驟

(1)?去掉 Dao?接口實現(xiàn)類

(2)?getMapper?獲取代理對象

只需調(diào)用 SqlSession 的getMapper()方法,即可獲取指定接口的實現(xiàn)類對象。該方法的參數(shù)為指定Dao 接口類的 class 值。

SqlSession session = factory.openSession();

StudentDao dao = session.getMapper(StudentDao.class);

?使用工具類:

StudentDao studentDao =?

MyBatisUtil.getSqlSession().getMapper(StudentDao.class);

getMapper()創(chuàng)建的對象,是代替我們自己創(chuàng)建的 StudentDaoImpl 類

(3)?使用 Dao?代理對象方法執(zhí)行 sql?語句

select 方法:

?insert 方法:

深入理解參數(shù)

java?代碼中把參數(shù)傳遞到mapper.xml?文件。

parameterType

parameterType: 接口中方法參數(shù)的類型, 類型的完全限定名或別名。這個屬性是可選的,因為 MyBatis?可以推斷出具體傳入語句的參數(shù),默認值為未設(shè)置

unset)。接口中方法的參數(shù)從java 代碼傳入到 mapper 文件的sql 語句。

int java.lang.Integer?

hashmap java.util.

HashMap list java.util.ArrayList

student com.bjpowernode.domain.Student

更多看課件資源中的有關(guān)別名的文件或者 mybatis-3.5.1.pdf 15 頁。????

<select>,<insert>,<update>,<delete>都可以使用parameterType 指定類型。

例如:

一個簡單參數(shù)

Dao 接口中方法的參數(shù)只有一個簡單類型(java 基本類型和String),占位符 #{ 任意字符 },和方法的參數(shù)名無關(guān)。

接口方法:

測試方法:

多個參數(shù)-使用@Param

當(dāng)Dao?接口方法多個參數(shù),需要通過名稱使用參數(shù)。 在方法形參前面加入@Param(“自定義參數(shù)名”),mapper?文件使用#{自定義參數(shù)名}。

例如定義

List<Student> selectStudent( @Param(“personName”)?

String name ) { … }

? ? ? ? ? ? ?mapper 文 件 select * from student where name =?

#{ personName}

?接口方法:

mapper 文件:

測試方法:

多個參數(shù)-使用對象

使用java 對象傳遞參數(shù), java 的屬性值就是 sql 需要的參數(shù)值。 每一個屬性就是一個參數(shù)。

語法格式: #{ property,javaType=java 中數(shù)據(jù)類型名,jdbcType=數(shù)據(jù)類型名稱 }

javaType, jdbcType 的類型MyBatis 可以檢測出來,一般不需要設(shè)置。常用格式 #{ property }

mybatis-3.5.1.pdf 第 43 頁 4.1.5.4 小節(jié):

創(chuàng)建保存參數(shù)值的對象 QueryParam

接口方法:

List<Student> selectMultiObject(QueryParam queryParam);

mapper 文件:

測試方法:

多個參數(shù)-按位置

參數(shù)位置從 0 開始, 引用參數(shù)語法 #{ arg 位置 } , 第一個參數(shù)是#{arg0}, 第二個是#{arg1}

注意:mybatis-3.3 版本和之前的版本使用#{0},#{1}方式, 從mybatis3.4 開始使用#{arg0}方式。

接口方法:

List<Student> selectByNameAndAge(String name,int age);

mapper 文件

測試方法:

多個參數(shù)-使用 Map

Map 集合可以存儲多個值,使用 Map 向mapper 文件一次傳入多個參數(shù)。Map 集合使用String 的key,

Object 類型的值存儲參數(shù)。 mapper 文件使用 # { key } 引用參數(shù)值。

例如:Map<String,Object> data = new HashMap<String,Object>();?

? ? ? ? ? data.put(“myname”,”李力”);

? ? ? ? ? data.put(“myage”,20);

接口方法:

List<Student> selectMultiMap(Map<String,Object> map);

mapper 文件:

測試方法:

#和$

#:占位符,告訴mybatis 使用實際的參數(shù)值代替。

并使用PrepareStatement 對象執(zhí)行sql 語句, #{…}代替 sql 語句的“?”。

這樣做更安全,更迅速,通常也是首選做法,

?mapper 文件

轉(zhuǎn)為 MyBatis 的執(zhí)行是:

String sql=” select id,name,email,age from student where id=?”; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1,1005);

解釋:

where id=? 就 是 where id=#{studentId} ps.setInt(1,1005) , 1005 會替換掉 #{studentId}

$ 字符串替換,告訴mybatis 使用$包?含的“字符串”替換所在位置。使用Statement 把sql 語句和${}的內(nèi)容連接起來。主要用在替換表名,列名,不同列排序等操作。

例 1:?

分別使用 id , email 列查詢 Student?

接口方法:

Student findById(int id);

Student findByEmail(String email);

?mapper 文件:

測試方法:

例 2:通用方法,使用不同列作為查詢條件

接口方法:

Student findByDiffField(@Param("col") String colunName,@Param("cval")?

Object value);

mapper 文件:

測試方法:

最后奉上視頻教程??,視頻觀看效果更佳?。∽哌^路過別忘素質(zhì)三連哦~~


MyBatis框架詳解—Dao 代理(上篇)的評論 (共 條)

分享到微博請遵守國家法律
西畴县| 仙居县| 吉木萨尔县| 镇雄县| 德钦县| 游戏| 天长市| 永善县| 禹城市| 达拉特旗| 大荔县| 静海县| 连江县| 玉山县| 云南省| 固安县| 潍坊市| 张掖市| 台湾省| 荥经县| 泰州市| 利辛县| 荣昌县| 本溪| 宁远县| 泸西县| 江孜县| 恩平市| 织金县| 武城县| 齐河县| 英德市| 崇州市| 汝南县| 搜索| 马尔康县| 淮安市| 庄浪县| 开远市| 万盛区| 平和县|