fastmybatis
fastmybatis是一個mybatis開發架構,目的為簡化mybatis的開發,讓開發更高效。
- 零配置快速上手
- 無需編寫xml檔案即可完成CRUD操作
- 支援mysql,sqlserver,oracle,postgresql,sqlite
- 支援自定義sql,sql語句可以寫在配置檔案中,同樣支援mybatis标簽
- 支援與spring-boot內建
- 輕量級,無侵入性,可與傳統mybatis用法共存
fastmybatis與MyBatis generator對比
快速開始(springboot)
- 建立一個springboot項目
- pom.xml添加fastmybatis-spring-boot-starter
<dependency>
<groupId>net.oschina.durcframework</groupId>
<artifactId>fastmybatis-spring-boot-starter</artifactId>
<version>1.0.2</version>
</dependency>
- 假設資料庫有張
表,添加對應的實體類t_user
和MapperTUser.java
TUserMapper.java
- 在
中配置資料庫連接配接application.propertis
- 編寫測試用例
@Autowired
TUserMapper mapper;
// 根據主鍵查詢
@Test
public void testGetById() {
TUser user = mapper.getById(3);
System.out.println(user);
}
Mapper方法清單
/**
* 根據對象查詢,可以傳主鍵值,也可以傳整個對象
*
* @param id
* @return 傳回實體對象,沒有傳回null
*/
Entity getById(ID id);
/**
* 根據條件查找單條記錄
* @param query 查詢條件
* @return 傳回實體對象,沒有傳回null
*/
Entity getByQuery(@Param("query")Query query);
/**
* 根據字段查詢一條記錄
* @param column 資料庫字段名
* @param value 字段值
* @return 傳回實體對象,沒有傳回null
*/
Entity getByColumn(@Param("column")String column,@Param("value")Object value);
/**
* 查詢總記錄數
*
* @param query 查詢條件
* @return 傳回總記錄數
*/
long getCount(@Param("query")Query query);
/**
* 根據字段查詢集合
* @param column 資料庫字段名
* @param value 字段值
* @return 傳回實體對象集合,沒有傳回空集合
*/
List<Entity> listByColumn(@Param("column")String column,@Param("value")Object value);
/**
* 條件查詢
*
* @param query 查詢條件
* @return 傳回實體對象集合,沒有傳回空集合
*/
List<Entity> list(@Param("query")Query query);
/**
* 查詢指定字段結果
* @param columns 傳回的字段
* @param query 查詢條件
* @return 傳回結果集
*/
List<Map<String, Object>> listMap(@Param("columns")List<String> columns, @Param("query")Query query);
/**
* 新增,新增所有字段
*
* @param entity
* @return 受影響行數
*/
int save(Entity entity);
/**
* 新增(忽略null資料)
* @param entity
* @return 受影響行數
*/
int saveIgnoreNull(Entity entity);
/**
* 批量添加,隻支援mysql,sqlserver2008及以上資料庫.<br>
* <strong>若要相容其它版本資料庫,請使用saveMulti()方法</strong>
* @param entitys
* @return
*/
int saveBatch(@Param("entitys")List<Entity> entitys);
/**
* 批量添加,相容更多的資料庫版本.<br>
* 此方式采用union all的方式批量insert,如果是mysql或sqlserver2008及以上推薦saveBatch()方法.
* @param entitys
* @return
*/
int saveMulti(@Param("entitys")List<Entity> entitys);
/**
* 修改,修改所有字段
*
* @param entity
* @return 受影響行數
*/
int update(Entity entity);
/**
* 根據主鍵更新不為null的字段
*
* @param entity
* @return 受影響行數
*/
int updateIgnoreNull(Entity entity);
/**
* 根據條件批量更新
*
* @param entity 待更新的資料,可以是實體類,也可以是Map{@literal<String,Object>}
* @param query 更新條件
* @return 受影響行數
*/
int updateByQuery(@Param("entity") Object entity, @Param("query") Query query);
/**
* 删除
*
* @param entity
* @return 受影響行數
*/
int delete(Entity entity);
/**
* 根據id删除
*
* @param id 主鍵id
* @return 受影響行數
*/
int deleteById(ID id);
/**
* 根據條件删除
*
* @param query
* @return 受影響行數
*/
int deleteByQuery(@Param("query")Query query);
Query查詢對象
查詢姓名為張三,并且年齡為22歲的使用者:
Query query = new Query().eq("username","張三").eq("age",22);
List<User> users = mapper.list(query);
查詢年齡為10,20,30的使用者:
Query query = new Query().in("age",Arrays.asList(10,20,30));
List<User> users = mapper.list(query);
查詢注冊日期大于2017-11-11的使用者:
Date regDate = ...
Query query = new Query().gt("reg_date",regDate);
List<User> users = mapper.list(query);
查詢性别為男的,年齡大于等于20歲的使用者,按年齡降序:
Query query = new Query().eq("gender",1).ge("age",20).orderby("age",Sort.DESC);
List<User> users = mapper.list(query);
分頁查詢:
Query query = new Query().eq("age",10).page(1,10); // 第一頁,每頁10條資料
List<User> users = mapper.list(query);
查詢總記錄數:
Query query = new Query().eq("age",10).page(1,10); // 第一頁,每頁10條資料
long total = mapper.getCount(query); // 該條件下總記錄數
- 完整的測試用例,點選前往
工程介紹
- fastmybatis-core:架構源代碼
- fastmybatis-demo:對應demo
- fastmybatis-generator:代碼生成工具,友善生成實體類和Mapper(可生成lombok風格實體類)
- fastmybatis-spring-boot-autoconfigure和fastmybatis-spring-boot-starter:springboot對應的的starter
實戰項目
easydoc : 一個文檔管理項目,采用markdown方式寫作。
意見交流
Q群328419269
版權聲明:本文為CSDN部落客「weixin_34038293」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34038293/article/details/92397860