fastmybatis 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
fastmybatis 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
fastmybatis 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 猿敲月下码
适用人群 未知
收录时间 2018-06-20

软件简介

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); // 该条件下总记录数
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣
发表了资讯
04/08 16:22

fastmybatis 2.2.1 发布,mybatis 开发利器

fastmybatis 2.2.1 发布,本次更新内如如下: 去除spring依赖,项目无需依赖spring也能跑,具体查看fastmybatis-demo/fastmybatis-demo-standard 新增Vert.x示例,具体查看fastmybatis-demo/fastmybatis-demo-vertx 本次更新最大的改动是不需要依赖spring框架,具体用法如下: public static void main(String[] args) { // 启动加载 Fastmybatis.create() // 指定mybatis-config.xml文件classpath路径 ...

0
14
发表了资讯
03/24 10:00

fastmybatis 2.1.0 发布,支持多租户、ActiveRecord 模式

fastmybatis 2.1.0 发布,本次更新内容如下: 支持多租户 新增ActiveRecord模式 多租户 fastmybatis支持两种方式实现多租户:通过字段隔离,通过表名隔离 具体实现方式参考文档:多租户 ActiveRecord模式 实体类实现com.gitee.fastmybatis.core.support.Record接口即可拥有ActiveRecord模式 实体类: /** * Active Record * 表名:user_info * 备注:用户信息表 */ @Table(name = "user_info") public class UserI...

4
11
发表了资讯
02/18 09:51

fastmybatis 1.11.1 发布,mybatis 开发利器

fastmybatis 1.11.1 发布,本次更新内容如下: mapper新增如下方法: E getBySpecifiedColumns(List<String> columns, Query query) 查询单条数据并返回指定字段 <T> T getBySpecifiedColumns(List<String> columns, Query query, Class<T> clazz) 查询单条数据并返回指定字段并转换到指定类中 List<E> listByIds(Collection<I> ids) 根据多个主键值查询 T getColumnValue(String column, Query query, Class<T> clazz) 查询某个...

4
8
发表了资讯
02/11 13:19

fastmybatis 1.10.12 发布,mybatis 开发利器

fastmybatis 1.10.12 发布,本次发布内容如下: Query类新增条件表达式query.eq(StringUtils.hasText(name), "name", name); 修复mysql下tinyint(1)返回boolean值问题 检查空字符串默认进行一次trim。mybatis.empty-string-with-trim=true 查询字段忽略空字符调整为默认开启mybatis.ignore-empty-string=true 到1.10.12版本为止,fastmybatis实现多个有用的功能 将参数放在对象中查询 参数类,接收前端传递过来的请求参数 @D...

1
7
2018/07/28 12:31

fastmybatis 1.0.11 发布,增强团队协作

fastmybatis 1.0.11 发布,此次更新内容有: 增强Mapper.xml,不同Mapper文件可指定同一个namespace,最终会合并 doc 优化属性拷贝 本次更新重点是Mapper.xml增强,多文件可指定同一个namespace。 在以往的开发过程中,一个Mapper对应一个xml文件(namespace)。如果多人同时在一个xml中写SQL的话会造成各种冲突(虽然能够最终被解决)。 fastmybatis打破这种常规,允许不同的xml文件定义相同的namespace,程序启动时会自动把他...

7
11
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
0 评论
39 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部