博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个mybatis开发框架,比JPA好用比MyBatis generator好用
阅读量:6965 次
发布时间:2019-06-27

本文共 3734 字,大约阅读时间需要 12 分钟。

hot3.png

fastmybatis

fastmybatis是一个mybatis开发框架,目的为简化mybatis的开发,让开发更高效。

  • 零配置快速上手
  • 无需编写xml文件即可完成CRUD操作
  • 支持mysql,sqlserver,oracle,postgresql,sqlite
  • 支持自定义sql,sql语句可以写在配置文件中,同样支持mybatis标签
  • 支持与spring-boot集成
  • 轻量级,无侵入性,可与传统mybatis用法共存

快速开始(springboot)

  • 新建一个springboot项目
  • pom.xml添加fastmybatis-spring-boot-starter
net.oschina.durcframework
fastmybatis-spring-boot-starter
1.0.2
  • 假设数据库有张t_user表,添加对应的实体类TUser.java和MapperTUserMapper.java
  • application.propertis中配置数据库连接
  • 编写测试用例
@AutowiredTUserMapper mapper;    // 根据主键查询@Testpublic 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
listByColumn(@Param("column")String column,@Param("value")Object value);/** * 条件查询 * * @param query 查询条件 * @return 返回实体对象集合,没有返回空集合 */List
list(@Param("query")Query query);/** * 查询指定字段结果 * @param columns 返回的字段 * @param query 查询条件 * @return 返回结果集 */List
> listMap(@Param("columns")List
columns, @Param("query")Query query);/** * 新增,新增所有字段 * * @param entity * @return 受影响行数 */int save(Entity entity);/** * 新增(忽略null数据) * @param entity * @return 受影响行数 */int saveIgnoreNull(Entity entity);/** * 批量添加,只支持mysql,sqlserver2008及以上数据库.
*
若要兼容其它版本数据库,请使用saveMulti()方法 * @param entitys * @return */int saveBatch(@Param("entitys")List
entitys);/** * 批量添加,兼容更多的数据库版本.
* 此方式采用union all的方式批量insert,如果是mysql或sqlserver2008及以上推荐saveBatch()方法. * @param entitys * @return */int saveMulti(@Param("entitys")List
entitys);/** * 修改,修改所有字段 * * @param entity * @return 受影响行数 */int update(Entity entity);/** * 根据主键更新不为null的字段 * * @param entity * @return 受影响行数 */int updateIgnoreNull(Entity entity);/** * 根据条件批量更新 * * @param entity 待更新的数据,可以是实体类,也可以是Map{@literal
} * @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
users = mapper.list(query);查询年龄为10,20,30的用户:Query query = new Query().in("age",Arrays.asList(10,20,30));List
users = mapper.list(query);查询注册日期大于2017-11-11的用户:Date regDate = ...Query query = new Query().gt("reg_date",regDate);List
users = mapper.list(query);查询性别为男的,年龄大于等于20岁的用户,按年龄降序:Query query = new Query().eq("gender",1).ge("age",20).orderby("age",Sort.DESC);List
users = mapper.list(query);分页查询:Query query = new Query().eq("age",10).page(1,10); // 第一页,每页10条数据List
users = mapper.list(query);查询总记录数:Query query = new Query().eq("age",10).page(1,10); // 第一页,每页10条数据long total = mapper.getCount(query); // 该条件下总记录数
  • 完整的测试用例,

工程介绍

  • :框架源代码
  • :对应demo
  • :代码生成工具,方便生成实体类和Mapper(可生成lombok风格实体类)
  • 和:springboot对应的的starter

实战项目

: 一个文档管理项目,采用markdown方式写作。

意见交流

Q群328419269

转载于:https://my.oschina.net/u/3658366/blog/1832855

你可能感兴趣的文章
Model to Text工具Acceleo使用教程(四)——模板语法
查看>>
[Angular Tutorial] 8 - Templating Links & Images
查看>>
4、Android-数据存储方案(SQLite数据库存储)
查看>>
html5存储
查看>>
在centOS7.2上编译gcc4.1.2
查看>>
.net core使用ViewComponent将页面图片转码成base64
查看>>
[Java web]Spring+Struts2+Hibernate整合过程
查看>>
在Linux安装MySQL
查看>>
java Long、Integer 、Double、Boolean类型 不能直接比较
查看>>
POJ 2251-Dungeon Master (三维空间求最短路径)
查看>>
[转载] 七龙珠第一部——第102话 克林之死
查看>>
象棋——第17届五羊杯象棋冠军赛(胡荣华VS许银川)
查看>>
【javascript进阶】异常
查看>>
PBRT笔记(14)——光线传播2:体积渲染
查看>>
Git使用教程
查看>>
import caffe时出错:can not find module skimage.io
查看>>
css 选择器基础
查看>>
字符串的格式化
查看>>
游戏蛮牛Unity 用户文档
查看>>
UIView.clipsToBounds 让子 View 只显示落在父 View 的 Frame 部分
查看>>