您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

Mybatis增强工具extm

时间:2021-03-30 14:23:35  来源:  作者:
Mybatis增强工具extm

 

项目介绍

Extm 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用Extm针对单表操作将不再手写SQL,从而提高开发效率。

安装教程

  1. [安装extm] 在Web项目的pop.xml添加extm引用 <dependency> <groupId>com.github.meryl</groupId> <artifactId>extm</artifactId> <version>1.0.2</version> </dependency>
  2. 修改SpringMVC项目配置文件<bean id="sqlSessionFactory" class="com.extm.SqlSessionFactoryBeanEx"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis.cfg.xml"/> <property name="mApperLocations" value="classpath*:com/*/*/sql/*.xml"/> </bean> 将 sqlSessionFactory的class修改为:“com.extm.SqlSessionFactoryBeanEx”

使用说明

extm 单表操作

  1. 获取数据库表对象 Db.table("表名"); 注:下文的针对表的增删改查都基于此方法返回的对象
  2. Select语法(返回列表)1.查询全表: Db.table("user").select(); 2.指定返回字段: Db.table("user").fields("id","name","password").select(); 3.Where条件: (1) 不带参数的where条件: List data = Db.table("user").fields("id","name","password").where("id=1 AND name='meryl'").select(); (2) 带参数的where条件: 方式一、 Map map = new HashMap(); map.put("id","1"); map.put("name","meryl"); List data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",map).select(); 方式二、 List data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",1,"meryl").select(); (3) where in : 方式一、 Map map = new HashMap(); map.put("id",new ArrayList(){{add(1);add(2);}}); map.put("name","meryl"); List data = Db.table("user").fields("id","name","password").where("id in #{id} And name=#{name}",map).select(); 方式二、 List data = Db.table("user").fields("id","name","password").where("id in #{id} And name=#{name}",new ArrayList(){{add(1);add(2);}},"meryl").select();
  3. Find语法(返回一条数据)返回第一条: Db.table("user").find(); 指定返回字段: Db.table("user").fields("id","name","password").find(); 指定查询条件: 3.1 用过参数限定(find参数与以下3.2 where参数一致): Map data = Db.table("user").fields("id","name","password").find("id=1 AND name='meryl'"); 3.2 Where条件: (1) 不带参数的where条件: Map data = Db.table("user").fields("id","name","password").where("id=1 AND name='meryl'").find(); (2) 带参数的where条件: 方式一、Map map = new HashMap(); map.put("id","1"); map.put("name","meryl"); Map data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",map).find(); 方式二、Map data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",1,"meryl").find();
  4. Count语法(返回记录的条数)与Find语法一致
  5. Insert语法(插入数据)返回执行成功的记录条数: Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Integer successCount= db("user").insert(map); 返回当前插入的数据的键值2.1 针对支持自增长的数据库(MySQL,SqlServer,Sqlite): Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Long id= db("user").insert(map,"id"); //第二个参数为主键名称,如果返回插入的主键值,这里必传 2.2 针对不支持自增长的数据库(Oracle): Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Long id= db("user").insert(map,"id","seq_id"); //第二个参数为主键名称,第三参数为序列名称,如果返回插入的主键值,这里必传 注:insert 第一个参数为:要插入的数据,类型可以为自定义实体类型或Map;第二个参数为:主键名称;第三个参数为:序列名称【针对Oracle等不支持自增主键的数据库】)
  6. Update语法(更新数据)更新全表 Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Boolean isSuccess = Db.table("user").update(map); 更新指定的记录 Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Boolean isSuccess = Db.table("user").where("id=1").update(map);
  7. Delete语法(删除数据)删除全表 Boolean isSuccess = Db.table("user").delete(); 删除指定的记录 2.1 用过参数限定(delete参数与以下2.2 where参数一致): Boolean isSuccess = Db.table("user").delete("id=1 AND name='meryl'"); 2.2 Where条件: (1) 不带参数的where条件: Boolean isSuccess = Db.table("user").where("id=1").delete(); (2) 带参数的where条件: 方式一、 Map map = new HashMap(); map.put("id","1"); Boolean isSuccess = Db.table("user").where("id=#{id} And name=#{name}",map).delete(); 方式二、 Boolean isSuccess = Db.table("user").where("id=#{id} And name=#{name}",1,"meryl").delete();
  8. Fields语法(指定要返回的字段)
  9. Where语法(指定查询条件)

1. 不带参数的where: Db.table("user").where("id=1");或Db.table("user").where("id=#{id}",1); 2. 带参数的where Map map = new HashMap(); map.put("id","1"); Db.table("user").where("id=#{id}",map);



Tags:Mybatis   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本篇文章主要介绍了使用MyBatis框架完成数据库的增、删、改、查操作。准备工作运行schema.sql和data.sql脚本文件中的 SQL 语句创建t_user表并添加部分测试数据。schema.sql...【详细内容】
2022-07-15  Tags: Mybatis  点击:(0)  评论:(0)  加入收藏
简介MetaObject 是 MyBatis 中的反射工具类,用于获取和设置对象的属性值。示例List<Order> orders = new ArrayList<>(2);orders.add(new Order("1", "001", "美的电压力锅")...【详细内容】
2022-07-06  Tags: Mybatis  点击:(18)  评论:(0)  加入收藏
简介SqlRunner,一个非常实用的、用于操作数据库的工具类。该类对JDBC进行了很好的封装,结合SQL工具类,能够很方便地通过Java代码执行SQL语句并检索SQL执行结果。SqlRunner提供...【详细内容】
2022-07-05  Tags: Mybatis  点击:(19)  评论:(0)  加入收藏
1. If 语句需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名字来查询<!--需求1:根据作者名字和博客名字来查询博客!如果作者名...【详细内容】
2022-06-30  Tags: Mybatis  点击:(25)  评论:(0)  加入收藏
在进行持久层数据维护(新增或修改)的时候,我们通常需要记录一些非业务字段,比如:create_time、update_time、update_by、create_by等用来维护数据记录的创建时间、修改时间、修改...【详细内容】
2022-06-20  Tags: Mybatis  点击:(23)  评论:(0)  加入收藏
Mybatis 是 Java 中一个非常好用的数据库框架,这儿记录一下在使用过程中遇到的坑。官方中文文档地址:http://www.mybatis.org/mybatis-3/zh/getting-started.html1、在Mybatis...【详细内容】
2022-06-20  Tags: Mybatis  点击:(34)  评论:(0)  加入收藏
今天介绍一个 MyBatis - Plus 官方发布的神器:mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计、数据敏感词过滤(AC算法),字段加密,字典回写(数据绑定),数据权限,表结构自动生成...【详细内容】
2022-06-17  Tags: Mybatis  点击:(43)  评论:(0)  加入收藏
1. Mybatis 存在的痛点我们知道 MyBatis 是一个基于 java 的持久层框架,它内部封装了 jdbc,极大提高了我们的开发效率。但是使用 Mybatis 开发也有很多痛点: 每个 Dao 接口都需...【详细内容】
2022-06-14  Tags: Mybatis  点击:(37)  评论:(0)  加入收藏
MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法。2|0引入依赖在项目中pom文件引入m...【详细内容】
2022-05-05  Tags: Mybatis  点击:(52)  评论:(0)  加入收藏
一、前言我们在日常开发中经常使用ORM框架,比如Mybatis、tk.Mybatis、Mybatis-Plus。不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建时间、更新时间、创建人、更新人。...【详细内容】
2022-04-24  Tags: Mybatis  点击:(172)  评论:(0)  加入收藏
▌简易百科推荐
微服务,顾名思义,就是将我们程序拆分为最小化单元来提供服务。在一体化系统中,各个微服务也是不可能独立存在的,那么微服务之间涉及到的数据依赖问题,应该怎么处理呢?我们从场景入...【详细内容】
2022-07-06  老周聊架构谈人生    Tags:微服务   点击:(17)  评论:(0)  加入收藏
本文笔者来为大家介绍下Netty的核心引擎Reactor的运转架构,希望通过本文的介绍能够让大家对Reactor是如何驱动着整个Netty框架的运转有一个全面的认识。也为我们后续进一步...【详细内容】
2022-07-05  Java码农之路    Tags: Reactor   点击:(17)  评论:(0)  加入收藏
简介SqlRunner,一个非常实用的、用于操作数据库的工具类。该类对JDBC进行了很好的封装,结合SQL工具类,能够很方便地通过Java代码执行SQL语句并检索SQL执行结果。SqlRunner提供...【详细内容】
2022-07-05  嗨皮汪小成    Tags:SqlRunner   点击:(19)  评论:(0)  加入收藏
以下文章来源于信息化与数字化 ,作者沈旸 来源:信息化与数字化导读:熟悉SAP ERP的同学可以从后往前看,有精彩的历史故事。 “开源”对企业应用和生态有什么样的影响? 在Github上...【详细内容】
2022-07-05  数字化企业    Tags:架构   点击:(16)  评论:(0)  加入收藏
自从去年 10 月份搜狗正式被腾讯合并以后,我一直想给大家讲讲腾讯内部目前开发在用的一些技术栈,我想这对同学们有很高的学习价值。但苦于公司内部有明确的规定,不允许私自对外...【详细内容】
2022-06-30  Java高级互联小课堂    Tags:微服务架构   点击:(21)  评论:(0)  加入收藏
2022-06-22  老傅解码  今日头条  Tags:混合云   点击:(24)  评论:(0)  加入收藏
采访嘉宾 | 蔡超、成国柱、谭待编辑|marsxxl在 InfoQ 成立 15 周年之际,InfoQ 编辑部发起了“2007-2022:云、运维、架构、前端的 15 年演进史”特别策划,将和业内专家共同盘点云...【详细内容】
2022-06-21  InfoQ    Tags:软件架构   点击:(32)  评论:(0)  加入收藏
2022-06-20  开猿节流    Tags:架构   点击:(28)  评论:(0)  加入收藏
微服务架构的数据一致性微服务架构下,最好的分布式数据一致性解决方案就是尽量避免分布式事务,然而,在很多场景下,分布式事务是难以避免的。在金融、电信领域中,很多业务场景要求...【详细内容】
2022-06-16  程序员高级码农II    Tags:微服务架构   点击:(33)  评论:(0)  加入收藏
想知道如何设计大型企业级的系统吗?在开始主要的代码开发之前,我们必须选择一种合适的体系架构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,应该先...【详细内容】
2022-06-16  老傅解码    Tags:架构模式   点击:(33)  评论:(0)  加入收藏
站内最新
站内热门
站内头条