fastmybatis是一个mybatis开发框架,目的为简化mybatis的开发,让开发更高效。
零配置快速上手
无需编写xml文件即可完成CRUD操作
支持mysql,sqlserver,oracle,postgresql,sqlite
支持自定义sql,sql语句可以写在配置文件中,同样支持mybatis标签
支持与spring-boot集成
轻量级,无侵入性,可与传统mybatis用法共存
fastmybatis与MyBatis generator对比
新建一个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); }
/** * 根据对象查询,可以传主键值,也可以传整个对象 * * @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);
查询姓名为张三,并且年龄为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); // 该条件下总记录数
完整的测试用例,点击前往
fastmybatis fastmybatis 是一个 mybatis 开发框架,其宗旨为:简单、快速、有效。零配置快速上手,无需编写 xml 文件即可完成 CRUD 操作。同时支持 mysql、sqlserver、oracle、postgresql、sqlite。 支持自定义 SQL,对于基本的增删改查不需要写 SQL,对于其它特殊 SQL(如统计 SQL )可写在 xml 中,支持与 Spri
简介 fastmybatis是一个mybatis开发框架,其宗旨为:简单、快速、有效。 零配置快速上手 无需编写xml文件即可完成CRUD操作 支持mysql,sqlserver,oracle,postgresql,sqlite 支持自定义sql,sql语句可写在注解中或xml中 支持与spring-boot集成,依赖starter即可 轻量级,无侵入性,是官方mybatis的一种扩展 快速开始(
参考文档:fastmybatis: 一个mybatis开发框架,其宗旨为:简单、快速、有效 - Gitee.com 配置过程中遇到很多书写错误,但是最核心的一个问题是有个 MybatisAutoConfiguration类提前加载了mapper,导致多数据源DBMasterConfig和DbSecondConfig 配置加载mapper跳过了,(WARN 99535 --- [
1. 继承CrudMapper Mapper继承CrudMapper<Class, Long> 可以使用的方法都封装在CrudMapper,我们新加的表对应的mapper只需要集成改类, 至于一些特殊的方法, 可以不好实现,可以单独的在xml里面去实现、 可以推荐学习下mybatis Plus, 思想是接口集成IService,里面封装了常用的增删改查的方法, 非常的方便。 另外,可以自己自定义构
fastmybatis fastmybatis是一个mybatis开发框架,其宗旨为:简单、快速、有效。 零配置快速上手 无需编写xml文件即可完成CRUD操作 支持mysql、sqlserver、oracle、postgresql、sqlite 支持自定义sql,sql语句可写在注解中或xml中 支持与spring-boot集成,依赖starter即可 轻量级,无侵入性,是官方mybatis的一
fastmybatis支持原生的插件,将写好的插件配置到mybatis配置文件中即可 这里演示编写一个分表插件 假设有4张分表,user_log0~3,记录用户的日志情况 user_log0 user_log1 user_log2 user_log3 现在需要动态查询指定到某一张表 首先生成对应的实体类,指定一张表生成,不用全部生成 /** * 表名:user_logX * %index% 占位符
学习链接 https://www.jianshu.com/p/69aa4f435378
本文向大家介绍thinkPHP5.0框架开发规范简介,包括了thinkPHP5.0框架开发规范简介的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP5.0框架开发规范。分享给大家供大家参考,具体如下: 命名规范 ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 目录和文件 目录不强制规范,驼峰及小写+下划线模式均支持; 类库、函数文件统一以
简化Android的UI开发 原文链接 : android ui development made easy 作者 : Zaitsev Serge 译文出自 : 开发技术前线 www.devtf.cn 译者 : chaossss 校对者: ZhaoKaiQiang 状态 : 校对完成 如果你觉得这篇文章太长,而且还没有往下阅读的话,我可以给你简要的介绍文章要讲的内容:我使用纯 Java 通过数据绑
本文向大家介绍10个简化PHP开发的工具,包括了10个简化PHP开发的工具的使用技巧和注意事项,需要的朋友参考一下 本文介绍了可以帮助简化 PHP 开发的10个项目,包括框架,类库,工具,代码。 1.CakePHP Development Framework CakePHP 是一个 PHP 的快速开发框架。它提供了可扩展的架构,使用了常见的 MVC 和 ORM 模式。它遵循约定优于配置理念。 2.
本文向大家介绍Python的Flask开发框架简单上手笔记,包括了Python的Flask开发框架简单上手笔记的使用技巧和注意事项,需要的朋友参考一下 最简单的hello world 之后,访问http://localhost:5000 支持post/get提交 多个url指向 不管post/get使用统一的接收 处理json请求 request的header中 处理时: 获取post提交中的ch
"One does not live by bread alone,but by every word that comes from the mouth of God" --(MATTHEW4:4) python开发框架 不管是python,还是php,亦或别的做web项目的语言,乃至于做其它非web项目的开发,一般都要用到一个称之为什么什么框架的东西。 框架的基本概念 开发这对框架的认识,由于
「盘古开发框架」是一套轻量稳健的工业级前、中、后台三维多端行业数字化赋能开发框架。基于商业友好的 Apache-2.0 协议免费开源发布。我们希望不仅是开源的受益者也能成为开源贡献者,与开源社区一起共建共享开源生态。 生态子项目 盘古开发框架由「盘古服务开发框架」、「盘古中后台业务系统开发脚手架」、「盘古移动端多平台开发脚手架」三个子项目组成。可以单独拆箱使用,也可以打包整合。 盘古服务开发框架(
本文向大家介绍JavaScript的模块化开发框架Sea.js上手指南,包括了JavaScript的模块化开发框架Sea.js上手指南的使用技巧和注意事项,需要的朋友参考一下 Sea.js所有源码都存放在 GitHub 上:https://github.com/seajs/examples,目录结构为: 引入seajs主文件 seajs主入口文件(main) seajs依赖文件(index) 文件
We talked about how you could use the minified versions of your dependencies in development to make the rebundling go as fast as possible. Let us look at a small helper you can implement to make this