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

          一個(gè) Mybatis 開(kāi)發(fā)神器:Fast MyBatis 超好用

          共 5340字,需瀏覽 11分鐘

           ·

          2022-03-24 10:15

          fastmybatis 是一個(gè) mybatis 開(kāi)發(fā)框架,其宗旨為:簡(jiǎn)單、快速、有效。零配置快速上手,無(wú)需編寫(xiě) xml 文件即可完成 CRUD 操作。同時(shí)支持 mysql、sqlserver、oracle、postgresql、sqlite。

          支持自定義 SQL,對(duì)于基本的增刪改查不需要寫(xiě) SQL,對(duì)于其它特殊 SQL(如統(tǒng)計(jì) SQL )可寫(xiě)在 xml 中,支持與 Spring-Boot 集成,依賴 starter 即可,支持插件編寫(xiě),支持 ActiveRecord 模式,提供通用 Service,輕量級(jí),無(wú)侵入性,是官方 MyBatis 的一種擴(kuò)展

          快速開(kāi)始(SpringBoot)
          • 新建一個(gè) Spring boot 項(xiàng)目

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


          net.oschina.durcframework
          fastmybatis-spring-boot-starter
          最新版本

          • 增刪改查例子
          假設(shè)數(shù)據(jù)庫(kù)有張?t_user?表,添加對(duì)應(yīng)的實(shí)體類?TUser.java和 Mapper 類TUserMapper.java
          /**
          * 增刪改查例子
          */
          @RestController
          public class CrudController {

          @Autowired
          private UserService userService;


          /**
          * 分頁(yè)查詢
          * 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方法,實(shí)際上應(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方法,實(shí)際上應(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方法,實(shí)際上應(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
          // 實(shí)現(xiàn)通用接口
          @Service
          public class UserService implements IService<TUser/*實(shí)體類*/, Integer/*主鍵類型*/> {

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

          }
          service和mapper不用寫(xiě)一行代碼就能實(shí)現(xiàn)各種數(shù)據(jù)庫(kù)操作,非常方便。Mapper方法列表方法? ?說(shuō)明


          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)查詢某一行某個(gè)字段值
          long getCount(Query query)查詢總記錄數(shù)
          List list(Query query)查詢結(jié)果集
          List listByArray(String column, Object[] values)根據(jù)多個(gè)字段值查詢結(jié)果集
          List listByCollection(String column, Collection values)根據(jù)字段多個(gè)值查詢結(jié)果集
          List listByColumn(String column, Object value)根據(jù)字段查詢結(jié)果集
          List listByIds(Collection ids)根據(jù)多個(gè)主鍵查詢
          List listBySpecifiedColumns(List columns, Query query)查詢返回指定的列,返回實(shí)體類集合
          List listBySpecifiedColumns(List columns, Query query, Class clazz)查詢返回指定的列,返指定類集合
          List listColumnValues(String column, Query query, Class clazz)查詢指定列,返指定列集合
          PageInfo page(Query query)分頁(yè)查詢
          PageInfo page(Query query, Function converter)查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,轉(zhuǎn)換處理每一行
          PageInfo page(Query query, Supplier target, Consumer format)查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,并對(duì)記錄進(jìn)行額外處理
          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)查詢返回指定的列,返回分頁(yè)數(shù)據(jù)
          PageEasyui pageEasyui(Query query)查詢返回easyui結(jié)果集
          PageEasyui pageEasyui(Query query, Class clazz)查詢返回easyui結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄
          E forceById(I id)根據(jù)主鍵查詢強(qiáng)制查詢,忽略邏輯刪除字段
          int save(E entity)保存,保存所有字段
          int saveBatch(Collection entitys)批量保存
          int saveIgnoreNull(E entity)保存,忽略null字段
          int saveMultiSet(Collection entitys)批量保存,兼容更多的數(shù)據(jù)庫(kù)版本,忽略重復(fù)行,此方式采用union的方式批量insert
          int saveOrUpdate(E entity)保存或修改,當(dāng)數(shù)據(jù)庫(kù)存在記錄執(zhí)行UPDATE,否則執(zhí)行INSERT
          int saveOrUpdateIgnoreNull(E entity)保存或修改,忽略null字段,當(dāng)數(shù)據(jù)庫(kù)存在記錄執(zhí)行UPDATE,否則執(zhí)行INSERT
          int saveUnique(Collection entitys)批量保存,去除重復(fù)行,通過(guò)對(duì)象是否相對(duì)判斷重復(fù)數(shù)據(jù),實(shí)體類需要實(shí)現(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語(yǔ)句set部分,key為數(shù)據(jù)庫(kù)字段名
          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ù)多個(gè)主鍵id刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int deleteByQuery(Query query)根據(jù)條件刪除,在有邏輯刪除字段的情況下,做UPDATE操作
          int forceDelete(E entity)強(qiáng)制刪除(底層根據(jù)id刪除),忽略邏輯刪除字段,執(zhí)行DELETE語(yǔ)句
          int forceDeleteById(I id)根據(jù)id強(qiáng)制刪除,忽略邏輯刪除字段,執(zhí)行DELETE語(yǔ)句
          int forceDeleteByQuery(Query query)根據(jù)條件強(qiáng)制刪除,忽略邏輯刪除字段,執(zhí)行DELETE語(yǔ)句
          Query查詢對(duì)象
          查詢姓名為張三,并且年齡為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);

          查詢注冊(cè)日期大于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);

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

          查詢總記錄數(shù):
          Query query = new Query().eq("age",10).page(1,10); // 第一頁(yè),每頁(yè)10條數(shù)據(jù)
          long total = mapper.getCount(query); // 該條件下總記錄數(shù)
          開(kāi)源地址:https://gitee.com/durcframework/fastmybatis
          相關(guān)文檔:https://durcframework.gitee.io/fastmybatis/#/


          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  深夜福利男女 | 色女人导航 | 一区二区三区四区视频在线 | 91久久艹这里只有精品 | 九草天堂在线视频 |