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

忻州市网站建设_网站建设公司_前端工程师_seo优化

做网站怎么防止被黑,ip地址进入网站怎么做的,公司网站开发建设,百度做网站怎么样【-1】README 1#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 【0】动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元…【-1】README 1本文全文总结于 http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 【0】动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元素就可以了。MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素。 ifchoose (when, otherwise)trim (where, set)foreach 【1】if1intro 动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分。比如:select idfindActiveBlogWithTitleLikeresultTypeBlogSELECT * FROM BLOG WHERE state ‘ACTIVE’ if testtitle ! nullAND title like #{title}/if /select 2如果想可选地通过“title”和“author”两个条件搜索该怎么办呢 首先改变语句的名称让它更具实际意义然后只要加入另一个条件即可。select idfindActiveBlogLikeresultTypeBlogSELECT * FROM BLOG WHERE state ‘ACTIVE’ if testtitle ! nullAND title like #{title}/ifif testauthor ! null and author.name ! nullAND author_name like #{author.name}/if /select 【2】choose、when、otherwise1intro 有些时候我们不想用到所有的条件语句而只想从中择其一二。针对这种情况MyBatis 提供了 choose 元素它有点像 Java 中的 switch 语句。 select idfindActiveBlogLikeresultTypeBlogSELECT * FROM BLOG WHERE state ‘ACTIVE’choosewhen testtitle ! nullAND title like #{title}/whenwhen testauthor ! null and author.name ! nullAND author_name like #{author.name}/whenotherwiseAND featured 1/otherwise/choose /select 【3】trimwhereset1 现在考虑回到“if”示例这次我们将“ACTIVE 1”也设置成动态的条件看看会发生什么。select idfindActiveBlogLikeresultTypeBlogSELECT * FROM BLOG WHERE if teststate ! nullstate #{state}/if if testtitle ! nullAND title like #{title}/ifif testauthor ! null and author.name ! nullAND author_name like #{author.name}/if /select 2problemsolutions2.1problem 如果这些条件没有一个能匹配上将会怎样最终这条 SQL 会变成这样SELECT * FROM BLOG WHERE 这会导致查询失败。如果仅仅第二个条件匹配又会怎样这条 SQL 最终会是这样: SELECT * FROM BLOG WHERE AND title like ‘someTitle’ 2.2solutionsMyBatis 有一个简单的处理select idfindActiveBlogLikeresultTypeBlogSELECT * FROM BLOG where if teststate ! nullstate #{state}/if if testtitle ! nullAND title like #{title}/ifif testauthor ! null and author.name ! nullAND author_name like #{author.name}/if/where /select 对以上代码的分析AnalysisA1where 元素知道只有在一个以上的if条件有值的情况下才去插入“WHERE”子句。而且若最后的内容是“AND”或“OR”开头的where 元素也知道如何将他们去除。 A2如果 where 元素没有按正常套路出牌我们还是可以通过自定义 trim 元素来定制我们想要的功能。比如和 where 元素等价的自定义 trim 元素为 trim prefixWHERE prefixOverridesAND |OR ... /trim A3prefixOverrides 属性会忽略通过管道分隔的文本序列注意此例中的空格也是必要的。它带来的结果就是所有在 prefixOverrides 属性中指定的内容将被移除并且插入 prefix 属性中指定的内容。 3类似的用于动态更新语句的解决方案叫做 set。set 元素可以被用于动态包含需要更新的列而舍去其他的。比如update idupdateAuthorIfNecessaryupdate Authorsetif testusername ! nullusername#{username},/ifif testpassword ! nullpassword#{password},/ifif testemail ! nullemail#{email},/ifif testbio ! nullbio#{bio}/if/setwhere id#{id} /update 对以上代码的分析Analysis 这里set 元素会动态前置 SET 关键字同时也会消除无关的逗号因为用了条件语句之后很可能就会在生成的赋值语句的后面留下这些逗号。4若你对等价的自定义 trim 元素的样子感兴趣那这就应该是它的真面目trim prefixSET suffixOverrides,... /trim Attention注意这里我们忽略的是后缀中的值而又一次附加了前缀中的值。【4】foreach1intro 动态 SQL 的另外一个常用的必要操作是需要对一个集合进行遍历通常是在构建 IN 条件语句的时候。比如select idselectPostIn resultTypedomain.blog.PostSELECT *FROM POST PWHERE ID inforeach itemitem indexindex collectionlistopen( separator, close)#{item}/foreach /select 对以上代码的分析Analysisforeach 元素的功能是非常强大的它允许你指定一个集合声明可以用在元素体内的集合项和索引变量。它也允许你指定开闭匹配的字符串以及在迭代中间放置分隔符。这个元素是很智能的因此它不会偶然地附加多余的分隔符。 Attention你可以将任何可迭代对象如列表、集合等和任何的字典或者数组对象传递给foreach作为集合参数。当使用可迭代对象或者数组时index是当前迭代的次数item的值是本次迭代获取的元素。当使用字典或者Map.Entry对象的集合时index是键item是值。 【5】bind 1intro bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。比如 select idselectBlogsLike resultTypeBlogbind namepattern value% _parameter.getTitle() % /SELECT * FROM BLOGWHERE title LIKE #{pattern} /select 【6】Multi-db vendor support 1intro 一个配置了“_databaseId”变量的 databaseIdProvider 对于动态代码来说是可用的这样就可以根据不同的数据库厂商构建特定的语句。比如下面的例子 insert idinsertselectKey keyPropertyid resultTypeint orderBEFOREif test_databaseId oracleselect seq_users.nextval from dual/ifif test_databaseId db2select nextval for seq_users from sysibm.sysdummy1/if/selectKeyinsert into users values (#{id}, #{name}) /insert 【7】动态 SQL 中可插拔的脚本语言 1intro MyBatis 从 3.2 开始支持可插拔的脚本语言因此你可以在插入一种语言的驱动language driver之后来写基于这种语言的动态 SQL 查询。 2可以通过实现下面接口的方式来插入一种语言 public interface LanguageDriver {ParameterHandler createParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql);SqlSource createSqlSource(Configuration configuration, XNode script, Class? parameterType);SqlSource createSqlSource(Configuration configuration, String script, Class? parameterType); } 3一旦有了自定义的语言驱动你就可以在 mybatis-config.xml 文件中将它设置为默认语言 typeAliasestypeAlias typeorg.sample.MyLanguageDriver aliasmyLanguage/ /typeAliases settingssetting namedefaultScriptingLanguage valuemyLanguage/ /settings 4除了设置默认语言你也可以针对特殊的语句指定特定语言这可以通过如下的 lang 属性来完成 select idselectBlog langmyLanguageSELECT * FROM BLOG /select 5或者在你正在使用的映射中加上注解 Lang 来完成 public interface Mapper {Lang(MyLanguageDriver.class)Select(SELECT * FROM BLOG)ListBlog selectBlog(); } AttentionA1可以将 Apache Velocity 作为动态语言来使用更多细节请参考 MyBatis-Velocity 项目。 A2你前面看到的所有 xml 标签都是默认 MyBatis 语言提供的它是由别名为 xml 语言驱动器 org.apache.ibatis.scripting.xmltags.XmlLanguageDriver 驱动的。
http://www.ihoyoo.com/news/6051.html

相关文章:

  • 郑州响应式建站南京网站制作建设
  • 如何登陆公司网站后台关于要求建设网站的请示
  • 济南网站建站技术支持 东莞网站建设洋酒回收
  • 培训网站欣赏性做网站
  • wordpress跨站脚本攻击漏洞太原seo管理
  • 企业网站推广属于付费河东手机站
  • 贵州企业网站百度快速排名优化服务
  • 设计做网站哪家公司好响应式WordPress企业主题
  • app制作网站制作完域名指向另一个网站
  • 解析网站接口怎么做哪个云服务器便宜又好
  • 广州网站建设天维国内免费ip地址
  • 3g免费网站怎么在文档中做网站一点就开
  • 长春城投建设投资有限公司网站做网站需要啥
  • 赣州网站建设资讯百度广告投放电话
  • 网站建设历程重庆网站seo按天计费
  • 綦江网站建设关于配色的网站
  • 涉县移动网站建设报价杭州平面设计公司排行
  • 做京东网站需要哪些手续费一般做网站带宽选择多大的
  • 制作个人业务网站设计家网站
  • 广东 品牌网站建设提升学历报考什么专业比较好
  • 秦皇岛网站排名公司信息网招聘
  • 上海市建设工程安全生产协会网站做影视网站引流
  • 做自己的网站服务器多少钱河北省住建厅电子证书查询
  • 小企业网站建设的大品牌国外旅游网站排名
  • 怎么向搜索引擎提交网站北京公司网站制作
  • 织梦网站首页目录在哪里微信分销网站建设
  • 摄影网站开发的背景怎样申请一个网站
  • 深圳市网站建设公司公司自己做网站推广
  • 中小型教育网站的开发与建设新农村网站建设
  • 如何与知名网站做友情链接网络服务者不履行法律