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

西安建设科技专修学院官方网站微信小程序怎么做店铺

西安建设科技专修学院官方网站,微信小程序怎么做店铺,重庆做网站多少钱,dede网站错位动态 SQL 动态 SQL 是 MyBatis 的强大特性之一。动态 SQL 可以根据运行时提供的条件,包括 参数值、逻辑判断、循环 等,动态生成SQL语句的各个部分的具体内容。 对动态SQL的学习主要是学习几个重要的标签,下面我们详细介绍: 1、…

动态 SQL

动态 SQL 是 MyBatis 的强大特性之一。动态 SQL 可以根据运行时提供的条件,包括 参数值逻辑判断循环 等,动态生成SQL语句的各个部分的具体内容。

对动态SQL的学习主要是学习几个重要的标签,下面我们详细介绍:

1、<if> 标签

<if> 标签的作用是根据条件判断是否生成相应的 SQL 片段或语句。

例:根据可选参数插入用户信息

    <insert id="insert2" useGeneratedKeys="true" keyColumn="id" keyProperty="id">insert into userinfo(username, password<if test="photo != null">,photo</if>) values (#{username},#{password}<if test="photo != null">,#{photo}</if>)</insert>

: test 中的 字段名,是传入对象中的 属性,不是数据库字段。

在这里插入图片描述

2、<trim> 标签

虽然上面的 <if> 标签可以实现一些动态 SQL,但是如果所有的参数都是可选参数的情况下,只使用 <if> 标签就可能会出错。例如:

    <insert id="insert2" useGeneratedKeys="true" keyColumn="id" keyProperty="id">insert into userinfo(<if test="username != null">username</if><if test="password != null">,password</if>) values (<if test="username != null">#{username}</if><if test="password != null">,#{password}</if>)</insert>

上述这种情况下,如果只传入 username 参数,那么最终拼接的 SQL 语句为:insert into userinfo(,password)……显然,这是一个错误的 SQL 语句。

此时我们可以使用 <trim> 标签结合 <if> 标签,解决上述问题:

trim 标签中的重要属性:

  • prefix:表示整个语句块,以prefix的值作为前缀。
  • suffix:表示整个语句块,以suffix的值作为后缀。
  • prefixOverrides:表示整个语句块要去除掉的前缀。
  • suffixOverrides:表示整个语句块要去除掉的后缀。

使用 <trim> 标签解决上述问题:

    <insert id="insert2" useGeneratedKeys="true" keyColumn="id" keyProperty="id">insert into userinfo<trim prefix="(" suffix=")" prefixOverrides=","><if test="username != null">username</if><if test="password != null">,password</if></trim>values<trim prefix="(" suffix=")" prefixOverrides=","><if test="username != null">#{username}</if><if test="password != null">,#{password}</if></trim></insert>

3、<where> 标签

  1. <where> 标签内部的条件会根据实际情况自动生成 where 子句。
  2. <where>标签会自动去除最前面的“and”和“or”关键字。
  3. 根据以上特性,<where>标签也可以使用 <trim prefix=“where” prefixOverrides=“and”> 或 <trim prefix=“where” prefixOverrides=“or”>替换。

例:根据可选参数查询用户信息

    <select id="getUserInfoByWhere" resultType="com.example.demo.model.UserInfo">select * from userinfo<where><if test="id > 0">id=#{id}</if><if test="photo != null">and photo=#{photo}</if></where></select>


4、<set> 标签

  1. <set> 标签内部的条件会根据实际情况自动生成 set 子句。
  2. <set>标签会自动去除最后面的,
  3. 根据以上特性,<set> 标签也可以使⽤ <trim prefix=“set” suffixOverrides=“,”> 替换

例:设置可选参数更新用户信息

    <update id="updateBySet">update userinfo<set>password=#{password},<if test="username != null">username=#{username},</if><if test="photo != null">photo=#{photo}</if></set>where id=#{id}</update>

5、<foreach> 标签

<foreach> 标签用于在 SQL 语句中循环遍历集合或数组,并将其元素应用到 SQL 的特定部分。

下面是 <foreach> 标签中的重要属性:

  • collection:绑定方法参数中的集合,如 List,Set,Map或数组对象.
  • item:遍历时的每⼀个对象.
  • open:语句块开头的字符串.
  • close:语句块结束的字符串.
  • separator:每次遍历之间间隔的字符串.

例如根据用户 id 批量删除用户信息:

接口:

int deleteByIds(List<Integer> ids);

xml 实现:

    <delete id="deleteByIds">delete from userinfowhere id in<foreach collection="ids" open="(" close=")" item="id" separator=",">#{id}</foreach></delete>

http://www.dtcms.com/wzjs/122070.html

相关文章:

  • 建设网站查证书市场营销培训
  • 做外贸网哪些网站免费大数据营销经典案例
  • 机关 网站 建设方案小程序开发平台有哪些
  • 珠海网站建设网络有限公司军事新闻最新24小时
  • html图标代码大全合肥网站推广优化公司
  • 怎么做飞机票的图片网站品牌广告
  • dede旅游网站源码徐州seo公司
  • 沈阳模板 网站建设2023年新闻热点事件
  • 日本做a图片视频在线观看网站网络服务商
  • 做国际贸易的有哪有个网站pc端百度
  • 网站建设毕业设计提问百度搜索引擎广告位的投放
  • 湛江企业自助建站系统线上推广怎么做
  • 怎么做网站栏目业务推广网站
  • 网站明链怎么做成都关键词排名推广
  • 最先进的深圳网站建设优化大师免费下载安装
  • 有哪些做问卷调查挣钱的网站营销推广方案
  • 做一家网站需要多少钱推广普通话宣传语100字
  • 苏州网站关键字优化嘉定区整站seo十大排名
  • 怎么做一个网站的步骤赛事资讯赛马资料
  • 电商网站流程网站制作建设
  • wordpress建站系统快速排名优化怎么样
  • 手机网站小程序广州优化防控措施
  • 在哪个网站找学做包子最近重大新闻头条
  • 做网站推广费用广州网站优化
  • 曲靖网站建设dodocoseo相关ppt
  • 如何将自己做的网站上传网络软文怎么写
  • 个人做网站能赚到钱吗佛山关键词排名效果
  • 广州做网站哪家公司最好百度seo如何优化关键词
  • 网站开发前景与趋势如何12月30日疫情最新消息
  • 网站简介如何做的有创意广州网站推广排名