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 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
2023/12/11 09:19

fastmybatis 2.10.0 发布,新增数据脱敏功能

fastmybatis 2.10.0 发布,本次发布内容如下: 新增数据脱敏 数据脱敏,将一些敏感数据隐藏,如:手机号,身份证号等信息 fastmybatis自带了手机号、身份证号、银行卡、邮箱四种脱敏处理。 手机号脱敏:MobileSensitiveFormatter 身份证号脱敏:IdCardSensitiveFormatter 银行卡脱敏:BankCardSensitiveFormatter 邮箱脱敏:EmailSensitiveFormatter 以手机号脱敏为例,实现方式如下: 在实体类字段上面加@Column注解,并指定f...

2
3
发表了资讯
2023/07/07 09:26

fastmybatis 2.8.1 发布,支持JPA Query Method查询

fastmybatis 2.8.1 发布,本次更新内如下: 新增JPA Query Method查询 2.8.1 开始新增JPA Query Method查询,只需要在接口中定义方法就能进行查询,无须编写SQL语句。 原理:根据方法名称中的关键字自动推导出SQL语 目前实现了大部分功能,参考:JPA Query Method 除了Distinct不支持,其它已全部支持 在Mapper中定义一个方法,以 findBy 开头 /** * … where x.lastname = ?1 and x.firstname = ?2 * @param lastname ...

3
2
发表了资讯
2023/07/04 10:01

fastmybatis 2.7.0 发布,新增LambdaQuery查询

fastmybatis 2.7.0 发布,本次更新内容如下: 简化标准使用方式,详情查看 fastmybatis-demo/fastmybatis-demo-standard 新增H2数据库模板 新增LambdaQuery LambdaQuery使用方式: Query query = Q.create(TUser.class) .eq(TUser::getId, 1) .ge(TUser::getId, 1) .in(TUser::getId, Arrays.asList(1,2)) .between(TUser::getId, 1, 2) .sql("id=1"); List<TUser> list = mapper.list(query); 子表...

2
1
发表了资讯
2023/05/08 14:20

fastmybatis 2.6.0 发布,mybatis 开发利器

fastmybatis 2.6.0 发布,本次更新内容如下: @Column 注解新增logicDeleteStrategy枚举属性 PR,可选项有 LogicDeleteStrategy.FIXED_VALUE:固定值策略,notDeleteValue和deleteValue生效(UPDATE t_user SET isdel = 1 WHERE id = 1 AND isdel = 0;) LogicDeleteStrategy.ID_FILL:删除时主键填充逻辑删除字段(UPDATE t_user SET isdel = id WHERE id = 1 AND isdel = 0;) 新增配置,禁止在Mapper接口中写SQL。PR 在appli...

2
5
发表了资讯
2022/07/04 08:32

fastmybatis 2.3.2 发布,mybatis 开发利器

fastmybatis 2.3.2 发布,本次更新内容如下: 支持查询列表并将结果转换成树结构。 有一张菜单表,具备父子关系 CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(64) NOT NULL COMMENT '菜单名称', `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父节点', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单表'; 插入数据: INSERT INTO `m...

0
4
发表了资讯
2022/06/08 09:40

fastmybatis 2.3.0 发布,mybatis 开发利器

fastmybatis 2.3.0 发布,本次更新内容如下: - listByCollection,listByArray,listByIds当value为空直接返回空结果 - 新增子条件查询 - 新增or条件查询 - mapper新增getMap方法,将查询结果转换成Map对象 - saveBatch批量插入返回主键值 or条件查询示例: // WHERE id = ? OR username = ? Query query = new Query() .eq("id", 6) .orEq("username", "jim"); 子条件查询示例: // WHERE (id = ? OR id b...

1
6
发表了资讯
2022/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
12
发表了资讯
2022/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
10
发表了资讯
2022/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
发表了资讯
2022/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
6
发表了资讯
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 评论
43 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部