1 Star 0 Fork 134

马帅 / fastmybatis

forked from tanghc / fastmybatis 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

fastmybatis

fastmybatis是一个mybatis开发框架,其宗旨为:简单、快速、有效。

  • 零配置快速上手
  • 无需编写xml文件即可完成CRUD操作
  • 支持mysql、sqlserver、oracle、postgresql、sqlite
  • 支持自定义sql,sql语句可写在注解中或xml中
  • 支持与spring-boot集成,依赖starter即可
  • 轻量级,无侵入性,是官方mybatis的一种扩展

fastmybatis与MyBatis generator对比

  • 阿里代码规范检测结果:

阿里代码检测

  • sonar代码检测结果:

sonar代码检测

快速开始(springboot)

  • 新建一个springboot项目
  • pom.xml添加fastmybatis-spring-boot-starter
<dependency>
    <groupId>net.oschina.durcframework</groupId>
    <artifactId>fastmybatis-spring-boot-starter</artifactId>
    <version>最新版本(见changelog.md)</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
 */
T getById(I id);

/**
 * 根据条件查找单条记录
 * @param query 查询条件
 * @return 返回实体对象,没有返回null
 */
T getByQuery(@Param("query")Query query);

/**
 * 根据字段查询一条记录
 * @param column 数据库字段名
 * @param value 字段值
 * @return 返回实体对象,没有返回null
 */
T getByColumn(@Param("column")String column,@Param("value")Object value);

/**
 * 查询总记录数
 * 
 * @param query 查询条件
 * @return 返回总记录数
 */
long getCount(@Param("query")Query query);  

/**
 * 根据字段查询集合
 * @param column 数据库字段名
 * @param value 字段值
 * @return 返回实体对象集合,没有返回空集合
 */
List<T> listByColumn(@Param("column")String column,@Param("value")Object value);

/**
 * 条件查询
 * 
 * @param query 查询条件
 * @return 返回实体对象集合,没有返回空集合
 */
List<T> 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(T entity);

/**
 * 新增(忽略null数据)
 * @param entity
 * @return 受影响行数
 */
int saveIgnoreNull(T entity);

/**
 * 批量添加,只支持mysql,sqlserver2008及以上数据库.<br>
 * <strong>若要兼容其它版本数据库,请使用saveMulti()方法</strong>
 * @param entitys
 * @return
 */
int saveBatch(@Param("entitys")List<T> entitys);

/**
 * 批量保存,兼容更多的数据库版本.<br>
 * 此方式采用union all的方式批量insert,如果是mysql或sqlserver2008及以上推荐saveBatch()方法.
 * 
 * @param entitys
 * @return 受影响行数
 */
int saveMulti(@Param("entitys") List<T> entitys);

/**
 * 修改,修改所有字段
 * 
 * @param entity
 * @return 受影响行数
 */
int update(T entity);

/**
 * 根据主键更新不为null的字段
 * 
 * @param entity
 * @return 受影响行数
 */
int updateIgnoreNull(T 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(T entity);

/**
 * 根据id删除
 * 
 * @param id 主键id
 * @return 受影响行数
 */
int deleteById(I 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); // 该条件下总记录数

工程介绍

意见交流

Q群328419269

相关文档

MIT License Copyright (c) 2019 tanghc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个mybatis开发框架,其宗旨为:简单、快速、有效 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/mashuai720/fastmybatis.git
git@gitee.com:mashuai720/fastmybatis.git
mashuai720
fastmybatis
fastmybatis
master

搜索帮助