MyBatis(四) 對映器配置(自動對映、resultMap手動對映、引數傳遞)
引入對映器
<!-- 1.檔案路徑引入 -->
<mapper resource="cn\bing\mapper\StudentMapper.xml"/>
<!-- 2.映入對映器的類檔案 -->
<mapper class="cn.bing.mapper.StudentMapper"/>
<!-- 3.包路徑引入 -->
<package name="cn.bing.mapper"/>
<!-- 4 -->
<mapper url="file:///var/mappers/cn/bing/mapper/StudentMapper.xml"/>
對映器的主要元素
select元素配置
* id屬性,和namespace構成唯一標識,為定義介面的方法名稱
* parameterType,入參的型別,可以是全路徑類名,也可以是別名,必須是上下文定義的
* parameterMap, 廢棄
* resultType, 可以是全路徑名,也可以是別名,結果集將通過javaBean對映,不能和resultMap同時使用
* resultMap, 定義表欄位和pojo的欄位的對映規則
另外幾個不常用的元素:
* flushCache,作用是呼叫sql後,是否要求MyBatis清空之前的查詢的本地快取和二級快取,預設false
* useCache,啟動二級快取,預設為true
查詢中的自動對映
也就是沒有配置resultMap的對映規則,直接將查詢的欄位值對映到對應的pojo的欄位上,
要求資料庫欄位和pojo的欄位名一致,這種情況下,一般是要給查詢的欄位起和pojo欄位一致的別名
<select id="queryStudentInfo" resultType="Student" parameterType="_int">
select
stu_id as stuId,
stu_Age as stuAge,
stu_Sex as stuSex,
stu_Name as stuName
from student_info where stu_id = #{id}
</select>
自動對映的設定
<settings>
<!--
none:不自動對映
partial:只會自動對映,沒有定義巢狀結果集的結果
full: 不管是否巢狀,都自動對映
-->
<setting name="autoMappingBehavior" value="none"/>
</settings>
resultMap指定對映方式
在對映過程中,可能需要指定typeHandler進行型別轉換,自動對映無法完成, 此時藉助resutlMap
* 將上面自動對映的SQL片段,修改
1. 無需指定列的別名,在resultMap中設定列的對映規則
2. 去除resultType,指定resultMap,兩個屬性不同共存
<select id="queryStudentInfo" resultMap="studentMap" parameterType="_int">
select stu_id,stu_Age,stu_Sex,stu_Name
from student_info where stu_id = #{id}
</select>
<resultMap type="cn.bing.pojo.Student" id="studentMap">
<id column="stu_id" property="stuId"/>
<result column="stu_age" property="stuAge"/>
<result column="stu_sex" property="stuSex"
jdbcType="TINYINT"
javaType="cn.bing.pojo.Sex"
typeHandler="cn.bing.typeHandler.MyEnumTypeHandler"/>
<result column="stu_name" property="stuName"/>
</resultMap>
type: 對映的javaBean型別
id主鍵列,result一般列
property: 表列名對映的javaBean 欄位
column: 表列名
引數傳遞的三種方式
指定parameterType的三種型別
1. map方式
public Student queryStudentByNameAndSex(Map<String, String> map);
<select id="queryStudentByNameAndSex" resultType="student" parameterType="map">
select
stu_id as stuId,
stu_Age as stuAge,
stu_Sex as stuSex,
stu_Name as stuName
from student_info where stu_name = #{name} and stu_sex = #{sex}
</select>
map的key需要和sql裡面的引數一致 map.put("sex",sex) map.put("name",name);2. 註解方式
public Student queryStudentByNameAndSex(@Param("name")String stuName,@Param("sex")String sex);
<select id="queryStudentByNameAndSex" resultType="student" parameterType="map">
select
stu_id as stuId,
stu_Age as stuAge,
stu_Sex as stuSex,
stu_Name as stuName
from student_info where stu_name = #{name} and stu_sex = #{sex}
</select>
3. javaBean的方式
要求javaBean的欄位名和SQL片段中的引數名稱一致
public void insertStudent(Student student);
<insert id="insertStudent" parameterType="student">
insert into student_info (stu_age,stu_sex,stu_name) values
(#{stuAge},#{stuSex},#{stuName})
</insert>
相關文章
- Mybatis 強大的結果集對映器resultMapMyBatis
- Mybatis結果對映MyBatis
- 【Mybatis系列】從原始碼角度理解Mybatis欄位對映-AS&ResultMapMyBatis原始碼
- 對映
- Mybatis 基礎xml對映MyBatisXML
- MyBatis框架之SQL對映和動態SQLMyBatis框架SQL
- Nginx埠對映配置Nginx
- ASP.NET Core-自動對映ASP.NET
- MyBatis從入門到精通(十一):MyBatis高階結果對映之一對多對映MyBatis
- MyBatis從入門到精通(九):MyBatis高階結果對映之一對一對映MyBatis
- JPA關係對映系列四:many-to-many 關聯對映
- elasticsearch的字串動態對映Elasticsearch字串
- Mybatis實體關聯對映MyBatis
- mybatis關聯關係對映MyBatis
- Mybatis對映檔案簡介MyBatis
- mybatis高階結果對映MyBatis
- MyBatis 結果對映總結MyBatis
- 多重對映
- MyBatis實現一對一關聯對映MyBatis
- NAS對映網路驅動器如何操作?
- Mybatis動態對映,這次終於搞明白了MyBatis
- 深入淺出MyBatis:「對映器」全瞭解MyBatis
- EntityFramework Core如何對映動態模型?Framework模型
- 『手寫Mybatis』實現對映器的註冊和使用MyBatis
- [非專業翻譯] Mapster - 對映前&對映後
- ThinkPHP3.2.3 欄位對映/自動驗證/自動完成PHP
- MyBaits | 對映檔案之引數處理AI
- WSL 埠對映
- Cache對映方式
- 09 對映(mappings)APP
- 怎麼設定對映網路驅動器?在電腦上設定對映網路驅動器的方法
- Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發MyBatis
- resultMap 和 resultType 的欄位對映覆蓋問題
- Linux埠對映是什麼?如何進行埠對映?Linux
- Docker 如何動態修改容器埠對映Docker
- Elasticsearch 索引的對映配置詳解Elasticsearch索引
- nginx || apache 配置 API 介面對映 proxyNginxApacheAPI
- ElasticSearch中的對映Elasticsearch