OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法, 可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存 取对象的属性。这样可以更好的取得数据。
OGNL写法
------
普通的查询标签
<insert><delete><update><select>
String与基本类型 可以直接写成#{_parameter}
自定义类型Message 直接写#{属性名}
集合 数组array[索引](String[])
自定义数组[索引].属性名(Message[])
List list
list写法同上
Map _parameter
大小写敏感,不能写成大写的
foreach标签:
----------
<foreach collection="array" index="i" item="item" separator=",">
separator作用就是去除最后一个逗号
*集合都 可以用它来循环*
list和array中 i:下标(索引) item值 ----> 简单类型---------
map中 i: keyitem.属性名 --->对象.属性名---两种方式
特殊的操作符:
mod 取余 in 判断值是否在集合中,not in 与前面相反 返回true
if判断语句
------
<if test="command!=null&&! "".equals(command.trim())"> and command=?</if>
<resultMap> 为select查询结果转换为一个javaBean对象,属性对应查询结果集列名
顺序,循环,拼接
循环对应foreach标签
拼接对应if,choose标签
格式化输出标签,拼接后的内容不符合sql语法
where标签:
--------
<where>
<if test="条件不为空"/>
拼接语句
<where>
如果条件都不满足,不输出
如果多个条件都满足的话,将最前面的and 或者or 去除
set标签:
------
<set>代替update语句中set标签
用where标签用法一样,set标签可以去除多语句拼接的逗号
trim 功能比较多
----------
<trim> 用法和set where差不多
<trim prefix ="where" suffix="test" perfixOvrrides ="and/or" suffixOverrides="," >
中间写的的条件判断语句,如果满足的话,输出
prefix代表前缀加where,也可以加其它的
suffix代表后缀加test,同理
perfixOvrrides 代表多个and或者or时,去掉第一个
suffixOverrides代表多个逗号时,去掉最后一个
<trim>
sql标签
-----
可以定义也常量,要需要的位置进行引用
<sql id="columns">id,name,desc,date</sql>
可以在sql语句中使用include拼接
一对多,多对一标签collection,associaion
------------------------------
一对多关联
在主resultMap中加上一个<collection property="bean属性名" resultMap="子表namespace . resultMap的id"/>
多对一关联
<association proterty="bean属性名" resultMap="主表namespace . resultMap的id"/>
resultType的时候可以少写一个resultMap,相对比较方便
但是会带一个问题,
如果bean属性与表列名必须相同
使用resultMap就需要配置列名,属性名,表数值的类型,如varchar
还可以配置typeHandler,类型转换,date,boolean转0或者1
<choose>标签
----------
类似java中的if-elseif 或者swich case
<when test=""></when>
<when test=""></when>
<otherwise></otherwise>这个代表java中的else
</choose>
{} 和${} 使用区别
------------
-#{}会被mybatis解析成预编译的问号?反复执行预编译效果,只是参数不同,有性能上的优势,还可以防止sql注入
${}等同于java代码中变量拼字符串,两边没有加引号的话,是sql语法的
做排序时可以使用 order by ${sage}
一对多insert时,要取得插入表数据的id值,放入bean中
oseGeneratedKeys="true" keyProperty='id'parameterType="bean类名"
特殊的操作符:
-------
mod 取余
in 判断值是否在集合中,
not in 与前面相反 返回true
OGNL在Mybatis中的简单使用
最新推荐文章于 2024-07-27 23:46:21 发布