一個(gè) Mybatis 開(kāi)發(fā)神器:Fast MyBatis 超好用
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
- 增刪改查例子
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 | 查詢單條數(shù)據(jù)并返回指定字段 |
| 查詢單條數(shù)據(jù)返回指定字段并轉(zhuǎn)換到指定類中 |
| 查詢某一行某個(gè)字段值 |
long getCount(Query query) | 查詢總記錄數(shù) |
List | 查詢結(jié)果集 |
List | 根據(jù)多個(gè)字段值查詢結(jié)果集 |
List | 根據(jù)字段多個(gè)值查詢結(jié)果集 |
List | 根據(jù)字段查詢結(jié)果集 |
List | 根據(jù)多個(gè)主鍵查詢 |
List | 查詢返回指定的列,返回實(shí)體類集合 |
| 查詢返回指定的列,返指定類集合 |
| 查詢指定列,返指定列集合 |
PageInfo | 分頁(yè)查詢 |
| 查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,轉(zhuǎn)換處理每一行 |
| 查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,并對(duì)記錄進(jìn)行額外處理 |
| 查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄 |
| 查詢結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄,轉(zhuǎn)換處理list |
| 查詢返回指定的列,返回分頁(yè)數(shù)據(jù) |
PageEasyui | 查詢返回easyui結(jié)果集 |
| 查詢返回easyui結(jié)果集,并轉(zhuǎn)換結(jié)果集中的記錄 |
E forceById(I id) | 根據(jù)主鍵查詢強(qiáng)制查詢,忽略邏輯刪除字段 |
int save(E entity) | 保存,保存所有字段 |
int saveBatch(Collection | 批量保存 |
int saveIgnoreNull(E entity) | 保存,忽略null字段 |
int saveMultiSet(Collection | 批量保存,兼容更多的數(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 | 批量保存,去除重復(fù)行,通過(guò)對(duì)象是否相對(duì)判斷重復(fù)數(shù)據(jù),實(shí)體類需要實(shí)現(xiàn)equals方法 |
int saveUnique(Collection | 批量保存,去除重復(fù)行,指定比較器判斷 |
int update(E entity) | 更新,更新所有字段 |
int updateByQuery(E entity, Query query) | 根據(jù)條件更新 |
int updateIgnoreNull(E entity) | 更新,忽略null字段 |
int updateByMap(Map | 根據(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ǔ)句 |
查詢姓名為張三,并且年齡為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/#/
評(píng)論
圖片
表情
