一個mybatis開發(fā)框架,比JPA好用比MyBatis generator好用

fastmybatis

fastmybatis是一個mybatis開發(fā)框架,目的為簡化mybatis的開發(fā),讓開發(fā)更高效。

  • 零配置快速上手
  • 無需編寫xml文件即可完成CRUD操作
  • 支持mysql,sqlserver,oracle,postgresql,sqlite
  • 支持自定義sql,sql語句可以寫在配置文件中,同樣支持mybatis標簽
  • 支持與spring-boot集成
  • 輕量級,無侵入性,可與傳統(tǒng)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>
  • 假設(shè)數(shù)據(jù)庫有張t_user表,添加對應(yīng)的實體類TUser.java和MapperTUserMapper.java
  • application.propertis中配置數(shù)據(jù)庫連接
  • 編寫測試用例
@Autowired
TUserMapper mapper;
    
// 根據(jù)主鍵查詢
@Test
public void testGetById() {
    TUser user = mapper.getById(3);
    System.out.println(user);
}

Mapper方法列表

/**
 * 根據(jù)對象查詢,可以傳主鍵值,也可以傳整個對象
 * 
 * @param id
 * @return 返回實體對象,沒有返回null
 */
Entity getById(ID id);

/**
 * 根據(jù)條件查找單條記錄
 * @param query 查詢條件
 * @return 返回實體對象,沒有返回null
 */
Entity getByQuery(@Param("query")Query query);

/**
 * 根據(jù)字段查詢一條記錄
 * @param column 數(shù)據(jù)庫字段名
 * @param value 字段值
 * @return 返回實體對象,沒有返回null
 */
Entity getByColumn(@Param("column")String column,@Param("value")Object value);

/**
 * 查詢總記錄數(shù)
 * 
 * @param query 查詢條件
 * @return 返回總記錄數(shù)
 */
long getCount(@Param("query")Query query);  

/**
 * 根據(jù)字段查詢集合
 * @param column 數(shù)據(jù)庫字段名
 * @param value 字段值
 * @return 返回實體對象集合,沒有返回空集合
 */
List<Entity> listByColumn(@Param("column")String column,@Param("value")Object value);

/**
 * 條件查詢
 * 
 * @param query 查詢條件
 * @return 返回實體對象集合,沒有返回空集合
 */
List<Entity> list(@Param("query")Query query);

/**
 * 查詢指定字段結(jié)果
 * @param columns 返回的字段
 * @param query 查詢條件
 * @return 返回結(jié)果集
 */
List<Map<String, Object>> listMap(@Param("columns")List<String> columns, @Param("query")Query query);

/**
 * 新增,新增所有字段
 * 
 * @param entity
 * @return 受影響行數(shù)
 */
int save(Entity entity);

/**
 * 新增(忽略null數(shù)據(jù))
 * @param entity
 * @return 受影響行數(shù)
 */
int saveIgnoreNull(Entity entity);

/**
 * 批量添加,只支持mysql,sqlserver2008及以上數(shù)據(jù)庫.<br>
 * <strong>若要兼容其它版本數(shù)據(jù)庫,請使用saveMulti()方法</strong>
 * @param entitys
 * @return
 */
int saveBatch(@Param("entitys")List<Entity> entitys);

/**
 * 批量添加,兼容更多的數(shù)據(jù)庫版本.<br>
 * 此方式采用union all的方式批量insert,如果是mysql或sqlserver2008及以上推薦saveBatch()方法.
 * @param entitys
 * @return
 */
int saveMulti(@Param("entitys")List<Entity> entitys);

/**
 * 修改,修改所有字段
 * 
 * @param entity
 * @return 受影響行數(shù)
 */
int update(Entity entity);

/**
 * 根據(jù)主鍵更新不為null的字段
 * 
 * @param entity
 * @return 受影響行數(shù)
 */
int updateIgnoreNull(Entity entity);

/**
 * 根據(jù)條件批量更新
 * 
 * @param entity 待更新的數(shù)據(jù),可以是實體類,也可以是Map{@literal<String,Object>}
 * @param query 更新條件
 * @return 受影響行數(shù)
 */
int updateByQuery(@Param("entity") Object entity, @Param("query") Query query);

/**
 * 刪除
 * 
 * @param entity
 * @return 受影響行數(shù)
 */
int delete(Entity entity);

/**
 * 根據(jù)id刪除
 * 
 * @param id 主鍵id
 * @return 受影響行數(shù)
 */
int deleteById(ID id);

/**
 * 根據(jù)條件刪除
 * 
 * @param query
 * @return 受影響行數(shù)
 */
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條數(shù)據(jù)
List<User> users = mapper.list(query);

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

工程介紹

實戰(zhàn)項目

easydoc : 一個文檔管理項目,采用markdown方式寫作。

意見交流

Q群328419269

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容