fastmybatis MyBatis 简化开发框架 项目简介
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表,添加对应的实体类TUser.java和MapperTUserMapper.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); // 该条件下总记录数完整的测试用例,点击前往
<groupId>net.oschina.durcframework</groupId>
<artifactId>fastmybatis-spring-boot-starter</artifactId>
<version>1.0.2</version>
</dependency>假设数据库有张t_user表,添加对应的实体类TUser.java和MapperTUserMapper.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); // 该条件下总记录数完整的测试用例,点击前往