OGNL在Mybatis中的简单使用

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




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值