Extm MyBatis增强工具

Stella981
• 阅读 493

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

    Extm比当下流行的Mybatis Plus使用更加方便快捷。在使用Extm时,你将不再创建实例类,避免了书写数据实例类的烦恼。

安装教程

  1. [安装extm] 在Web项目的pop.xml添加extm引用

     <dependency>
         <groupId>com.github.meryl</groupId>
         <artifactId>extm</artifactId>
         <version>1.0.0</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. Find语法(返回一条数据)

    1. 返回第一条:

       Db.table("user").find();
      
    2. 指定返回字段:

       Db.table("user").fields("id","name","password").find();
      
    3. 指定查询条件:

       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语法(插入数据)

    1. 返回执行成功的记录条数:

       Map map = new HashMap(); 
       map.put("name","meryl");
       map.put("password","1");
       Integer successCount= db("user").insert(map);
      
    2. 返回当前插入的数据的键值

      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语法(更新数据)

    1. 更新全表

       Map map = new HashMap();
       map.put("name","meryl");
       map.put("password","1");
       Boolean isSuccess = Db.table("user").update(map);
      
    2. 更新指定的记录

       Map map = new HashMap();
       map.put("name","meryl");
       map.put("password","1");
       Boolean isSuccess = Db.table("user").where("id=1").update(map);
      
  7. Delete语法(删除数据)

    1. 删除全表

       Boolean isSuccess = Db.table("user").delete();
      
    2. 删除指定的记录

       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);
    

详细文档见:https://www.jianshu.com/p/ec2c2b9c0413

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Nano vs Emacs vs Vim 让你了解他们的不同
Nano(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Flinks.jianshu.com%2Fgo%3Fto%3Dhttp%253A%252F%252Fnanoeditor.org)vsEmacs(https://www.oschina.net/action/GoToLin
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这