博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5、jeecg 笔记之 minidao 条件判断
阅读量:7070 次
发布时间:2019-06-28

本文共 1858 字,大约阅读时间需要 6 分钟。

 1、前言

 我们知道 mybatis 中的动态sql语句是基于 OGNL 表达式的。
 额外补充一点:mybatis 中的 #{} 和 ${} ,可直接跳过。
 
#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。如果接收简单类型,#{}中可以写成value或其它名称。#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。 ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。${}接收输入参数,类型可以是简单类型,pojo、hashmap。如果接收简单类型,${}中只能写成value。${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

 来看看今天的重点对象,minidao,那么它里边的语法又是什么呢?

 

2、怎么写

  怎么写之前先来看一下官方的描述:
 
Jeecg针对springjdbc+freemarker做了封装,出了这么一个轻量级持久层,可以让Hiberate拥有mybatis一样SQL灵活能力,同时支持事务统一、SQL标签能力。
 
  这样是不是已经很明确了呢,freemarker 语法,那么 freemaker 是什么呢?
  freemaker 是前端引擎,只负责展示,没有复杂逻辑,而它的语法是 FTL 指令,类似于 HTML 标签。
  来看看 minidao 中怎么用吧。
 

2.1 if 判断

<#if status?exists && status?length gt 0>  and   t.status= :status

 

2.2 if elese 

<#if status?exists && status?length gt 0>      and   t.status= :status<#else>      and 1=1
 

2.3 list 进行遍历

<#list items as item>    ${item.userName}
更加详细的参考:  
 

3、需要注意

 既然我们知道了, minidao 中,封装了 freemaker 便签,那么同样我们也知道,在 freemaker ftl中,参数是通过 ${},而我们在系统发现,很多都是这样用的 :参数,那么这又是怎么一回事?
 

4、sql 参数使用方式

 

 4.1 占位符方式-【:字段名】

 这种方式是我们在系统中最常见的了,来看看他的与缺点。

 优点: 防止sql注入;sql执行计划只解析一次;字段值根据类型自动转换,不需要手工处理

 缺点: 只能传参数原生态值;参数为List情况循环体不适用

 官方示例:

SELECT * FROM employee where 1=1 <#if employee.age ?exists>and age = :employee.age
<#if employee.name ?exists>and name = :employee.name
<#if employee.empno ?exists>and empno = :employee.empno

 

4.2 模版语言方式 -【${字段名}】

你要的 ftl 方式的来了。

缺点: Sql直接拼装,有SQL注入风险;参数值需根据类型手工转换;

优点: 可以对参数值进行脚本处理;参数为List对象,循环体对象必须用该方式;(用户体验没有变化,直接将${}改为: 即可

特点: 持多参数,支持参数多层,参数为list必须采用模板语言方式

官方示例:

SELECT * FROM employee where 1=1 <#if employee.age ?exists>   and age = '${employee.age}'
<#if employee.name ?exists> and name = '${employee.name}'
<#if employee.empno ?exists> and empno = '${employee.empno}'

 

上边之所以提到 mybatis  #{} 和 ${} ,其实为了体现 :字段名 和  ${}

总之,推荐使用占位符的形式。

 

 

转载于:https://www.cnblogs.com/niceyoo/p/9966303.html

你可能感兴趣的文章
python集合
查看>>
android 获取sim卡运营商信息(转)
查看>>
关于EditText的输入动态监听
查看>>
Maven pom.xml配置详解 (二)
查看>>
Maven(十)利用 Nexus 来构建企业级 Maven 仓库
查看>>
2.3. 对服务器安全的威胁
查看>>
半小时了解正则表达式
查看>>
Java借助CountDownLatch完成异步回调
查看>>
redis学习笔记之安装
查看>>
Cisco设备Show Interface命令详解
查看>>
shell脚本:批量添加用户,并设置随机字符为密码
查看>>
ClassPath 解惑,到底什么是Classpath?
查看>>
spark 是什么(一)
查看>>
C#设置文件权限
查看>>
哪些数据科学技能是雇主所需要的
查看>>
mailx邮件客户端发送邮件
查看>>
做为程序员应该要拥有属于自己的独立博客
查看>>
facl 文件系统访问列表 (笔记)
查看>>
GIT使用技巧总结
查看>>
Symantec Backup Exec 2014 备份Exchange 2013之五备份DAG
查看>>