<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個 Mybatis 開發(fā)神器:Fast MyBatis

          共 5815字,需瀏覽 12分鐘

           ·

          2022-04-20 20:25

          關(guān)注我們,設(shè)為星標,每天7:40不見不散,架構(gòu)路上與您共享

          回復(fù)架構(gòu)師獲取資源


          大家好,我是你們的朋友架構(gòu)君,一個會寫代碼吟詩的架構(gòu)師。

          'javajgs.com';


          fastmybatis 是一個 mybatis 開發(fā)框架,其宗旨為:簡單、快速、有效。零配置快速上手,無需編寫 xml 文件即可完成 CRUD 操作。同時支持 mysql、sqlserver、oracle、postgresql、sqlite。
          支持自定義 SQL,對于基本的增刪改查不需要寫 SQL,對于其它特殊 SQL(如統(tǒng)計 SQL )可寫在 xml 中,支持與 Spring-Boot 集成,依賴 starter 即可,支持插件編寫,支持 ActiveRecord 模式,提供通用 Service,輕量級,無侵入性,是官方 MyBatis 的一種擴展

          快速開始(springboot)

          • 新建一個 Spring boot 項目

          • pom.xml 添加 fastmybatis-spring-boot-starter


          net.oschina.durcframework
          fastmybatis-spring-boot-starter
          最新版本
          • 增刪改查例子

          假設(shè)數(shù)據(jù)庫有張?t_user?表,添加對應(yīng)的實體類?TUser.java和 Mapper 類TUserMapper.java

          /**
          * 增刪改查例子
          */
          @RestController
          public class CrudController {

          @Autowired
          private UserService userService;


          /**
          * 分頁查詢
          * http://localhost:8080/user/page?id=10
          * http://localhost:8080/user/page?pageIndex=1&pageSize=5
          *
          * @param param
          * @return
          */
          @GetMapping("/user/page")
          public Result<PageInfo<TUser>> page(UserParam param) {
          Query query = param.toQuery();
          PageInfo<TUser> pageInfo = userService.page(query);
          return Result.ok(pageInfo);
          }

          /**
          * 新增記錄,這里為了方便演示用了GET方法,實際上應(yīng)該使用POST
          * http://localhost:8080/user/save?username=jim
          *
          * @param user
          * @return
          */
          @GetMapping("/user/save")
          public Result<Integer> save(TUser user) {
          userService.saveIgnoreNull(user);
          // 返回添加后的主鍵值
          return Result.ok(user.getId());
          }

          /**
          * 修改記錄,這里為了方便演示用了GET方法,實際上應(yīng)該使用POST
          * http://localhost:8080/user/update?id=10&username=jim
          *
          * @param user 表單數(shù)據(jù)
          * @return
          */
          @GetMapping("/user/update")
          public Result update(TUser user) {
          userService.updateIgnoreNull(user);
          return Result.ok();
          }

          /**
          * 刪除記錄,這里為了方便演示用了GET方法,實際上應(yīng)該使用DELETE
          * http://localhost:8080/user/delete?id=10
          *
          * @param id 主鍵id
          * @return
          */
          @GetMapping("/user/delete")
          public Result delete(Integer id) {
          userService.deleteById(id);
          return Result.ok();
          }
          }
          • UserService.java
          // 實現(xiàn)通用接口
          @Service
          public class UserService implements IService<TUser/*實體類*/, Integer/*主鍵類型*/> {

          }
          • TUserMapper.java
          public interface TUserMapper extends CrudMapper<TUser/*實體類*/, Integer/*主鍵類型*/> {

          }

          service和mapper不用寫一行代碼就能實現(xiàn)各種數(shù)據(jù)庫操作,非常方便。

          Mapper方法列表

          方法說明
          E getByColumn(String column, Object value)根據(jù)字段查詢一條記錄
          E getById(I id)根據(jù)主鍵查詢
          E getByQuery(Query query)根據(jù)條件查找單條記錄
          E getBySpecifiedColumns(List columns, Query query)查詢單條數(shù)據(jù)并返回指定字段
          T getBySpecifiedColumns(List columns, Query query, Class clazz)查詢單條數(shù)據(jù)返回指定字段并轉(zhuǎn)換到指定類中
          T getColumnValue(String column, Query query, Class clazz)查詢某一行某個字段值
          long getCount(Query query)查詢總記錄數(shù)
          List list(Query query)查詢結(jié)果集
          List listByArray(String column, Object[] values)根據(jù)多個字段值查詢結(jié)果集
          List listByCollection(String column, Collection values)根據(jù)字段多個值查詢結(jié)果集
          List listByColumn(String column, Object value)根據(jù)字段查詢結(jié)果集
          List listByIds(Collection ids)根據(jù)多個主鍵查詢
          List listBySpecifiedColumns(List columns, Query query)查詢返回指定的列,返回實體類集合
          List listBySpecifiedColumns(List columns, Query query, Class clazz)查詢返回指定的列,返指定類集合
          List listColumnValues(String column, Query query, Class clazz)查詢指定列,返指定列集合
          PageInfo page(Query query)分頁查詢
          PageInfo page(Query query, Function converter)查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,轉(zhuǎn)換處理每一行
          PageInfo page(Query query, Supplier target, Consumer format)查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,并對記錄進行額外處理
          PageInfo page(Query query, Supplier target)查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄
          PageInfo pageAndConvert(Query query, Function, List> converter)查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,轉(zhuǎn)換處理list
          PageInfo pageBySpecifiedColumns(List columns, Query query, Class clazz)查詢返回指定的列,返回分頁數(shù)據(jù)
          PageEasyui pageEasyui(Query query)查詢返回easyui結(jié)果集
          PageEasyui pageEasyui(Query query, Class clazz)查詢返回easyui結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄
          E forceById(I id)根據(jù)主鍵查詢強制查詢,忽略邏輯刪除字段
          int save(E entity)保存,保存所有字段
          int saveBatch(Collection entitys)批量保存
          int saveIgnoreNull(E entity)保存,忽略null字段
          int saveMultiSet(Collection entitys)批量保存,兼容更多的數(shù)據(jù)庫版本,忽略重復(fù)行,此方式采用union的方式批量insert
          int saveOrUpdate(E entity)保存或修改,當數(shù)據(jù)庫存在記錄執(zhí)行UPDATE,否則執(zhí)行INSERT
          int saveOrUpdateIgnoreNull(E entity)保存或修改,忽略null字段,當數(shù)據(jù)庫存在記錄執(zhí)行UPDATE,否則執(zhí)行INSERT
          int saveUnique(Collection entitys)批量保存,去除重復(fù)行,通過對象是否相對判斷重復(fù)數(shù)據(jù),實體類需要實現(xiàn)equals方法
          int saveUnique(Collection entitys, Comparator comparator)批量保存,去除重復(fù)行,指定比較器判斷
          int update(E entity)更新,更新所有字段
          int updateByQuery(E entity, Query query)根據(jù)條件更新
          int updateIgnoreNull(E entity)更新,忽略null字段
          int updateByMap(Map map, Query query)根據(jù)條件更新,map中的數(shù)據(jù)轉(zhuǎn)化成update語句set部分,key為數(shù)據(jù)庫字段名
          int delete(E entity)刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int deleteByColumn(String column, Object value)根據(jù)指定字段值刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int deleteById(I id)根據(jù)id刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int deleteByIds(Collection ids)根據(jù)多個主鍵id刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int deleteByQuery(Query query)根據(jù)條件刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int forceDelete(E entity)強制刪除(底層根據(jù)id刪除),忽略邏輯刪除字段,執(zhí)行DELETE語句
          int forceDeleteById(I id)根據(jù)id強制刪除,忽略邏輯刪除字段,執(zhí)行DELETE語句
          int forceDeleteByQuery(Query query)根據(jù)條件強制刪除,忽略邏輯刪除字段,執(zhí)行DELETE語句

          Query查詢對象

          查詢姓名為張三,并且年齡為22歲的用戶:
          Query query = new Query().eq("username","張三").eq("age",22);
          List users = mapper.list(query);

          查詢年齡為10,20,30的用戶:
          Query query = new Query().in("age",Arrays.asList(10,20,30));
          List users = mapper.list(query);

          查詢注冊日期大于2017-11-11的用戶:
          Date regDate = ...
          Query query = new Query().gt("reg_date",regDate);
          List users = mapper.list(query);

          查詢性別為男的,年齡大于等于20歲的用戶,按年齡降序:
          Query query = new Query().eq("gender",1).ge("age",20).orderby("age",Sort.DESC);
          List users = mapper.list(query);

          分頁查詢:
          Query query = new Query().eq("age",10).page(1,10); // 第一頁,每頁10條數(shù)據(jù)
          List users = mapper.list(query);

          查詢總記錄數(shù):
          Query query = new Query().eq("age",10).page(1,10); // 第一頁,每頁10條數(shù)據(jù)
          long total = mapper.getCount(query); // 該條件下總記錄數(shù)

          開源地址:https://gitee.com/durcframework/fastmybatis
          相關(guān)文檔:https://durcframework.gitee.io/fastmybatis/#/


          到此文章就結(jié)束了。Java架構(gòu)師必看一個集公眾號、小程序、網(wǎng)站(3合1的文章平臺,給您架構(gòu)路上一臂之力,javajgs.com)。如果今天的文章對你在進階架構(gòu)師的路上有新的啟發(fā)和進步,歡迎轉(zhuǎn)發(fā)給更多人。歡迎加入架構(gòu)師社區(qū)技術(shù)交流群,眾多大咖帶你進階架構(gòu)師,在后臺回復(fù)“加群”即可入群。



          這些年小編給你分享過的干貨


          1.idea永久激活碼(親測可用)

          2.優(yōu)質(zhì)ERP系統(tǒng)帶進銷存財務(wù)生產(chǎn)功能(附源碼)

          3.優(yōu)質(zhì)SpringBoot帶工作流管理項目(附源碼)

          4.最好用的OA系統(tǒng),拿來即用(附源碼)

          5.SBoot+Vue外賣系統(tǒng)前后端都有(附源碼

          6.SBoot+Vue可視化大屏拖拽項目(附源碼)



          轉(zhuǎn)發(fā)在看就是最大的支持??

          瀏覽 32
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本黄色视频在线播放 | 国产日产精品一区二区三区四区 | 白丝自慰喷水 | 影音先锋av成人网 | 又粗又长又大一级a片免费看 |