<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## BaseMapper定制 Mapper 是BeetlSQL3推薦的的使用方法,你可以編寫接口繼承BaseMapper,能得到很多內置的CRUD方法,你可以編寫自己的BaseMapper. @AutoMapper注解適合作為你的BaseMapper方法,@AutoMapper指明了mapper方法的執行類,如下insert方法的執行類是InsertAMI ```java public interface BaseMapper<T> { /** * 通用插入,插入一個實體對象到數據庫,所以字段將參與操作,除非你使用ColumnIgnore注解 *SqlResource * @param entity */ @AutoMapper(InsertAMI.class) void insert(T entity); } ``` InsertAMI非常簡單,它是一個MapperInvoke子類,需要實現call方法 ```java public class InsertAMI extends MapperInvoke { @Override public Object call(SQLManager sm, Class entityClass, Method m, Object[] args) { int ret = sm.insert(args[0]); return ret; } } ``` 參數entityClass代表了Mapper的泛型類,參數m代表了被調用的mapper方法,參數args是調用的實際參數 Mapper提供了很多注解,比如@Sql,@Template,@SpringData,@SqlProvider等等,你也許想定義自己的注解來解釋mapper執行 這是可行的。以@SpringData為例子, ```java @Target({java.lang.annotation.ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Builder(SpringDataBuilder.class) public @interface SpringData { } ``` 我們可以到此注解被@Builder注解標注,那么所有被@SpringData標注的Mapper方法,都通過SpringDataBuilder類來解釋執行。SpringDataBuilder類實現了MapperExtBuilder,職責是構造一個MapperInvoke方法供BeetSQL調用 ```java public class SpringDataBuilder implements MapperExtBuilder { @Override public MapperInvoke parse(Class entity, Method m) { //解析method的方法,得出MapperInvoke } } ``` MapperInvoke會在Mapper方法調用時候被BeetlSQL3調用,MapperInvoke對應Mapper的每一個方法,在InsertAMI中我們已經看到一個實現。 與@SpringData類似的是@SubQuery,定義如下,有興趣的可以看看SubQueryBuilder的實現,非常簡單 ```java @Target({java.lang.annotation.ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Builder(SubQueryBuilder.class) public @interface SubQuery { } ``` 總結一下實現Mapper的自定義注解,是需要定義任何一個注解,并用@Builder(XXX.class) 說明執行類是XXX.class,此執行類需要實現MapperExtBuilder接口,能根據標注的方法,返回一個MapperInvoke執行類 ![](/Users/xiandafu/books/beetlsql3_guide/images/mapper.png)
                  <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>

                              哎呀哎呀视频在线观看