当前位置: 首页 > news >正文

湖州建设培训入口网站网站优化及推广

湖州建设培训入口网站,网站优化及推广,如何搭建游戏平台,asp网站一打开就是download目录 动态sql if where trim foreach choose、when、otherwise set bind sql MyBatis常用OGNL表达式 动态sql 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如…

目录

动态sql

if

where

trim

foreach

choose、when、otherwise

set

bind

sql

MyBatis常用OGNL表达式


动态sql

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。

使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。

如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach
  • bind
  • sql片段

if

<select id="getEmpByCondition" resultType="cn.tulingxueyuan.bean.Emp">select * from emp where <if test="empno!=null">empno > #{empno} and</if><if test="ename!=null">ename like #{ename} and</if><if test="sal!=null">sal > #{sal}</if>
</select>

where

where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

<select id="getEmpByCondition" resultType="cn.tulingxueyuan.bean.Emp">select * from emp<where><if test="empno!=null">empno > #{empno}</if><if test="ename!=null">and ename like #{ename}</if><if test="sal!=null">and sal > #{sal}</if></where></select>

现在看起来没有什么问题了,但是我们的条件添加到了拼接sql语句的前后,那么我们该如何处理呢?

trim

<!--trim截取字符串:prefix:前缀,为sql整体添加一个前缀prefixOverrides:去除整体字符串前面多余的字符suffixOverrides:去除后面多余的字符串--><select id="getEmpByCondition" resultType="cn.tulingxueyuan.bean.Emp">select * from emp<trim prefix="where" prefixOverrides="and" suffixOverrides="and"><if test="empno!=null">empno > #{empno} and</if><if test="ename!=null">ename like #{ename} and</if><if test="sal!=null">sal > #{sal} and</if></trim></select>

foreach

动态 SQL 的另一个常见使用场景是对集合进行遍历(尤其是在构建 IN 条件语句的时候)。

<!--foreach是对集合进行遍历collection="deptnos" 指定要遍历的集合close="" 表示以什么结束index="" 给定一个索引值item="" 遍历的每一个元素的值open="" 表示以什么开始separator="" 表示多个元素的分隔符--><select id="getEmpByDeptnos" resultType="Emp">select * from emp where deptno in<foreach collection="deptnos" close=")" index="idx" item="deptno" open="(" separator=",">#{deptno}</foreach></select>

choose、when、otherwise

有时候,我们不想使用所有的条件,而只是想从多个条件中选择一个使用。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。

<select id="getEmpByConditionChoose" resultType="cn.tulingxueyuan.bean.Emp">select * from emp<where><choose><when test="empno!=null">empno > #{empno}</when><when test="ename!=null">ename like #{ename}</when><when test="sal!=null">sal > #{sal}</when><otherwise>1=1</otherwise></choose></where></select>

set

用于动态更新语句的类似解决方案叫做 set。set 元素可以用于动态包含需要更新的列,忽略其它不更新的列。

<update id="updateEmpByEmpno">update emp<set><if test="empno!=null">empno=#{empno},</if><if test="ename!=null">ename = #{ename},</if><if test="sal!=null">sal = #{sal}</if></set><where>empno = #{empno}</where>
</update>

bind

bind 元素允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文。比如:

<select id="selectBlogsLike" resultType="Blog"><bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />SELECT * FROM BLOGWHERE title LIKE #{pattern}
</select>

sql

这个元素可以用来定义可重用的 SQL 代码片段,以便在其它语句中使用。 参数可以静态地(在加载的时候)确定下来,并且可以在不同的 include 元素中定义不同的参数值。比如:

<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>

这个 SQL 片段可以在其它语句中使用,例如:

<select id="selectUsers" resultType="map">select<include refid="userColumns"><property name="alias" value="t1"/></include>,<include refid="userColumns"><property name="alias" value="t2"/></include>from some_table t1cross join some_table t2
</select>

MyBatis常用OGNL表达式

e1 or e2
e1 and e2
e1 == e2,e1 eq e2
e1 != e2,e1 neq e2
e1 lt e2:小于 
e1 lte e2:小于等于,其他gt(大于),gte(大于等于)
e1 in e2
e1 not in e2
e1 + e2,e1 * e2,e1/e2,e1 - e2,e1%e2
!e,not e:非,求反
e.method(args)调用对象方法
e.property对象属性值
e1[ e2 ]按索引取值,List,数组和Map
@class@method(args)调用类的静态方法
@class@field调用类的静态字段值 
http://www.rdtb.cn/news/15853.html

相关文章:

  • 做个人网站需要多少钱百度网盘资源分享
  • 网站栅格化怎么做武汉seo网络优化公司
  • 电商企业有哪些广告优化
  • 不买服务器做网站最新国际军事动态
  • 在线购物网站建设东莞网络推广及优化
  • 加快网站速度南昌seo排名公司
  • 如何用dw做asp动态网站百度热搜榜排名今日头条
  • 做化工的网站优化网站价格
  • 现在的网站怎样做推广智能建站
  • a站为什么不火了今天刚刚发生的新闻最新新闻
  • 厦门做网站优化百度seo关键词优化排行
  • 长沙制作网页网站站长工具免费
  • 临沂河东区建设局网站厦门搜索引擎优化
  • 经典的jq查询网站网络营销可以做什么工作
  • 青岛建设银行股份有限公司网站首页杭州搜索引擎推广排名技术
  • 阿里云服务器 做网站免费seo关键词优化服务
  • html5 css3单页手机网站模板网络营销课程个人感悟
  • 咸宁网站建设解决方案推广普通话的意义
  • 珠海网站快速排名提升百度商家
  • CSS3网站建设自助建站系统哪个好用
  • 抖音直播开放平台seo在线培训
  • 郑州网站建设方案服务营业推广策划方案
  • 加盟的网站建设厦门seo服务
  • 做视频网站的公司有哪些百度账号注册中心
  • 打赏网站开发安徽seo
  • 网站建设技术服务清单网站推广策略
  • 论坛排名网站关键词如何优化上首页
  • redbubble网站开发东莞企业推广网站制作
  • wordpress的书成都黑帽seo
  • 深圳宝协建设公司seo搜索引擎优化求职简历