精华内容
下载资源
问答
  • 都有哪些动态sql?简述一下动态sql的执行原理? 1.动态SQL的概念 ​ 动态sql是指在进行sql操作的时候,传入的参数对象或者参数值,根据匹配的条件,有可能需要动态的去判断是否为空,循环,拼接等情况; 2.动态Sql的...

    1.Mybatis动态sql是做什么的?都有哪些动态sql?简述一下动态sql的执行原理?

    1.动态SQL的概念

    ​ 动态sql是指在进行sql操作的时候,传入的参数对象或者参数值,根据匹配的条件,有可能需要动态的去判断是否为空,循环,拼接等情况;

    2.动态Sql的标签大致有以下几种
    if 和 where 标签和include标签

    ​ if标签中可以判断传入的值是否符合某种规则,比如是否不为空;

    ​ where标签可以用来做动态拼接查询条件,当和if标签配合的时候,不用显示的声明类似where 1=1这种无用的条件,来达到匹配的时候and会多余的情况;

    ​ include可以把大量重复的代码整理起来,当使用的时候直接include即可,减少重复代码的编写

    <!--动态Sql : where / if-->
    <select id="findUserById"  resultType="com.lagou.pojo.User">
      select <include refid="userInfo"/> from user
      <where>
        <if test="id != null and id != 0">
          AND id = #{id}
        </if>
        <if test="name != null and name != ''">
          AND name = #{name}
        </if>
      </where>
    </select>
    
    choose、when、otherwise 标签

    ​ 类似于 Java 中的 switch、case、default。只有一个条件生效,也就是只执行满足的条件 when,没有满足的条件就执行 otherwise,表示默认条件

    <!--动态Sql: choose、when、otherwise 标签-->
    <select id="findUserById" resultType="com.lagou.pojo.User">
      select * from user
      <where>
        <choose>
          <when test="name != null and name != ''">
            AND name = #{name}
          </when>
          <otherwise>
            AND id = #{id}
          </otherwise>
        </choose>
      </where>
    </select>
    

    foreach 标签

    ​ foreach标签可以把传入的集合对象进行遍历,然后把每一项的内容作为参数传到sql语句中,里面涉及到 item(具体的每一个对象), index(序号), open(开始符), close(结束符), separator(分隔符)

    <!--动态Sql: foreach标签, 批量插入-->
    <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
      insert into user (id, name)
      values
      <foreach collection="list" item="user" separator="," >
        (#{user.id}, #{user.name})
      </foreach>
    </insert>
    
    <!--动态Sql: foreach标签, in查询-->
    <select id="dynamicSqlSelectList" resultType="com.lagou.pojo.User">
      SELECT * from user WHERE id in
      <foreach collection="list" item="id" open="(" close=")" separator="," >
        #{id}
      </foreach>
    </select>
    

    map参数

    ​ < map> 标签需要结合MyBatis的参数注解 @Param()来使用,需要告诉Mybatis配置文件中的collection="map"里的map是一个参数

    <!--动态Sql: foreach标签, map参数查询-->
    <select id="findByMap" resultType="com.lagou.pojo.User">
      select * from user WHERE
      <foreach collection="map" index="key" item="value"  separator="=">
        ${key} = #{value}
      </foreach>
    </select>
    

    set标签

    ​ 适用于更新中,当匹配某个条件后,才会对该字段进行更新操作

    <!--动态Sql: set 标签-->
    <update id="updateSet" parameterType="com.lagou.pojo.User">
      update user
      <set>
        <if test="name != null and name != ''">
          name = #{name},
        </if>
      </set>
      where id = #{id}
    </update>
    
    trim标签

    是一个格式化标签,主要有4个参数:

    prefix(前缀)

    prefixOverrides(去掉第一个标记)

    suffix(后缀)

    suffixOverrides(去掉最后一个标记)

    <!--动态Sql: trim 标签-->
    <select id="findUser" resultType="com.lagou.pojo.User">
      select * from user
      <trim prefix="where" suffix="order by id" prefixOverrides="and | or" suffixOverrides=",">
        <if test="name != null and name != ''">
          AND name = #{name}
        </if>
        <if test="id != null">
          AND id = #{id}
        </if>
      </trim>
    </select>
    
    3.动态sql的执行原理
    • 首先在解析xml配置文件的时候,会有一个SqlSource sqlSource = langDriver.createSqlSource(configuration, context, parameterTypeClass) 的操作
    • createSqlSource底层使用了XMLScriptBuilder来对xml中的标签进行解析
    • XMLScriptBuilder调用了parseScriptNode()的方法,
    • 在parseScriptNode()的方法中有一个parseDynamicTags()方法,会对nodeHandlers里的标签根据不同的handler来处理不同的标签
    • 然后把DynamicContext结果放回SqlSource中
    • DynamicSqlSource获取BoundSql
    • 在Executor执行的时候,调用DynamicSqlSource的解析方法,并返回解析好的BoundSql,和已经排好序,需要替换的参数
      在这里插入图片描述
      在这里插入图片描述

    ​ 简单的说:就是使用OGNL从sql参数对象中计算表达式的值,根据表达式的值动态拼接sql

    展开全文
  • a、Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。b、Mybatis 提 供 了 9 种 动 态 sql 标 签 : trim|where|set|foreach|if|choose|when|...

    a、Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。b、Mybatis 提 供 了 9 种 动 态 sql 标 签 : trim|where|set|foreach|if|choose|when|otherwise|bind。
    c、其执行原理为,使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能。

    展开全文
  • 作用非常大,在很多底层框架中都会用得到,比如struts,Spring等用到了动态代理,它的作用很简单,就是将你要使用的类,重新生成一个子类或本类,这样框架就可以利用这个新生成的类做一些事情,比如在该类的方法...

     

     

    作用非常大,在很多底层框架中都会用得到,比如struts,Spring等都用到了动态代理,它的作用很简单,就是将你要使用的类,重新生成一个子类或本类,这样框架就可以利用这个新生成的类做一些事情,比如在该类的方法前后加一些代码。。
    这样的话,你想像一下,你是不是不用修改任何已经编写好的代码,只要使用代理就可以灵活的加入任何东西,将来不喜欢了,不用也不会影响原来的代码。

    展开全文
  • 静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。你编的是什么它显示的就是什么、不会有...1、静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀...

    静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。你编的是什么它显示的就是什么、不会有任何改变。静态网页相对更新起来比较麻烦,适用于一般更新较少的展示型网站。另外,如果扩展名为.asp但却没有连数据库,完全是静态的页面,那也是静态网站.只是.asp扩展名。

    静态网页
    1、静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”;
    2、网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
    3、静态网页的内容相对稳定,因此容易被搜索引擎检索;
    4、静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
    5、静态网页的交互性较差,在功能方面有较大的限制。
    动态网页
    1、动态网页以数据库技术为基础,可以大大降低网站维护的工作量;
    2、采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;
    3、动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;
    4、态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求

    展开全文
  • Mybatis 动态 SQL ,可以让我们在 XML 映射文件内,以 XML 标签的形 式编写动态 SQL ,完成逻辑判断和动态拼接 SQL 的功能。 Mybatis 提供了 9 种动态 SQL 标签:<if/>、<choose/>、<when/>...
  • 尽管动态IP代理的使用越来越广泛,但还是不少朋友对动态IP代理存疑问,下面就和大家一起来详细介绍一下什么动态IP,以及动态IP代理哪些使用场景。 第一,我们应该知道IP是什么? 简言之,IP是IP协议提供的一...
  • 2、动态IP:由于IP地址资源很宝贵,因此大部分用户上网是使用动态IP地址的,比如通过Modem、ISDN、ADSL、有线宽频、小区宽频等方式上网的计算机,是在每次上网的时候临时分配一个IP地址。 3、静态IP:一般...
  • 动态IP地址(Dynamic IP)指的是在需要的时候才进行IP地址分配的方式。动态IP地址和静态IP地址是对应的。。所谓动态就是指当你每一次上网时,电信会随机... 由于IP地址资源很宝贵,因此大部分用户上网是使用动态I...
  • declare @s varchar(100),@sql varchar(1000) set @s='1,2,3,4,5,6,7,8,9,10' set @sql='select col='''+ replace(@s,',',''' union all select ''')+'''' PRINT @sql exec (@sql) ...declare @s varchar(100),@...
  • 静态连接要将所以的外部调用函数连接到一个目标文件中,动态链接不需要将应用程序所需的外部函数代码从库中取出来并连接到目标文件中。 转载于:https://www.cnblogs.com/luo841997665/p/4662505.html...
  • 动态ip地址有什么优缺点!!!

    千次阅读 2019-08-31 11:04:34
    动态IP地址(Dynamic IP)指的是在需要的时候才进行... 由于IP地址资源很宝贵,因此大部分用户上网是使用动态IP地址的,比如通过Modem、ISDN、ADSL、有线宽频、小区宽频等方式上网的计算机,是在每次上网的时候...
  • 动态IP和静态IP的区别在于:动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是ISP在装机时分配给用户的IP地址,可以直接连接上网,不需要获取IP地址。      静态IP又称为固定IP,是...
  • 都有哪些动态 sql?能简述一下动态 sql 的执行原理不? a、Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。 b、Mybatis 提 供 了 9 种 动 态 sql 标...
  • 动态IP是和静态IP对应的。通俗的讲,动态IP是指网民上网的时候动态分配的IP。每次上网时候使用的IP是不同的。与之相对应的是静态IP,这是上网前就已经确定好的,每次上网的时候使用这个IP。 使用动态IP是为了解决...
  • 代理类和委托类共同的父类或父接口,这样在任何使用委托类对象的地方可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。 代理模式是经典设计...
  • Java如何动态的调用方法,有很多方法参数和名字不一样。有什么比较简单的方式动态调用吗?
  • 二者的区别:静态网页1、静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”;2、网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是...
  • 最近一段时间有遇到小伙伴来咨询BGP的问题,...那时候每个运营商都有自己网络,运营商之间的互联点也比较少,跨网连接的时候都要迂回到连接点,再加上那会儿带宽也不大,就时常导致了拥堵。 很多应用为了应付这种情况
  • Luminati的动态住宅IP可以通过选择具体的地理位置(比如: 国家、城市或移动运营商等)来访问任意网络,而且这个住宅IP是真实用户闲置的IP,也就是说这个IP的所属是确有其人的,​在世界上是独一无二的。...
  • JDK Proxy 和 CGLib 有什么区别? 典型回答 动态代理的常用实现方式是反射。反射机制是指程序在运行期间可以访问、检测和修改其本身状态或行为的一种能力,使用反射我们可以调用任意一个类对象,以及类对象中包含的...
  • 90% 的程序员直接或...JDK Proxy 和 CGLib 有什么区别? 动态代理的常用实现方式是反射。反射机制是指程序在运行期间可以访问、检测和修改其本身状态或行为的一种能力,使用反射我们可以调用任意一个类对象,以...
  • 什么动态IP,以及动态IP代理的使用场景哪些? 什么动态IP? 首先,我们要知道什么是IP?简单来说,IP就是IP协议提供的一种统一的ip地址格式,它为每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,034
精华内容 4,413
关键字:

动态都有什么