<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之旅 廣告
                ## 把SQL放到文件里 像MyBatis那樣,復雜的SQL放到XML文件中維護,好處非常多,這也是為什么復雜的企業系統,互聯網電商后臺都采用sql文件維護sql的原因。當然,如果你項目足夠簡單,也可以在java里維護SQL。但BeetlSQL3推薦盡量使用markdown維護SQL 一個Markdown文件包含多個SQL片段,因此可以通過文件名+ sql標識來引用sql片段,比如 ```java SqlId id = SqlId.of("user","select"); ``` 這里表示一個user.md文件中的select片段 ```java SqlId id = SqlId.of("sys.user","select"); ``` 這表示sys/user.md中的select片段 文件默認位于classpath的sql目錄下,這是在SQLManagerBuilder中定義的,你可以設置不同的目錄 ```java SQLManagerBuilder builder = new SQLManagerBuilder(source); ClasspathLoader sqlLoader = new MarkdownClasspathLoader("sql","utf-8"); builder.setSqlLoader(sqlLoader); ``` BeetlSQL通過SqlId來鎖定sql片段的內容。但也考慮數據庫類型,考慮到跨庫操作,可能同一個查詢在不同數據庫下確實是不同的sql,BeetlSQL會進一步查詢數據庫下有沒有特定的sql。比如SQLManager的dbStyle是H2Style,則查詢 `sql/user.md` 和 `sql/${style.getNme()}/user.md ` 這里style.getName 返回的是h2,如果數據庫方言下有特定的sql片段,則優先使用 > 通常sql/user.md 放入公共的,通用sql, style目錄下放入不同的sql 關于如何寫sql模板,會稍后章節說明,如下是一些簡單說明。 - 采用md格式,===上面是sql語句在本文件里的唯一標示,下面則是sql語句。 - `-- @` 和`回車符號`是定界符號,可以在里面寫beetl語句。 - `#{}` 是占位符號,生成sql語句得時候,將輸出?,如果你想輸出表達式值,需要用text函數,或者任何以db開頭的函數,引擎則認為是直接輸出文本。 - `${}`直接輸出文本內容而不是占位符,需要開發者自行考慮是否sql注入。beetlsql支持定制`${}`語義來自動判斷sql注入安全 如下是一個簡單的markdwon文件 ```markdown select === select * from sys_user where 1=1 @if(!isEmpty(age)){ and age = #{age} @} @if(!isEmpty(name)){ and name = {name} @} updateById === update sys_user set status=1 where id = #{id} ``` > beetlsql 支持idea插件,使用beetlsql插件管理,導航,提示sql語句,同mybatis插件一樣功能 BeetlSQL提供如下API調用SQL片段查詢數據庫 - public <T> List<T> select(SqlId sqlId, Class<T> clazz, Map<String, Object> paras) 根據sqlid來查詢,參數是個map - public <T> List<T> select(SqlId sqlId, Class<T> clazz, Object paras) 根據sqlid來查詢,參數是個pojo - public <T> List<T> select(SqlId sqlId, Class<T> clazz) 根據sqlid來查詢,無參數 - public <T> T selectSingle(SqlId id,Object paras, Class<T> target) 根據sqlid查詢,輸入是Pojo,將對應的唯一值映射成指定的target對象,如果未找到,則返回空。需要注意的時候,有時候結果集本身是空,這時候建議使用unique - public <T> T selectSingle(SqlId id,Map<String, Object> paras, Class<T> target) 根據sqlid查詢,輸入是Map,將對應的唯一值映射成指定的target對象,如果未找到,則返回空。需要注意的時候,有時候結果集本身是空,這時候建議使用unique - public <T> T selectUnique(SqlId id,Object paras, Class<T> target) 根據sqlid查詢,輸入是Pojo或者Map,將對應的唯一值映射成指定的target對象,如果未找到,則拋出異常 - public <T> T selectUnique(String id,Map<String, Object> paras, Class<T> target) 根據sqlid查詢,輸入是Pojo或者Map,將對應的唯一值映射成指定的target對象,如果未找到,則拋出異常 - public Integer intValue(SqlId id,Object paras) 查詢結果映射成Integer,如果找不到,返回null,輸入是object - public Integer intValue(SqlId id,Map paras) 查詢結果映射成Integer,如果找不到,返回null,輸入是map,其他還有 longValue,bigDecimalValue 通過sqlid更新(刪除) - public int insert(SqlId sqlId,Object paras,KeyHolder holder) 根據sqlId 插入,并返回主鍵,主鍵id由paras對象所指定,調用此方法,對應的數據庫表必須主鍵自增。 - public int insert(SqlId sqlId,Object paras,KeyHolder holder,String keyName) 同上,主鍵由keyName指定 - public int insert(SqlId sqlId,Map paras,KeyHolder holder,String keyName),同上,參數通過map提供 - public int update(SqlId sqlId, Object obj) 根據sqlid更新 - public int update(SqlId sqlId, Map<String, Object> paras) 根據sqlid更新,輸出參數是map - public int[] updateBatch(SqlId sqlId,List<?> list) 批量更新 - public int[] updateBatch(SqlId sqlId,Map<String, Object>[] maps) 批量更新,參數是個數組,元素類型是map ```java SqlId id = SqlId.of("user","select"); Map map = new HashMap(); map.put("name","n"); List<UserEntity> list = sqlManager.select(id,UserEntity.class,map); ```
                  <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>

                              哎呀哎呀视频在线观看