美文网首页程序员Weed3 ORM框架专题
weed3-3.2.Xml sql的指令和语法

weed3-3.2.Xml sql的指令和语法

作者: 草编椅 | 来源:发表于2019-10-15 23:31 被阅读0次

Weed3 一个微型ORM框架(只有0.1Mb哦)

源码:https://github.com/noear/weed3
源码:https://gitee.com/noear/weed3

五个指令 + 三种变量形式。先来段xml

这个示例里把各种情况应该呈现出来了

<?xml version="1.0" encoding="utf-8" ?>
<mapper namespace="weed3demo.xmlsql2" :db="testdb">
    <sql id="user_add1" :return="long"
         :param="m:weed3demo.mapper.UserModel,sex:int"
         :note="添加用户">
        INSERT user(user_id,mobile,sex) VALUES(@{m.user_id},@{m.mobile},@{sex})
    </sql>

    <sql id="user_add2" :return="long" :note="添加用户">
        INSERT user(user_id) VALUES(@{user_id:int})
    </sql>

    <sql id="user_add_for" :return="long" :note="批量添加用户3">
        INSERT user(id,mobile,sex) VALUES
        <for var="m:weed3demo.mapper.UserModel" items="list">
            (@{m.user_id},@{m.mobile},@{m.sex})
        </for>
    </sql>

    <sql id="user_del" :note="删除一个用户">
        DELETE FROM user WHERE id=@{m.user_id:long}
        <if test="sex > 0">
            AND sex=@{sex:int}
        </if>
    </sql>

    <sql id="user_set"
         :note="更新一个用户,并清理相关相存"
         :caching="localCache"
         :cacheClear="user_${user_id},user_1">
        UPDATE user SET mobile=@{mobile:String},sex=@{sex:int}
        <if test="icon != null">
            icon=@{icon:String}
        </if>
    </sql>

    <sql id="user_get_list"
         :note="获取一批符合条件的用户"
         :declare="foList:int,user_id:long"
         :return="List[weed3demo.mapper.UserModel]"
         :caching="localCache"
         :cacheTag="user_${user_id},user_1">
        SELECT id,${cols:String} FROM user
        <trim prefix="WHERE" trimStart="AND ">
            <if test="mobile?!">
                AND mobile LIKE '${mobile:String}%'
            </if>
            <if test="foList == 0">
                AND type='article'
            </if>
            <if test="foList == 1">
                AND type='post'
            </if>
        </trim>
    </sql>

    <sql id="user_cols1">name,title,style,label</sql>
    <sql id="user_cols2">name,title</sql>

    <sql id="user_get_list2"
         :note="获取一批符合条件的用户"
         :declare="foList:int,user_id:long"
         :return="List[weed3demo.mapper.UserModel]"
         :caching="localCache"
         :cacheTag="user_${user_id},user_1">
        SELECT id,
        <if test="foList == 0">
            <ref sql="user_cols1"/>
        </if>
        <if test="foList == 1">
            <ref sql="user_cols2"/>
        </if>
        FROM user WHERE sex>1 AND mobile LIKE '@{mobile:String}%'

    </sql>
</mapper>
四个指令说明
sql 代码块定义指令
  :require(属性:导入包或类)
  :param?(属性:外部输入变量申明;默认会自动生成::新增***)
  :declare(属性:内部变量类型预申明)
  :return(属性:返回类型)

  :db (属性:数据库上下文name)
  :note(属性:描述、说明、注解)

  :caching(属性:缓存服务name) //是对 ICacheController 接口的映射
  :cacheClear?(属性:清除缓存)
  :cacheTag?(属性:缓存标签,支持在入参或结果里取值替换)
  :usingCache?(属性:缓存时间,int)

if 判断控制指令(没有else)
  test (属性:判断检测代码)
     //xml避免语法增强:
     //lt(<) lte(<=) gt(>) gte(>=) and(&&) or(||)
        //例:m.sex gt 12 :: m.sex >=12
     //简化语法增强:
     //??(非null,var!=null) ?!(非空字符串,StringUtils.isEmpty(var)==false)
        //例:m.icon??  ::m.icon!=null
        //例:m.icon?!  ::StringUtils.isEmpty(m.icon)==false

for 循环控制指令 (通过 ${var}_index 可获得序号,例:m_index::新增***)
  var (属性:循环变量申明)
  items (属性:集合变量名称)
  sep? (属性:分隔符::新增***)

trim 修剪指令
  trimStart(属性:开始位去除)
  trimEnd(属性:结尾位去除)
  prefix(属性:添加前缀)
  suffix(属性:添加后缀)

ref 引用代码块指令
  sql (属性:代码块id)
三种变量形式
name:type    = 变量申明(仅用于var ,或:declare)
@{name:type} = 变量注入(仅用于代码块)
${name:type} = 变量替换(用于代码块,或:cacheTag,或:cacheClear)
关于返回值的几种形式说明
//多行,列表(用[]替代<>)
:return="List[weed3demo.mapper.UserModel]" //将返回 List<UserModel>
:return="List[String]" //将返回 List<String> (Date,Long,...大写开头的单值类型)
:return="MapList" //将返回 List<Map<String,Object>>
:return="DataList" //将返回 DataList

//一行
:return="weed3demo.mapper.UserModel" //将返回 UserModel
:return="Map" //将返回 Map<String,Object>
:return="DataItem" //将返回 DataItem

//单值
:return="String" //将返回 String (或别的任何单职类型)
下一篇:4.1.开始注解sql的使用

相关文章

  • weed3-3.2.Xml sql的指令和语法

    Weed3 一个微型ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/wee...

  • 二、SQL笔记--MySQL基本操作

    一、SQL语法规则 SQL语法规则:SQL是一种结构化编程语言 基础SQL指令通常是以行为单位 SQL指令需要语句...

  • 基本语句

    1、连接认证基本语法 2、退出 建议方式:使用sql提供的指令 3、创建数据库 基本语法:create datab...

  • SQL DML 和 DDL 查询和更新指令构成了 SQL 的 DML 部分: SQL 的数据定义语言 (DDL) ...

  • 数据库学习线路图

    SQL 语法教程 SQL 教程SQL 简介SQL 语法SQL Select选择SQL SELECT DISTINC...

  • SQL 语法大全

    SQL 语法大全 标签(空格分隔): SQL DB2 SQL语法大全 SQL SELECT SQL SELECT ...

  • MySQL深度知识七  函数 (摘自sql官方文档)

    SQL 拥有很多可用于计数和计算的内建函数。函数的语法内建 SQL 函数的语法是:SELECT function(...

  • SPARK 2.0 语句增强

    建立新的语法解析(SPARK-12362)满足所有的 SQL 语法,这样即合并 Hive 和标准 SQL 的语句解...

  • 十五、SQL Alias(别名)

    通过使用 SQL,可以为列名称和表名称指定别名(Alias)。 SQL Alias 表的 SQL Alias 语法...

  • sql语句执行顺序

    Oracle sql语句执行顺序 sql语法的分析是从右到左一、sql语句的执行步骤:1)语法分析,分析语句的语法...

网友评论

    本文标题:weed3-3.2.Xml sql的指令和语法

    本文链接:https://www.haomeiwen.com/subject/qiwemctx.html