<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                Minidao SQL參數用法 === > 接口方法如何傳遞參數 ### 注解一:@Param 參數標簽 * **注解定義:** ``` /** * minidao參數注解 */ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Param { String value(); } ``` * **用法示例:** ``` Map<String,Object> getMap2(@Param("empno") String empno,@Param("name")String name); ``` ### 注解二:@Arguments 參數標簽 (官方不建議使用) * **注解定義:** ``` /** *(SQL模板參數名) * 1. [注釋標簽參數]必須和[方法參數],保持順序一致 * 2. [注釋標簽參數]的參數數目不能大于[方法參數]的參數數目 * 3. 只有在[注釋標簽參數]標注的參數,才會傳遞到SQL模板里 * 4. 如果[方法參數]只有一個,如果用戶不設置 [注釋標簽參數],則默認參數名為miniDto */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Arguments { String[] value() default {}; } ``` * **用法示例:** ``` @Arguments({"empno","name"}) Map getMap(String empno,String name); ``` > SQL中如何使用參數 ### 方式一: 占位符方式, 格式字段前加冒號【: 字段名】 * **優點: ** 防止sql注入;sql執行計劃只解析一次;字段值根據類型自動轉換,不需要手工處理 * **缺點:** 只能傳參數原生態值;參數為List情況循環體不適用 * **示例:** ``` SELECT * FROM employee where 1=1 <#if employee.age ?exists> and age = :employee.age </#if> <#if employee.name ?exists> and name = :employee.name </#if> <#if employee.empno ?exists> and empno = :employee.empno </#if> ``` ### 方式二:模板語言方式,格式【${字段名}】 * **缺點:** Sql直接拼裝,有SQL注入風險;參數值需根據類型手工轉換; * **優點:** 可以對參數值進行腳本處理;參數為List對象,循環體對象必須用該方式; (用戶體驗沒有變化,直接將${}改為: 即可) * **特點:**持多參數,支持參數多層,參數為list必須采用模板語言方式 * **示例:** ``` SELECT * FROM employee where 1=1 <#if employee.age ?exists> and age = '${employee.age}' </#if> <#if employee.name ?exists> and name = '${employee.name}' </#if> <#if employee.empno ?exists> and empno = '${employee.empno}' </#if> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看