网站首页 > 技术文章 正文
MyBatis增强工具Extm
项目介绍
Extm 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用Extm针对单表操作将不再手写SQL,从而提高开发效率。
extm有别于传统的增强工具,如mybatis plus。extm为您提供类似linq的链式操作,让你体验函数式编程的极致乐趣。
extm去掉了繁杂的数据实体类,这可能会在可读性上有一定的损失,但是在另一方面为我们提供了更高效的开发效率。
extm目前支持mysql、oracle、sqlserver、sqlite、达梦(国产)等主流数据库,并且简化了where in的操作,后续我们将会提供更多的数据库支持。
安装教程
- [安装extm] 在Web项目的pop.xml添加extm引用 <dependency> <groupId>com.github.meryl</groupId> <artifactId>extm</artifactId> <version>1.0.2</version> </dependency>
- 修改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 单表操作
- 获取数据库表对象 Db.table("表名"); 注:下文的针对表的增删改查都基于此方法返回的对象
- 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();
- 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();
- Count语法(返回记录的条数)与Find语法一致
- 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等不支持自增主键的数据库】)
- 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);
- 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();
- Fields语法(指定要返回的字段)
- 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);
3.where in用法:List list = new ArrayList();list.add(1);Db.table("user").where("id in #{ids}",list);
猜你喜欢
- 2025-07-27 MyBatis批量插入的3种方案对比,速度差10倍!
- 2025-07-27 [JPA教程]02.认识JPA的注解.md(jpa的@query注解)
- 2025-07-27 MyBatis配置详解:从入门到精通(mybatis配置文件详解)
- 2025-07-27 Mybatis Plus框架学习指南-第三节内容
- 2025-07-27 什么是实时数据同步?纯干货解读!(什么是实时数据传输)
- 2025-07-27 Mybatis Plus框架学习指南-第八节内容(常用的注解)
- 2024-10-27 一文看懂mycat配置--数据库的读写分离、分表分库
- 2024-10-27 基于Percona XtraBackup 实现全备&增量备份与恢复
- 2024-10-27 Java EE核心框架实战:如何使用MyBatis实现CURD-2种数据库
- 2024-10-27 mysql如何进行累加计算 mysql 变量累加
你 发表评论:
欢迎- 633℃几个Oracle空值处理函数 oracle处理null值的函数
- 626℃Oracle分析函数之Lag和Lead()使用
- 614℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 608℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 606℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 599℃【数据统计分析】详解Oracle分组函数之CUBE
- 588℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 574℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- CVE-2025-30762|Oracle(java oracle)
- 低代码可能铲不掉“屎山”,但能让这个它更有「型」
- 科技大事件:新苹果手表可通过击掌或握手来传递信息
- 你的百万级上下文窗口大模型,可能并没有你想象中那么强
- DApp 开发中的安全测试(软件测试过程中安全测试的具体应用场景和测试思路)
- 盘点Java中最没用的知识⑧:这3个过时套路,你还在代码里硬撑?
- 机房硬件设备及Oracle数据库软件维护服务项目竞争性磋商公告
- 微软与甲骨文扩大合作关系,推出Oracle Database@Azure
- JPA实体类注解,看这篇就全会了(java实体类注解)
- Java反射机制最全详解(图文全面总结)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)