myBatis——註解,#{}與${},resultMap的使用
註解開發
註解開發不需要使用mapper.xml檔案進行對映 直接繫結類
<mappers>
<mapper class="com.luerdao.dao.UserMapper"></mapper>
</mappers>
@Select("select * from user")
List<User> getAllUser();
@Select("select * from user where id =#{id}")
User selectUserByID(int id);
@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{pwd})")
int addUser(User user);
@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id")int id);
@Param註解用於給方法引數起一個名字。以下是總結的使用原則:
- 在方法只接受一個引數的情況下,可以不使用@Param。
- 在方法接受多個引數的情況下,建議一定要使用@Param註解給引數命名。
- 如果引數是 JavaBean , 則不能使用@Param。
- 不使用@Param註解時,引數只能有一個,並且是Javabean。
關於#與$的區別
#{}相當於JDBC中的PrepareStatement
${} 則是沒有進行預編譯的 有注入問題
resultMap
資料庫中的欄位名
類中的欄位名
查詢出來的結果(pwd和類中欄位不對應)
解決方案
一:起別名
二:使用resulMap(推薦使用)
將資料庫中的column:pwd對應到類中的屬性名property:password
多對一處理
類
多個學生關聯到一個老師
這時直接查詢的話 select *from student
查詢不出來teacher 因為teacher在另一張表中
方式一:按查詢巢狀處理
需求:獲取所有學生及對應老師的資訊
思路:
1. 獲取所有學生的資訊
根據獲取的學生資訊的老師ID->獲取該老師的資訊
3. 思考問題,這樣學生的結果集中應該包含老師,該如何處理呢,資料庫中我們一般使用關聯查詢?
4. 做一個結果集對映:StudentTeacher
5. StudentTeacher結果集的型別為 Student
6. 學生中老師的屬性為teacher,對應資料庫中為tid。
多個 [1,...)學生關聯一個老師=> 一對一,一對多
7. 檢視官網找到:**association – 一個複雜型別的關聯;使用它來處理關聯查詢**
<select id="getStudent" resultMap="STMap">
select *from student
</select>
<resultMap id="STMap" type="Student">
<association property="teacher" column="tid" javaType="Teacher" select="selectT"></association>
</resultMap>
<select id="selectT" resultType="Teacher">
select *from teacher where id =#{tid}
</select>
association property=“teacher” column="tid"中的tid傳遞給下面的select id=“selectT” 查詢中,如果是隻有一個值得話#{}名字可以隨便填,建議與上面對應
總結:思路就是先把學生表查詢出來,然後再通過查詢出來的學生表中的tid去老師表中查詢對應的老師,通過resultMap來實現
方式二:按結果巢狀處理
<select id="getStudent2" resultMap="STMap2">
select s.id, s.name , t.name tname
from student s,teacher t
where s.tid = t.id
</select>
<resultMap id="STMap2" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"></result>
</association>
</resultMap>
總結:此方法很好理解,按照資料庫的查詢語法來寫,查詢出結果後我們通過結果集的對映來將Teacher表中的屬性給對映到tname上
property填屬性名,Type,javaType填類名,resultMap隨便取名字,column資料庫欄位名
一對多
和多對一差不多 都是兩種處理辦法,按查詢或者按結果處理,這裡就不再贅述直接放測試用例
按結果處理
<select id="getTeacher" resultMap="TSMap">
select t.id tid,t.name tname,s.id sid,s.name sname
from teacher t ,student s
where s.tid =t.id and t.id=#{id}
</select>
<resultMap id="TSMap" type="Teacher">
<result property="id" column="tid"/>
<result property="name" column="tname"/>
<collection property="students" ofType="Student">
<result property="name" column="sname"></result>
<result property="name" column="sname" />
<result property="tid" column="tid" />
</collection>
</resultMap>
按查詢處理
<select id="getTeacher2" resultMap="TSMap2">
select *from teacher where id=#{id}
</select>
<resultMap id="TSMap2" type="Teacher">
<result column="id" property="id"></result>
<collection property="students" ofType="Students" column="id" select="selectStudentById"></collection>
</resultMap>
<select id="selectStudentById" resultType="Student">
select * from student where tid=#{id}
</select>
相關文章
- Day64 Mybatis的多表查詢、ResultMap、註解以及快取MyBatis快取
- 關於mybatis中的resultType與resultMap用法及誤區MyBatis
- mybatis中resultMap使用之返回分組資料MyBatis
- 使用 iBatis (MyBatis)的元註解AnnotationsMyBatis
- Mybatis 輸出對映-- resultType resultMapMyBatis
- spring,mybatis事務管理配置與@Transactional註解使用[轉]SpringMyBatis
- MyBatis 使用resultMap 以及 一對一和一對多MyBatis
- MyBatis 中 @Param 註解的四種使用場景MyBatis
- ResultMap詳解
- mybatis使用association的resultMap方式進行對映少資料問題MyBatis
- Mybatis 強大的結果集對映器resultMapMyBatis
- mybatis原始碼學習------resultMap和sql片段的解析MyBatis原始碼SQL
- mybatis xml裡的 resultMap、resultOrdered、resultSets、resultSetType、resultType 區別MyBatisXML
- Java註解與反射的使用Java反射
- Mybatis筆記03---ResultMap及分頁MyBatis筆記
- Mybatis筆記04---使用註解開發MyBatis筆記
- Mybatis相關:基於註解的Mybatis開發MyBatis
- MyBatis 與 SpringBoot 整合:註解和xml兩種使用方式介紹MyBatisSpring BootXML
- Mybatis20_mybatis註解開發9MyBatis
- 【Mybatis系列】從原始碼角度理解Mybatis欄位對映-AS&ResultMapMyBatis原始碼
- mybatis原始碼-註解sqlMyBatis原始碼SQL
- Mybatis高階:Mybatis註解開發單表操作,Mybatis註解開發多表操作,構建sql語句,綜合案例學生管理系統使用介面註解方式優化MyBatisSQL優化
- mybatis之sql查詢配置檔案resultType和resultMapMyBatisSQL
- Mybatis-05 註解開發MyBatis
- java註解基礎與使用Java
- Mybatis的使用詳解MyBatis
- MyBatis從入門到精通(五):MyBatis 註解方式的基本用法MyBatis
- 【轉】java中註解的使用與例項Java
- Mybatis註解開發案例(入門)MyBatis
- Spring IOC 常用註解與使用Spring
- Mybatis的註解入門MyBatis
- SpringBoot + MyBatis(註解版),常用的SQL方法Spring BootMyBatisSQL
- Java註解的使用Java
- Mybatis引數傳遞&註解開發MyBatis
- 你不得不知道的MyBatis基礎知識之<resultMap>(4)MyBatis
- MyBatis 註解版(五)Spring boot 註解系列 插入物件返回 idMyBatisSpring Boot物件
- mybatis一對多查詢resultMap只返回了一條記錄MyBatis
- Mybatis配置檔案resultMap對映啥時候可寫可不寫?MyBatis