MyBatis起別名、resultMap、keyProperty


實體起別名

1.給實體類的權限定名取別名  (mybatis-config配置文件)
    com.lhl.demo1.Person        別名="Person"

    <typeAliase>
        <typeAlias type="實體的全類名" alia="別名"></typeAlias>
     </typeAliase>

2.Mapper使用實體類名
    resultType="Person"

MyBatis參數綁定的底層原理

1.默認mapper文件綁定  #{xxx}
    底層使用的PreparedStatement對象
    使用的是SQL的?站位綁定,預編譯
    優點:
        預編譯,防止sql注入、相對效率高一點
    缺點:
        只能綁定數據值   sql關鍵字、列、非數據無法綁定

2.使用sql字符串拼接綁定參數  ${xxx}
    優點:可以綁定任何內容
    缺點:sql注入

 將對象插入數據庫后,綁定id

目的:
    將insert插入的user對象,id賦值添加的id
思路:
    1.發送select 序列 from dual的sql
    2.通過結果集獲得id
    3.將id綁定在參數的urer對象的id屬性中

MyBatis插入數據綁定id
    <insert id="insert" parameterType="實體類型">
        <!--在insert語句之前,執行select序列的sql,為了給參數的id屬性綁定值-->
        <selectKey order="BEFORE" resultType="java.lang.String" keyProperty="sql的執行結果綁定給參數的實體的那個屬性  id">
          select seq_user.nextval from dual
     </selectKey> insert into t_user values(?,?,?) </insert>

 查詢關系映射

一、resultType

二、使用resultMap定義映射關系
    <!--
        1.列   屬性
        2.最終封裝的對象類型
    -->
    <resultMap id="PersonMap"  type="實體對象">
         <!--id:主屬性-->
        <id property="屬性"  column="列"></id>
        <!--其他列屬性-->
        <result property="屬性" column="列"/>
        <result property="name" column="name"*>
    </resultMap>

<!--查詢功能-->
    <select id="selectById" parameterType="java.lang.Integer" resultMap="PersonMap">
    </select>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM