fastmybatisMyBatis 簡(jiǎn)化開(kāi)發(fā)框架
fastmybatis是一個(gè)mybatis開(kāi)發(fā)框架,目的為簡(jiǎn)化mybatis的開(kāi)發(fā),讓開(kāi)發(fā)更高效。
零配置快速上手
無(wú)需編寫xml文件即可完成CRUD操作
支持mysql,sqlserver,oracle,postgresql,sqlite
支持自定義sql,sql語(yǔ)句可以寫在配置文件中,同樣支持mybatis標(biāo)簽
支持與spring-boot集成
輕量級(jí),無(wú)侵入性,可與傳統(tǒng)mybatis用法共存
fastmybatis與MyBatis generator對(duì)比
快速開(kāi)始(springboot)
新建一個(gè)springboot項(xiàng)目
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ù)庫(kù)有張
t_user表,添加對(duì)應(yīng)的實(shí)體類TUser.java和MapperTUserMapper.java在
application.propertis中配置數(shù)據(jù)庫(kù)連接編寫測(cè)試用例
@Autowired
TUserMapper mapper;
// 根據(jù)主鍵查詢
@Test
public void testGetById() {
TUser user = mapper.getById(3);
System.out.println(user);
}
Mapper方法列表
/**
* 根據(jù)對(duì)象查詢,可以傳主鍵值,也可以傳整個(gè)對(duì)象
*
* @param id
* @return 返回實(shí)體對(duì)象,沒(méi)有返回null
*/
Entity getById(ID id);
/**
* 根據(jù)條件查找單條記錄
* @param query 查詢條件
* @return 返回實(shí)體對(duì)象,沒(méi)有返回null
*/
Entity getByQuery(@Param("query")Query query);
/**
* 根據(jù)字段查詢一條記錄
* @param column 數(shù)據(jù)庫(kù)字段名
* @param value 字段值
* @return 返回實(shí)體對(duì)象,沒(méi)有返回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ù)庫(kù)字段名
* @param value 字段值
* @return 返回實(shí)體對(duì)象集合,沒(méi)有返回空集合
*/
List<Entity> listByColumn(@Param("column")String column,@Param("value")Object value);
/**
* 條件查詢
*
* @param query 查詢條件
* @return 返回實(shí)體對(duì)象集合,沒(méi)有返回空集合
*/
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ù)庫(kù).<br>
* <strong>若要兼容其它版本數(shù)據(jù)庫(kù),請(qǐng)使用saveMulti()方法</strong>
* @param entitys
* @return
*/
int saveBatch(@Param("entitys")List<Entity> entitys);
/**
* 批量添加,兼容更多的數(shù)據(jù)庫(kù)版本.<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ù),可以是實(shí)體類,也可以是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查詢對(duì)象
查詢姓名為張三,并且年齡為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);
查詢注冊(cè)日期大于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);
分頁(yè)查詢:
Query query = new Query().eq("age",10).page(1,10); // 第一頁(yè),每頁(yè)10條數(shù)據(jù)
List<User> 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ù)
完整的測(cè)試用例,點(diǎn)擊前往
評(píng)論
圖片
表情
